0

我用 C# 构建了一个 winforms 应用程序,它嵌入了 Google Earth 作为查看器。像这样。我的应用程序定期接收数据,将其转换为 KML,并在 Google 地球中显示结果。每当我收到新的更新时,我都想删除旧的 KML,但在 GE API 中找不到方法。我发现的只是让旧东西不可见:

        this.ge = new ApplicationGEClass();
        // ....
        string newKml = this.ConvertNewInputToKML();
        this.ge.LoadKmlData(ref newKml);
        FeatureGE oldFeature = this.ge.GetFeatureByName("myOldKmlFeature");
        oldFeature.Visibility = 0;

我想知道从长远来看这是否会导致内存/性能问题。或者有没有办法从谷歌地球 KML 节点中删除?

4

3 回答 3

1

您可以使用具有基于时间的刷新的 NetworkLink 以特定时间间隔替换旧数据。 http://code.google.com/apis/kml/documentation/kmlreference.html#networklink

可能还有其他方法可以从 KML 中指定它。

于 2009-06-22T14:08:20.290 回答
1

您应该能够使用 ge.getFeatures().removeChild(kmlObject); 如果您仍然对旧对象有句柄。

于 2010-11-30T12:38:15.153 回答
0

KML 只不过是 XML。我建议您从 XML 树中删除适当的节点并每隔一段时间重新写入文件。

我还不太了解 KML。每次要更改已渲染的内容时,是否需要重新加载整个文件?

于 2009-06-22T14:15:09.467 回答