1

地域化されたkmlファイルを使用して膨大な数の目印を読み込んでいます。 (約1000kmlのファイルが生成されます)。 たとえば、ボタンをクリックすると、クリックしたカメラがアクセスしたい目印の場所に飛んできます。だから私はこの目印を含むkmlファイルがこのプロセスの後に読み込まれると思います。これが5.kmlで、getElementByUrlメソッドを使用して目印オブジェクトを取得しようとしました。しかし、これはうまくいかなかった。また、ge.getElementsByType( "KmlPlacemark")メソッドを使用することもできますが、必要な目印オブジェクトを取得するにはループが必要です。これは動作しますが、速く動作させる方法を見つけることができませんでした。以下は、私は(領域がアクティブbeomes)KMLからインポートされたオブジェクトにアクセスする方法を発見したい私のコードリージョンベースのネットワークを介してgoogle earth apiで目印にアクセスするリンクされたkmlファイル

google.earth.addEventListener(ge.getView(), 'viewchangeend', function() {     
     // after button click and camera centered on the placemark with id 1767 
     var p = ge.getElementByUrl('http://localhost/Test/5.kml#1767'); 
     alert(p.getId()); // this does not work because p is null 
     var placemarks = ge.getElementsByType('KmlPlacemark'); 
     for (var i = 0; i < placemarks.getLength(); ++i) { 
     var placemark = placemarks.item(i); 
     if(placemark.getId() == 1767) 
     {    
      alert(placemark.getId()); // this works  
      return; 
     } 
    }  
}); 

function button_click() 
{ 
    var camera = ge.getView().copyAsCamera(ge.ALTITUDE_RELATIVE_TO_GROUND); 
    camera.setLatitude(30); 
    camera.setLongitude(50); 
    camera.setAltitude(2000); 
    ge.getView().setAbstractView(camera); 
    } 

です。あなたの答えを待っています。ありがとう。

答えて

1

ネットワークリンクはファイルをDOMに読み込まないため、探している目印はgetElementByUrlにありません。 KMLを取得する必要があります。 This articleは、Google Earth APIでKMLを読み込むさまざまな方法を説明するのに役立ちます。

+0

私の問題は、IISによるファイルアクセスの問題でした。私はそれを修正し、私のコードは期待どおりに動作します。カメラが目印にズームすると、その目印を含むkmlファイルが取得され、目印のスタイルを変更できます。記事では**表示する前に**読み込んだKMLファイルを変更することはできませんが、現時点ではKMLを読み込んで目印を表示した後にスタイルを変更できるようです。ところでいい記事。 –

関連する問題