Получите доступ к меткам KML в наложении Google Maps через Javascript? - PullRequest
3 голосов
/ 17 октября 2008

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 21 октября 2008

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

2 голосов
/ 17 декабря 2008

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

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

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

0 голосов
/ 18 сентября 2009

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

0 голосов
/ 08 января 2009

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

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

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

...