1

我正在使用 Google Earth Web-plugin API,并且我有一个直升机的 3d 模型,我可以使用以下代码创建一个 3d 模型:

var placemark = ge.createPlacemark('');

placemark.setName('模型');

// 地标/模型(几何)

var model = ge.createModel('heli'); placemark.setGeometry(模型);

// 地标/模型/链接

var link = ge.createLink('');

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

模型.setLink(链接);

// 地标/模型/位置

var loc = ge.createLocation('');

loc.setLatLngAlt(temp1,temp2,alt)

模型.setLocation(loc);

model.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);

// 将模型地标添加到地球

ge.getFeatures().appendChild(地标);

所以我一直在创建一个新模型,每次新的经纬度坐标进来,有没有办法简单地将 3d 模型移动到这些坐标而不是创建一个新模型,在大约 50 次渲染后,它变得没有响应!任何帮助,将不胜感激

我假设我需要 getPlacemark 而不是 createPlacemark,但在参考文献中没有提到这样的函数。

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 回答
0

您会在侧边栏中看到您的模型(在重命名之前它称为“无标题”)-右键单击它-复制!然后在侧边栏的同一位置粘贴。现在您看到另一个“无标题”模型 -重命名它

现在去地球上的任何地方,把你的视图放在你想要你的模型的位置(现在,这样做非常接近你的模型)。在 GE 菜单“编辑”中向上 - 按“复制视图位置”

现在,在侧边栏中右键单击您复制的模型 -属性。现在,将上次复制的视图位置从剪贴板粘贴到经度/纬度栏中现在您在不同的位置有两个相同的模型。如果取消选中它,您可以隐藏任何模型,反之亦然。

现在,正如我所看到的,GE 运行不正常(至少我的不正常),因为每次双击模型时它应该带你到那里,但它没有, 解决方案 - 只需从该位置录制一秒钟的电影(您的模型在哪里)并保存它 - 这样会保存游览(您的位置),每次双击保存的游览时,它都会带您到那里。

于 2017-04-20T15:43:20.383 回答