在谷歌地球移动3D模型?

时间:2010-07-28 20:04:27

标签: javascript animation geolocation google-earth-plugin

我正在使用Google Earth网络插件API,我有一架直升机的3D模型,我可以使用以下代码创建一个3D模型:

  

var placemark =   ge.createPlacemark( '');

     

placemark.setName( '模型');

     

//地标/模型(几何)

     

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

     

//地标/模型/链接

     

var link =   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);

     

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

     

ge.getFeatures()的appendChild(标);

因此,每次新的lat长坐标进入时我都在创建一个新模型,有没有办法简单地将3d模型移动到这些坐标而不是创建一个新模型,在大约50次渲染之后,它变得没有响应!任何帮助将不胜感激

我认为我需要使用getPlacemark而不是createPlacemark,但是在引用中没有提到这样的函数。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

您可以在侧栏中看到您的模型(其名为"无标题"直到您重命名) - 右键单击​​它 - 复制!然后在侧栏的同一个地方只需粘贴。现在你看到另一个" Untitled" model - 重命名

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

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

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