0

Google Earth をビューアーとして埋め込む winforms アプリを C# で作成します。このように。私のアプリは定期的にデータを受け取り、それを KML に変換して、結果を Google Earth に表示します。新しいアップデートを受け取るたびに、古い 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;

これにより、長期的にメモリ/パフォーマンスの問題が発生するのではないかと思います。または、Google Earth KML ノードから削除する方法はありますか?

4

3 に答える 3

1

ge.getFeatures().removeChild(kmlObject); を使用できるはずです。古いオブジェクトのハンドルがまだある場合。

于 2010-11-30T12:38:15.153 に答える
1

時間ベースの更新で NetworkLink を使用して、特定の間隔で古いデータを置き換えることができます。 http://code.google.com/apis/kml/documentation/kmlreference.html#networklink

KML 内から指定する方法は他にもあるかもしれません。

于 2009-06-22T14:08:20.290 に答える
0

KML は XML に他なりません。XML ツリーから適切なノードを削除し、時々ファイルに書き直すことをお勧めします。

KML はまだよくわかりません。レンダリングされたものに変更を加えるたびに、ファイル全体を再ロードする必要がありますか?

于 2009-06-22T14:15:09.467 に答える