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