0

GE プラグインでポイントをアニメーション化しようとしています。問題は、基本的なジオメトリを変更するたびに再レンダリングされ、プラグインがフリーズするように見えることです。

var lineString = ge.createLineString(''),
    placemark  = ge.createPlacemark(''),
    coords     = lineString.getCoordinates(),
    features   = ge.getFeatures();

placemark.setGeometry(lineString);
features.appendChild(placemark);

myPoints.forEach(function(point) {
  // google earth re-renders on every one of these calls
  coords.pushLatLngAlt(point.lat, point.lng, 0);
});

// I want something explicit, like this, instead
placemark.redraw();

すべての変更を LineString 座標に適用してから目印で再レンダリング メソッドを呼び出す代わりに、毎回再レンダリングします。

私が最初に思いついたのは、ある種のダブル バッファリングを行うことでした。しかし、大量のポイントを読み込んでいるため、メモリ使用量を 2 倍にする余裕はありません。

これに対する回避策はありますか?

編集:

ジオメトリを削除して編集し、再度追加してみました。目印が点滅しました... :/

placemark.setGeometry(null);

myPoints.forEach(function(point) {
  coords.pushLatLngAlt(point.lat, point.lng, 0);
});

placemark.setGeometry(lineString);

編集:

google.earth.executeBatchを使用して、速度を大幅に向上させることができました

google.earth.executeBatch(ge, function() {
  myPoints.forEach(function(point) {
    coords.pushLatLngAlt(point.lat, point.lng, 0);
  });
});
4

1 に答える 1

2

いくつかのアイデア:

質問を編集して、executeBatch関数が見つかり、それが役に立ったと言っているようです。プラグインがハングするのを確認するには、反復ごとに多くのポイントをプッシュする必要があります。

于 2012-11-07T18:18:01.920 に答える