Карты Google: получить местоположение клика в функции

Я разрешаю пользователю создавать, редактировать и удалять многоугольники на картах Google. Пользователь может решить ввести текст для каждого многоугольника, который должен затем появится в информационном окне при щелчке по многоугольнику. Код ниже показывает, как это возможно. Моя проблема в том, что в настоящее время я не могу определить местоположение события клика - мне нужно это знать, так как именно здесь будет отображаться информационное окно. Я пробовал так много способов получить эту работу.

В приведенном ниже коде tmfPolygonObjects[i][9] содержит текст, который будет отображаться в информационном окне.

Мне как-то нужно зафиксировать событие в функции, но я не могу это решить. Любой совет будет очень кстати...

function tmfAddPolygonInfoWindowListener(myPolygon, i, myPolygonInfoWindow) { 
  tmfPolygon = myPolygon;
  tmfPolygonInfoWindow = myPolygonInfoWindow;
  tmfShowPolygonInfoWindowListener[i] = google.maps.event.addListener(tmfPolygon, 'click', (function(tmfPolygon, i) {
      return function() {
              tmfPolygonInfoWindow.setContent(tmfPolygonObjects[i][9]);

              // this is where I would set the position of the info window IF I could detect the event
              tmfPolygonInfoWindow.setPosition(event.latLng()); 
              tmfPolygonInfoWindow.open(map, tmfPolygon);
          }
      }
  })(tmfPolygon, i));
}

🤔 А знаете ли вы, что...
JavaScript позволяет создавать мобильные приложения для iOS и Android с использованием фреймворков, таких как React Native и NativeScript.


28
1

Ответ:

Мне удалось решить это самостоятельно. Просто нужно добавить «событие» в функцию возврата(). Обновленный код показан ниже.

function tmfAddPolygonInfoWindowListener(myPolygon, i, myPolygonInfoWindow) { 

tmfPolygon = myPolygon;
  tmfPolygonInfoWindow = myPolygonInfoWindow;
  tmfShowPolygonInfoWindowListener[i] = google.maps.event.addListener(tmfPolygon, 'click', (function(tmfPolygon, i) {
      return function(event) {
              tmfPolygonInfoWindow.setContent(tmfPolygonObjects[i][9]);

          // this is where I would set the position of the info window IF I could detect the event
          tmfPolygonInfoWindow.setPosition(event.latLng); 
          tmfPolygonInfoWindow.open(map, tmfPolygon);
      }
  }
  })(tmfPolygon, i));
}