2008-10-17 5 views
3

У меня есть наложение файла KML на встроенную карту Google с использованием объекта GGeoXml. Я хотел бы иметь доступ к определенным меткам в файле KML из Javascript (например, чтобы выделить выделенный полигон на карте в ответ на действие пользователя).Доступ к меткам KML в наложении Google Maps через Javascript?

В идеале я хотел бы сделать что-то вроде этого (псевдо-кода):

geoXml.getPlacemarkByName('Foo').focus(); 

Unforunately Google Maps API, похоже, не подвергать метки или любые другие внутренности наложения KML. У кого-нибудь есть мысли о том, как я могу это сделать? Я ничего не знаю о том, как оверлеи реализованы внутри, но похоже, что может быть взлома, который позволил бы мне это сделать.

Я также использую jQuery FWIW.

ответ

3

Вы посмотрели GeoXML?

+0

Выглядит многообещающе - спасибо за наконечник. Я проверю это. – 2008-10-21 21:01:24

2

Решение этой проблемы не является простым решением, поскольку Google не предоставляет ответ в API. Единственный метод, который я нашел, чтобы получить доступ к отдельным меток - это «захватить» их, когда они добавляются на карту. Для этого вам нужно установить прослушиватель addoverlay на объект карты. Что-то вроде этого:

GEvent.addListener(map, 'addoverlay', function(o) { 
    kmlmarkers.push(o); 
} 

Однако, я не мог понять, как получить идентификатор метки из объекта маркера. Поэтому единственным способом, с помощью которого я смог получить доступ к определенным меток, был цикл по массиву и сопоставление маркеров с моими данными на основе координат. Это не настоящее изящное решение, но это был единственный способ, которым я смог заставить его работать.

0

Вы можете понять это, просто посмотрев на объект следующим образом:

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

Это должно помочь ...

0

Посмотрите на Kml Update. Вам понадобится идентификатор placeark.