Javascript Google Earth Api - 立即更新所有多边形坐标(多尺度?)

时间:2014-07-02 17:01:40

标签: javascript google-earth-plugin

我正致力于在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

此集合同时加载所有几何(正是我想要的),但它似乎只适用于线而不适用于多边形。如果有人知道如何让它适用于多边形,那么非常感谢你听到它!

1 个答案:

答案 0 :(得分:0)

天啊!我终于找到了解决方案!对于多几何的东西,多边形很容易:它基本上与线条完全相同(我可能在第一次出错时)。顺便说一下,这不是解决方案。要做的就是使用executeBatch()函数,它将一次完成所有操作:

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