2011-02-08 11 views
2

Google EarthのブラウザプラグインとAPIを使用してサンプルを作成しています。私はsucessfullyオブジェクトをロードしていますfetchKml方法読み込んだKMLファイル(Google Earthプラグイン)のオブジェクトにアクセスして変更する

function addKmlFromUrl(kmlUrl) { 
    google.earth.fetchKml(ge, kmlUrl, kmlFinishedLoading); 
} 

function kmlFinishedLoading(kmlObject) 
{ 
    if (kmlObject) { 
    ge.getFeatures().appendChild(kmlObject); 
    } 
} 

を使用してKMLファイルをロードしようとしていますが、それがロードされると、私はその場でいくつかのパラメータを変更できるようにしたいです。私はまた、その中のポイントを調べ、いくつかの追加のことをすることができるようにしたい。私はドキュメンテーションとコードサンプルを調べましたが、私はこれを行う方法を見つけることができないようです。

アイデア?

答えて

1

kmlObjectにはXML(またはSGML言語)のようなDOMがあり、DOM内の要素を反復して繰り返し適用する必要があります。不幸にもこれにはAPIの直接的なメソッドはありませんので、あなた自身が料理するか、必要な機能を持ったライブラリを使用する必要があります。

次のようなものが役立ちます。

function addKmlFromUrl(kmlUrl) { 
    google.earth.fetchKml(ge, kmlUrl, kmlFinishedLoading); 
} 

function kmlFinishedLoading(kmlObject) 
{ 
    if (kmlObject) { 
    ge.getFeatures().appendChild(kmlObject); 
    traverseKml(kmlObject); 
    } 
} 

function traverseKml(node) { 
    if(node.getFeatures().hasChildNodes()) { 

    var subNodes = node.getFeatures().getChildNodes(); 
    var length = subNodes.getLength(); 

    for(var i = 0; i < length; i++) { 

     var eachSubNode = subNodes.item(i); 
     var nodeType = eachSubNode.getType(); 

     switch(nodeType) { 
     // kml containers 
     case 'KmlFolder' : 
     case 'KmlDocument' : 
      traverseKml(eachSubNode); 
     break; 
     // do something with all placemarks... 
     case 'KmlPlacemark' : 
      alert(eachSubNode.getName()); 
     break; 
     } 
    } 
    } 
} 
関連する問題