KML 経由で読み込まれた目印をクリックしたときに、ネットワーク リンクを追加しようとしています。私がしていることは、イベント ハンドラーを地球儀にアタッチし、ユーザーが目印をクリックしたかどうかを確認することです。
HTML には、クリックするとネットワーク リンクが Google Earth から削除されるボタンがあります (trackRemoval を参照)。目印が最初にクリックされたときにすべてが機能しているようです。
問題は、(ネットワーク リンクを削除した後) 目印をもう一度クリックすると、createNetworkLink の呼び出しが失敗することです。関連するコードのスニペットが添付されています。
誰かが私が間違っていることを見ることができますか?
var ge = new Array(2);
function clickHandler(event) {
if (event.getTarget().getType() == 'KmlPlacemark') {
event.preventDefault();
var placemark = event.getTarget();
var device = placemark.getName();
var networkLink = ge[0].createNetworkLink(device + "link");
var link = ge[0].createLink("");
networkLink.setDescription("Vechicle view for" + device);
networkLink.setName("Track for " + device);
networkLink.setFlyToView(true);
link.setHref("http://x.x.x.x/blah/blah.kml");
link.setRefreshMode(ge[0].REFRESH_ON_INTERVAL);
link.setRefreshInterval(60);
networkLink.setLink(link);
ge[0].getGlobe().getFeatures().appendChild(networkLink);
}
}
function initgeaor(instance) {
google.earth.addEventListener(instance.getGlobe(), 'click', clickHandler);
}
function trackRemoval() {
var device = this.name;
var networklink = ge[0].getElementById(device + "link");
ge[0].getGlobe().getFeatures().removeChild(networklink);
}