Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在谷歌地球上移动三维模型?_Javascript_Animation_Geolocation_Google Earth Plugin - Fatal编程技术网

Javascript 在谷歌地球上移动三维模型?

Javascript 在谷歌地球上移动三维模型?,javascript,animation,geolocation,google-earth-plugin,Javascript,Animation,Geolocation,Google Earth Plugin,我正在使用Google Earth Web插件API,我有一个直升机的3d模型,我可以使用以下代码创建3d模型: var placemark= ge.createPlacemark(“”) placemark.setName('model') //位置标记/模型(几何图形) 变量 model=ge.createModel('heli'); placemark.setGeometry(模型) //地点标记/模型/链接 var链路= ge.createLink(“”) link.setHref(“”

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

var placemark= ge.createPlacemark(“”)

placemark.setName('model')

//位置标记/模型(几何图形)

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

//地点标记/模型/链接

var链路= ge.createLink(“”)

link.setHref(“”)

model.setLink(link)

//地点标记/型号/位置

var loc= ge.createLocation(“”)

位置setLatLngAlt(临时1、临时2、备选)

模型设置位置(loc)

型号:setAltitudeMode(相对于地面的通用高度)

//将模型放置标记添加到地面

ge.getFeatures().appendChild(placemark)

所以我一直在创建一个新的模型,每次新的lat-long坐标出现时,有没有一种方法可以简单地将3d模型移动到这些坐标,而不是创建一个新的模型,在大约50次渲染后,它会变得无响应!任何帮助都将不胜感激


我假设我需要获取placemark,而不是createPlacemark,但是在引用中没有提到这样的函数。

而不是每次都重新创建placemark,只需更新其坐标即可。您可以很容易地使用函数来实现这一点。然后,您可以在每次希望更新模型位置时使用所需的坐标调用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);
}

您可以在侧栏中看到您的模型(重命名前称为“未命名”)—右键单击它—复制!然后在侧栏的同一位置粘贴。现在,您将看到另一个“未命名”模型-重命名它

现在,到地球上的任何地方,将您的视图居中放置在您希望模型所在的位置(现在,请靠近您的模型进行此操作)。在GE菜单“编辑”中向上-按“复制视图位置”

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

现在,正如我所看到的,GE没有正常工作(至少我的没有),因为每次你双击模型时,它应该会带你去那里,但它没有,解决方案-只需从该位置(你的模型所在的位置)录制第二部电影,然后保存它-通过这种方式巡演(你的位置)已保存,每次双击已保存的巡更时,它都会将您带到那里