1

Google Earth Web プラグイン API を使用していて、ヘリコプターの 3D モデルを持っています。次のコードを使用して 3D モデルを作成できます。

var placemark = ge.createPlacemark('');

placemark.setName('モデル');

// 目印/モデル (ジオメトリ)

var モデル = ge.createModel('ヘリ'); placemark.setGeometry(モデル);

// 目印/モデル/リンク

var リンク = ge.createLink('');

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

model.setLink(リンク);

// 目印/モデル/場所

var loc = ge.createLocation('');

loc.setLatLngAlt(temp1,temp2,alt)

model.setLocation(loc);

model.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);

// モデルの目印を Earth に追加します

ge.getFeatures().appendChild(目印);

そのため、新しい緯度経度座標が入るたびに新しいモデルを作成しています。新しいモデルを作成する代わりに、3D モデルをこれらの座標に移動するだけの方法はありますか?約 50 回のレンダリングの後、応答しなくなります! どんな助けでもいただければ幸いです

createPlacemark の代わりに getPlacemark が必要だと思いますが、リファレンスにはそのような関数についての言及はありません。

4

2 に答える 2

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);
}
于 2010-09-05T16:20:52.840 に答える