1
我有一大堆使用區域化kml文件加載的地標。 (生成大約1000公里的文件)。 例如,我有一個按鈕,當點擊相機飛到我想訪問的地標的位置。所以我認爲包含這個地標的kml文件在這個過程之後被加載。假設這是5.kml,我嘗試使用getElementByUrl方法獲取地標對象。但是這不起作用。我也可以使用ge.getElementsByType(「KmlPlacemark」)方法,但我需要一個循環來獲取我需要的地標對象。這工作,但我找不到一種方法,使其工作速度快。下面是我的代碼通過基於區域的網絡訪問谷歌地球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);
}
我想我找到了一種方法來訪問這是從KML導入的對象(時區beomes有效)。等待你的答案。謝謝。
我的問題是通過IIS的文件訪問問題,我猜。我修復了它,並且我的代碼正常工作。相機將縮放到地標,以便檢索包含該地標的kml文件,然後我可以修改我的地標的樣式。在文章中,它說你不能在**顯示之前修改加載的KML文件**,但目前看來,我可以在加載KML並顯示地標後更改樣式。順便說一句好的文章。 – 2012-01-10 21:27:51