我正致力于在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
此集合同时加载所有几何(正是我想要的),但它似乎只适用于线而不适用于多边形。如果有人知道如何让它适用于多边形,那么非常感谢你听到它!
答案 0 :(得分:0)
天啊!我终于找到了解决方案!对于多几何的东西,多边形很容易:它基本上与线条完全相同(我可能在第一次出错时)。顺便说一下,这不是解决方案。要做的就是使用executeBatch()函数,它将一次完成所有操作:
google.earth.executeBatch(ge, function(){
for(i = 0; i < lati.length; i++){
outer.getCoordinates().pushLatLngAlt(lati[i], longi[i], alti[i]);
}
});