我正在尝试为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坐标,然后在地标上调用重新渲染方法,而是每次都重新渲染。
我的第一个想法是做一些双缓冲。但是我加载了大量的积分,我无法承受双倍的内存使用量。
有没有解决这个问题?
修改
我尝试删除几何体,编辑它,然后再添加它。地标刚刚闪现......:/
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);
});
});
答案 0 :(得分:2)
一些想法:
fetchKml
callback。我看到你编辑了你的问题,说你找到了executeBatch函数,这有帮助。你必须在每次迭代过程中推动很多点才能看到插件挂起。