Доступ к меткам KML в оверлее Google Maps через Javascript?

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

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

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

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

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


person Herb Caudill    schedule 17.10.2008    source источник


Ответы (4)


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

person Thedric Walker    schedule 20.10.2008

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

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

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

person Community    schedule 17.12.2008

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

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

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

person Community    schedule 07.01.2009

Посмотрите обновление Kml. Вам понадобится идентификатор Placeark.

person Community    schedule 18.09.2009