我正在使用 google earth 浏览器插件和 API 创建一个示例。我正在尝试使用 fetchKml 方法加载 kml 文件
function addKmlFromUrl(kmlUrl) {
google.earth.fetchKml(ge, kmlUrl, kmlFinishedLoading);
}
function kmlFinishedLoading(kmlObject)
{
if (kmlObject) {
ge.getFeatures().appendChild(kmlObject);
}
}
我正在成功加载该对象,但是一旦它被加载,我希望能够即时更改一些参数。我还希望能够通过其中的点来解析并做一些额外的事情。我查看了文档和代码示例,但似乎找不到执行此操作的方法。
有什么想法吗?
最佳答案
kmlObject 有一个 DOM,就像 XML(或任何 SGML 语言)一样,您需要递归地遍历 DOM 中的元素,然后更改适用于您的元素。不幸的是,api 中没有直接方法,因此您需要自己做饭或使用具有所需功能的库。
类似下面的内容可能对您有用。
function addKmlFromUrl(kmlUrl) {
google.earth.fetchKml(ge, kmlUrl, kmlFinishedLoading);
}
function kmlFinishedLoading(kmlObject)
{
if (kmlObject) {
ge.getFeatures().appendChild(kmlObject);
traverseKml(kmlObject);
}
}
function traverseKml(node) {
if(node.getFeatures().hasChildNodes()) {
var subNodes = node.getFeatures().getChildNodes();
var length = subNodes.getLength();
for(var i = 0; i < length; i++) {
var eachSubNode = subNodes.item(i);
var nodeType = eachSubNode.getType();
switch(nodeType) {
// kml containers
case 'KmlFolder' :
case 'KmlDocument' :
traverseKml(eachSubNode);
break;
// do something with all placemarks...
case 'KmlPlacemark' :
alert(eachSubNode.getName());
break;
}
}
}
}
关于javascript - 访问和更改加载的 KML 文件中的对象(谷歌地球插件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4937739/