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有效)。等待你的答案。謝謝。

回答

1

NetworkLink不會將文件加載到DOM中,這就是爲什麼getElementByUrl找不到您要查找的地標。您需要獲取KML。 This article應該有助於解釋在Google地球API中加載KML的不同方式。

+0

我的問題是通過IIS的文件訪問問題,我猜。我修復了它,並且我的代碼正常工作。相機將縮放到地標,以便檢索包含該地標的kml文件,然後我可以修改我的地標的樣式。在文章中,它說你不能在**顯示之前修改加載的KML文件**,但目前看來,我可以在加載KML並顯示地標後更改樣式。順便說一句好的文章。 – 2012-01-10 21:27:51