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

#javascript #google-maps

#javascript #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));
}
  

Ответ №1:

Мне удалось решить это самостоятельно. Просто нужно было добавить ‘event’ в return function(). Обновленный код показан ниже.

 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));
}