如何在Google地球中创建自定义图层,以便我可以设置它的可见性

时间:2012-06-03 07:53:37

标签: google-earth-plugin

我试图在google earth插件中渲染一大堆矢量。我使用parseKml方法创建我的Kml Feature对象并将其存储在一个数组中。代码如下所示。我循环遍历从数据库返回的10,000 kml对象的列表,并在插件中绘制它。

// 'currentKml' is a kml string returned from my DB. 
// I iterate over 10,000 of these
currentKmlObject = ge.parseKml(currentKml);
currentKmlObject.setStyleSelector(gex.dom.buildStyle({
    line: { width: 8, color: '7fff0000' }
}));
ge.getFeatures().appendChild(currentKmlObject);
// After this, I store teh currentKml object in an array so 
// I can manipulate the individual features.

这似乎工作正常。但是,当我想立即打开或关闭所有这些功能的可见性时,我必须迭代我的阵列中的所有这些kml对象并设置其开启或关闭的个人可见性。这有点慢。如果我缩小了,我可以慢慢看到每条线都消失了,大约需要5-10秒才能消失或回来。

我想知道是否可以通过添加图层并将所有对象添加为此图层的子对象来加快此过程。这样我就可以打开或关闭整个图层的可见性。

我一直无法找到如何在代码中创建新图层。如果有人可以指出适当的方法,那就太好了。我不确定层是否是加速该过程的正确方法。如果您还有关于如何加快在地图中打开/关闭所有这些对象的过程的任何其他建议,那么这也是非常有用的。

先谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

好的,找到了我自己如何做到这一点。

在google earth扩展库中,我使用'buildFolder'方法。

var folder = gex.dom.buildFolder({ name: folderName });
ge.getFeatures().appendChild(folder);

现在,当我遍历我的对象数组时,我将它们添加到文件夹中,而不是使用以下

folder.getFeatures().appendChild(currentKmlObject);

这样,稍后我可以使用

打开和关闭文件夹级别的可见性
folder.setVisibility(false); // or true

这也很有效。没有延迟,我可以看到所有物体立刻打开和关闭。它非常快速且高效。