0

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

1 に答える 1

1

https://developers.google.com/earth/documentation/reference/interface_kml_objectを参照してください

メソッドの注を参照してくださいrelease()。私の経験から、この「不確定な時間」を測定するのは困難です。そのため、GE からオブジェクトを削除してから、同じ ID を持つ別のオブジェクトを追加しようとすると、GE は不平を言い、その「不確定な時間」が経過しない限り、オブジェクトを作成しません。

あなたremoveChild()release()ネットワークがリンクした後、タイマーを使用できる場合があります。

新しい KmlNetworkLink に、作成するたびに異なる ID を付けて、衝突がないようにすることもできます。これがあなたにとっての選択肢かどうかはわかりません。var networkLink = ge[0].createNetworkLink(device + "link" + idNumber);

于 2013-06-19T16:56:36.320 に答える