Google地球插件渴望重新渲染

时间:2012-11-07 17:22:02

标签: javascript google-earth-plugin

我正在尝试为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);
  });
});

1 个答案:

答案 0 :(得分:2)

一些想法:

我看到你编辑了你的问题,说你找到了executeBatch函数,这有帮助。你必须在每次迭代过程中推动很多点才能看到插件挂起。