Javascript谷歌地球Api -更新所有多边形坐标立即(多几何?)

Javascript Google Earth Api - update all polygons coordinates instantly (multigeometry?)

本文关键字:坐标 Api 谷歌地球 更新 多边形 Javascript      更新时间:2023-09-26

我正在Google Earth Api上创建3D形状。我想让它们移动和旋转,所以我写了一个脚本来创建多边形,然后更新它们的坐标。结果并不是很好,因为我的3D多边形的所有面都在一个接一个地缓慢更新。你可以在这里看到它的作用(你必须等待5秒的更新):

http://jsfiddle.net/pmrotule/64y5Q/

function createPolygon(id, lati, longi, alti){
if(!gePoly[id]['placemarks'][polyCount]){
var newPoly = true;
gePoly[id]['placemarks'][polyCount] = ge.createPlacemark('');
gePoly[id]['polygons'][polyCount] = ge.createPolygon('');
gePoly[id]['polygons'][polyCount].setAltitudeMode(ge.ALTITUDE_ABSOLUTE);
gePoly[id]['placemarks'][polyCount].setGeometry(gePoly[id]['polygons'][polyCount]);
var outer = ge.createLinearRing('');
}
    for(i = 0; i < lati.length; i++){
      if(newPoly)
      outer.getCoordinates().pushLatLngAlt(lati[i], longi[i], alti[i]);
      else{
      var gOuter = gePoly[id]['placemarks'][polyCount].getGeometry().getOuterBoundary();
      gOuter.getCoordinates().setLatLngAlt(i, lati[i], longi[i], alti[i]);
      }
    }
    if(newPoly) gePoly[id]['polygons'][polyCount].setOuterBoundary(outer);
ge.getFeatures().appendChild(gePoly[id]['placemarks'][polyCount]);
polyCount++;
}

所以,我正在寻找一种方法来更新所有多边形坐标瞬间。我发现了一个奇怪的现象:如果在更新加载过程中你缩放或平移地图,它会立即做到这一点……它证明了有解,对吧?

我找到了关于Multigeometries的信息,这是一个几何集合:https://developers.google.com/earth/documentation/geometries multigeometry .

这个集合加载所有几何图形在同一时间(正是我想要的),但它似乎只适用于线,而不是多边形。如果有人知道如何使它为多边形工作,我将非常感激听到你的声音!

天哪!我终于找到解决办法了!对于Multigeometry,对于多边形来说非常简单:它基本上和线条是一样的(我可能第一次犯了一个错误)。顺便说一下,这不是解决方案。方法是使用executeBatch()函数,它将一次完成所有操作:

google.earth.executeBatch(ge, function(){
  for(i = 0; i < lati.length; i++){
    outer.getCoordinates().pushLatLngAlt(lati[i], longi[i], alti[i]);
  }
});