2012-12-02 57 views
1
KML元素

也許有人有想法,爲什麼功能getObjectById(ID)不會在谷歌地球上工作?我已經將kml提取到DOM,但是我嘗試使用id找到元素,但它不返回任何內容。編輯獲取由ID

我在玩在谷歌地球API操場,也許它不支持額外的lybrary?

這裏是我的代碼:

<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」);不工作...

回答

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

See this page for details

+0

我根據這個做:訪問谷歌地球DOM(https://developers.google.com/earth/articles/domtraversal) – sauletasmiestas

+0

你正確加載gex?即在你的init(實例)函數中,你是先加載ge,然後是gex,例如:ge = instance; gex = new GEarthExtensions(ge); – lifeIsGood

+0

爲什麼不使用我在回答中提到的功能 - 它們被默認插件,因此無需加載擴展支持(除非你在其他地方使用它們) – lifeIsGood