我使用区域化的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导入的对象(当区域beomes处于活动状态时)。等待你的答案。感谢。
答案 0 :(得分:1)
NetworkLink不会将文件加载到DOM中,这就是为什么getElementByUrl
找不到您正在寻找的地标的原因。您需要获取KML。 This article应该有助于解释在Google Earth API中加载KML的不同方法。