1

関数 getObjectById(id) が Google Earth で機能しない理由を誰かが考えているのではないでしょうか? kml を DOM にフェッチしましたが、ID を持つ要素を見つけようとしましたが、何も返されません。

Google Earth API Playground でプレイしていますが、余分なライブラリがサポートされていないのでしょうか?

これが私のコードです:

<script src="http://www.google.com/jsapi?key=ABQIAAAAuPsJpk3MBtDpJ4G8cqBnjRRaGTYH6UMl8mADNa0YKuWNNa8VNxQCzVBXTx2DYyXGsTOxpWhvIG7Djw" type="text/javascript"></script>
    <script src="http://earth-api-utility-library.googlecode.com/svn/tags/extensions-0.2.1/dist/extensions.pack.js" type="text/javascript"></script>
    <script type="text/javascript">

................


// fetch the KML
      var url = 'http://kml-samples.googlecode.com/svn/trunk/kml/NetworkLink/placemark.kml';
      google.earth.fetchKml(ge, url, finished);
    }

    function failureCallback(errorCode) {
    }

    function getObjectById(id) {
    var foundObject = null;

    // Traverse the DOM, looking for the object with the given ID.
    gex.dom.walk({
    rootObject: ge,
    visitCallback: function() {
      if ('getId' in this && this.getId() == id) {
        foundObject = this;
        return false;  // Stop the walk.
         }
       }
      });

      return foundObject;
    }

    function buttonClick() {
      getObjectById("p");
      alert("Found:" +foundObject);
    }  

KML が読み込まれ、ボタンが機能しますが、getObjectById("p"); のように見えます。動作しません...

4

1 に答える 1

1

まず、 はないと思います。ほとんどの場合、またはのいずれかgetObjectById()を使用する必要があります。getElementByUrl()getElementById()

fetchKml を使用しているので、次のgetElementByUrl()ように使用する必要があると思います。

var url = 'http://kml-samples.googlecode.com/svn/trunk/kml/NetworkLink/placemark.kml';
var object = ge.getElementByUrl(url + '#' + id);

詳細はこちらのページをご覧ください

于 2012-12-02T20:45:55.763 に答える