Я работаю над проектом в интрасети, поэтому мои файлы KML недоступны извне. Это означает, что я завишу от библиотеки geoXML3 для анализа моего XML на моей карте Google. Однако отсутствие документации по слушателям событий расстраивает. Я хочу вызвать прослушиватель кликов и передать метку geoXML3. Я пытаюсь сделать следующее, однако clickListener
всегда получает последний полигон, обработанный в цикле afterParse
, как p
.
kml = new geoXML3.parser({
suppressInfoWindows: true,
map: map,
afterParse: function (doc) {
for (var i = 0; i < doc[0].placemarks.length; i++) {
var p = doc[0].placemarks[i];
google.maps.event.addListener(
p.polygon,
"click",
function () { clickListener(p); }
);
}
}
});
kml.parse(mapSettings.kmlLocation);
Если бы я использовал поддержку KML в Google Maps API, я мог бы сделать это и передать многоугольник слушателю.
kml = new google.maps.KmlLayer(mapSettings.kmlLocation, {
suppressInfoWindows: true,
preserveViewport: false,
map: map
});
google.maps.event.addListener(
kml,
"click",
clickListener
};
Есть ли способ (более предпочтительно) надежно передать правильную метку geoXML3 в clickListener
или (менее предпочтительно) свойство в geoXML3.parser
, к которому я могу привязать событие клика и получить kmlMouseEvent
так, как я бы использовал Google Maps API кмл парсер? В конечном итоге мне нужно иметь возможность изменить стиль многоугольника и отслеживать, что в массиве он был выбран/отменен.