Событие Нажмите Kml Метка

Я создал метку в kml с именем и идентификатором = 'campania'

Я загрузил его, используя метод google.earth.fetchKml(ge, href, function())

и я вижу метку на карте я хотел бы добавить метки можно нажать, я нашел этот метод, чтобы получить идентификатор метки placemark=ge.getElementByUrl('http://web.uniparthenope.it/~0124000489/tw-2013/place.kml#campania');

Чтобы сделать его кликабельным, используйте метод

google.earth.addEventListener(placemark, 'click',playTour);

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

"Uncaught TypeError: Cannot call method 'getEventHandlersId' of null

Вы можете помочь? Может кмл нельзя сделать? Мне нужно создать метку с помощью Google API, чтобы сделать их кликабельными? Спасибо


person user2462353    schedule 08.06.2013    source источник


Ответы (1)


Ваша переменная placemark имеет значение null, когда вы пытаетесь добавить обработчик событий.

Если предположить, что в строке указан неправильный URL или идентификатор

var placemark = ge.getElementByUrl('http://web.uniparthenope.it/~0124000489/tw-2013/place.kml#campania');

или же вы вызываете его до того, как kml dom фактически загрузится, и поэтому метка не может быть найдена.

Чтобы исправить это, попробуйте вызвать метод доступа к метке и добавить прослушиватель событий из обратного вызова события для операции fetchKml.

Что-то вроде того.

var href = 'http://web.uniparthenope.it/~0124000489/tw-2013/place.kml'
google.earth.fetchKml(ge, href, fetchKmlCallback);

function fetchKmlCallback(kml) {
  if(kml) {
     ge.getFeatures().appendChild(kml);
     var placemark = ge.getElementByUrl(href + '#campania');
     google.earth.addEventListener(placemark, 'click', playTour);
  }
}

function playTour() { /* handle playing here */ }

Глядя на KML в предоставленной вами ссылке, кажется, что <gx:Tour> не определен или не связан с ним. Так что невозможно сказать, как вы должны относиться к игровой роли. Похоже, вы хотите загрузить сложный тур (то есть в документе KML будет больше, чем одна <gx:Tour> функция), поэтому, возможно, будет лучше прочитать туристическая документация по API ясно показывает, как со всем этим справиться.

person Fraser    schedule 09.06.2013
comment
‹код›функция завершена(объект) { если (объект) { ge.getFeatures().appendChild(объект); } метка = ge.getElementByUrl(url + '#campania'); google.earth.addEventListener(метка, 'щелчок', playTour); }​‹/code› Спасибо за ответ, попробовал этот способ но он не работает, при нажатии на метку мне открывается название метки и не начинается тур - person user2462353; 09.06.2013
comment
Ваш вопрос был о том, чтобы сделать загруженную метку кликабельной, а Uncaught TypeError — не о воспроизведении туров. Так что значит не работает? Что вы ожидали от него? Чтобы сыграть в тур, вам нужно будет добавить код, чтобы сделать это! см.: developers.google.com/earth/documentation/touring. - person Fraser; 10.06.2013