0

私はグーグルアースプラグインでベクトルのヒープ全体をレンダリングしようとしています。parseKmlメソッドを使用してKmlFeatureオブジェクトを作成し、配列に保存します。コードは次のようになります。データベースから返された10,000kmlのオブジェクトのリストをループして、プラグインに描画します。

// '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

そして、これも非常にうまく機能します。I遅延はありません。すべてのオブジェクトが一度にオン/オフするのを見ることができます。それは非常に迅速でパフォーマンスが高いです。

于 2012-06-04T01:40:50.940 に答える