0

我正在尝试在谷歌地球插件中渲染一大堆向量。我使用 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 秒才能全部消失或恢复。

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

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

提前感谢您的帮助。

4

1 回答 1

0

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

在谷歌地球扩展库中,我使用“buildFolder”方法。

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

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

folder.getFeatures().appendChild(currentKmlObject);

这样,稍后我可以使用在文件夹级别打开和关闭可见性

folder.setVisibility(false); // or true

这也很有效。我没有延迟,我可以看到所有对象同时打开和关闭。它非常快速且高效。

于 2012-06-04T01:40:50.940 回答