2014-07-02 79 views
0

我正在Google Earth Api上創建3D形狀。我想讓它們移動並旋轉,所以我寫了一個腳本來創建多邊形,然後更新它們的座標。結果並不是很好,因爲我的3D多邊形的所有面都依次緩慢更新。你可以看到它在這裏的行動(你必須等待更新5秒):Javascript谷歌地球Api - 立即更新所有多邊形座標(多幾何?)

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++; 
} 

所以,我正在尋找一種方式來更新所有多邊形座標瞬間。我做了一個奇怪的觀察:如果在更新加載期間縮放或平移地圖,它會立即執行......它證明有一個解決方案,對吧?

我發現有關幾何體集合的多幾何體的信息: https://developers.google.com/earth/documentation/geometries#multigeometry

此集合同時加載所有幾何(正是我想要的),但它似乎只適用於線而不適用於多邊形。如果有人知道如何使它適用於多邊形,那麼從您那裏聽到它將非常感激!

回答

0

天啊!我終於找到了解決方案!對於Multigeometry而言,對於多邊形來說很容易:它基本上與線條完全相同(我可能在第一次的某個地方犯了錯誤)。順便說一下,這不是解決方案。要走的路是使用executeBatch()函數,它將一舉完成:

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