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);
});
});