Javascript 事件单击Kml Placemark

Javascript 事件单击Kml Placemark,javascript,kml,google-earth-plugin,Javascript,Kml,Google Earth Plugin,我在kml中创建了一个名称和ID为“campania”的placemark 我使用方法google.earth.fetchKml(ge,href,function())上传了它。 我在地图上看到一个地标 我想添加可以点击的placemarks,我发现这个方法可以获取placemark的ID placemark=ge.getElementByUrl(“”) 使用此方法使其可单击 google.earth.addEventListener(placemark,'click',playTour) 它不

我在kml中创建了一个名称和ID为“campania”的placemark

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

我在地图上看到一个地标 我想添加可以点击的placemarks,我发现这个方法可以获取placemark的ID
placemark=ge.getElementByUrl(“”)

使用此方法使其可单击

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

它不工作,使我出现了一个演讲泡泡的地名时,它应该开始旅游 给了我这个错误

“未捕获的TypeError:无法调用null的方法'getEventHandlersId'

你能帮忙吗?也许kml你做不到?我必须用谷歌API创建placemark,使它们可以点击?
谢谢

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

据猜测,该行中的url或id是错误的

var placemark = ge.getElementByUrl('http://web.uniparthenope.it/~0124000489/tw-2013/place.kml#campania');
或者在KMLDOM实际加载之前调用它,因此无法找到placemark

要修复此问题,请尝试调用placemark访问器并从事件回调中为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,似乎没有定义或链接到
。因此,无法说明您应该如何处理播放部分。听起来您想加载一个复杂的巡演(即KML文档中的内容将不仅仅是单个
功能)因此,也许最好通读一下这个函数,它清楚地显示了如何处理所有这些问题。

函数完成(object){if(object){ge.getFeatures().appendChild(object);}placemark=ge.getElementByUrl(url+“#campania”);google.earth.addEventListener(placemark,'click',playTour)}​谢谢你的回复,我尝试过这种方法,但它不起作用,当我点击placemark时,我输入了placemark的名称,并且没有开始旅行。你的问题是让加载的placemark可点击,而
未点击的TypeError
-不是玩旅行。那么,你说它不起作用是什么意思?你期望它做什么?去播放巡演您需要添加代码才能执行此操作!请参阅: