2010-07-28 54 views
1

我使用谷歌地球網絡插件API和我有一個直升飛機的3D模型,我可以使用下面的代碼創建一個3D模型:在谷歌地球中移動3D模型?

VAR標= ge.createPlacemark( '');

placemark.setName('model');

//標/模型(幾何形狀)

VAR 模型= ge.createModel( '合力'); placemark.setGeometry(model);

//標/模型/鏈接

變種鏈路= ge.createLink( '');

link.setHref('http://my.url/heli.dae');

model.setLink(link);

//標/型號/位置

變種LOC = ge.createLocation( '');

loc.setLatLngAlt(temp1中,TEMP2,ALT)

model.setLocation(LOC);

model.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);

//添加模型標地球

ge.getFeatures()的appendChild(地標)。

所以我一直在創造一種新的模式,每次新的經緯度座標等進來,有沒有辦法簡單地移動,而不是創建一個新的3D模型,以這些座標,約50渲染之後,就變成反應遲鈍!任何幫助,將不勝感激

我假設,而不是createPlacemark我需要getPlacemark,但沒有提到這樣的函數在引用。

回答

3

而不是每次重新創建地標 - 只需更新其座標。你可以很容易地使用一個函數來做到這一點。您可以隨時在每次希望更新模型位置時使用所需的座標調用moveModel函數。

var placemark = ge.createPlacemark(''); 
var model = ge.createModel('heli'); 
var link = ge.createLink(''); 

placemark.setName('model'); 
placemark.setGeometry(model); 
link.setHref('http://my.url/heli.dae'); 
model.setLink(link); 

moveModel(temp1, temp2, alt); // your location... 

ge.getFeatures().appendChild(placemark); 

function moveModel(temp1, temp2, alt) { 
    var loc = ge.createLocation(''); 
    loc.setLatLngAlt(temp1,temp2,alt) 
    model.setLocation(loc); 
    model.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND); 
} 
0

你看你的模型在側欄(其所謂的「無題」,直到將其重命名) - 右鍵點擊它 - 複製!然後在側杆的相同位置粘貼。現在您看到另一個「無標題」模型 - 將其重命名爲

現在轉到地球上的任何地方,並將您的視圖集中在想要模型的位置(現在,請儘量靠近您的模型)。Up在GE菜單「編輯」 - 按「複製視圖位置」

現在,去右鍵單擊在側欄中複製的模型 - 性能。現在,粘貼上次從剪貼板複製的經度/緯度欄中的查看位置。 現在,您在不同位置有兩個相同的型號。你可以隱藏任何模型,如果你取消選中它,反之亦然。現在

,我所看到的,GE無法正常工作權(至少我的犯規),因爲每次雙擊該模型應該把你在那裏,但它不,解決方案 - 只是記錄第二從該位置(您的模型所在的位置)觀看電影並保存 - 這種方式巡視(您的位置)將被保存,每次雙擊已保存的巡視時,它都會將您帶到那裏。