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