2

我在 kml 中创建了一个地标,其名称和 ID = 'campania'

我用方法上传了google.earth.fetchKml(ge, href, function())

我在地图上看到一个地标我想添加地标可以点击,我找到了这个方法来获取地标的ID 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

你能帮我吗?也许你不能做kml?我必须使用谷歌 API 创建地标以使其可点击?谢谢

4

1 回答 1

1

placemark当您尝试添加事件处理程序时,您的变量为空。

猜测该行中的 url 或 id 错误

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 的游览文档,它清楚地显示了如何处理所有这些.

于 2013-06-09T09:32:06.083 回答