У меня есть наложение файла KML на встроенную карту Google с помощью объекта GGeoXml. Я хотел бы иметь доступ к определенным меткам в файле KML из Javascript (например, для выделения выбранного многоугольника на карте в ответ на действие пользователя).
В идеале я хотел бы сделать что-то вроде этого (псевдокод):
geoXml.getPlacemarkByName('Foo').focus();
К сожалению, Google Maps API, похоже, не раскрывает метки или какие-либо другие внутренние элементы наложения KML. Есть ли у кого-нибудь мысли о том, как я могу это сделать? Я ничего не знаю о внутренней реализации оверлеев, но похоже, что есть хак, который позволил бы мне это сделать.
Я также использую jQuery FWIW.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы смотрели GeoXML?
Кажется, что нет простого решения этой проблемы, поскольку Google не предоставляет ответ в API. Я нашел единственный способ получить доступ к отдельным меткам - это «захватывать» их, когда они добавляются на карту. Для этого вы должны установить прослушиватель addoverlay для объекта карты. Что-то вроде этого:
GEvent.addListener(map, 'addoverlay', function(o) {
kmlmarkers.push(o);
}
Однако я не мог придумать способ получить идентификатор метки из объекта-маркера. Поэтому единственный способ получить доступ к определенным меткам - это пройти через массив и сопоставить маркеры с моими данными на основе координат. Это не настоящее элегантное решение, но это единственный способ заставить его работать.
Вы можете понять это, просто взглянув на объект следующим образом:
GEvent.addListener(map, 'addoverlay', function(obj)
{ if (!obj) {
alert("Cannot describe a null object");
return;
}
var str = "";
for ( var prop in obj) {
str += prop + " = " + obj[prop] + ",\n";
}
alert(str);
});
Это должно помочь ...
Посмотрите на Kml Update. Вам понадобится ID парковки.