1

我有大量使用区域化 kml 文件加载的地标。(生成了大约 1000 个 kml 文件)。例如,我有一个按钮,当点击相机飞到我要访问的地标位置时。所以我认为包含这个地标的 kml 文件是在这个过程之后加载的。假设这是 5.kml,我尝试使用 getElementByUrl 方法获取地标对象。但这没有用。我也可以使用 ge.getElementsByType("KmlPlacemark") 方法,但我需要有一个循环来获取我需要的地标对象。这行得通,但我找不到让它快速工作的方法。下面是我的代码

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 导入的对象(当区域变得活跃时)。等待您的答复。谢谢。

4

1 回答 1

1

NetworkLink 不会将文件加载到 DOM 中,这就是为什么getElementByUrl找不到您要查找的 Placemark 的原因。您需要获取 KML。本文应该有助于解释在 Google 地球 API 中加载 KML 的不同方法。

于 2012-01-09T19:37:06.490 回答