0

在 Google Earth(网络浏览器插件,GE API)中,我通过更改坐标将相机从 A 点移动到 B 点。它有效,但通用电气似乎总是在途中跳高。

示例(使用 ge.ALTITUDE_ABSOLUTE 设置)

Point A:  camera.setLatitude(50.1);camera.setLongitude(14.1);camera.setAltitude(1000.0); 
Point B:  camera.setLatitude(51.1);camera.setLongitude(15.1);camera.setAltitude(1000.0); 

(注意两个点的高度相同 1000 m)。

位置更改工作正常,但途中 GE 会使用 Eye Alt 缩小。上升到 72 km,然后再次回到所需的 1000.0 m(从状态行读取的值,flyTo 速度设置为非常慢)。

有没有办法抑制这种跳高,保持在一个固定的高度?到目前为止,我什至找不到对这种行为的全面描述,更不用说控制它的参数了。

(显然,“flightsim”类型的 GE 应用程序可以做到这一点,但我认为它们不是使用坐标变化,而是基于航向/速度数据的运动)。但是,为了实现恒定的高度运动,必须先将两个坐标集转换为速度/速度,然后再转换回坐标,这似乎有点愚蠢。)

感谢所有提示。

4

1 回答 1

1

如果您在使用 GE 插件时正在寻找流畅的动画,那么我可以直截了当地告诉您,GE 使用的默认算法是不够的。您最好的选择是将 flyToSpeed 设置为像这样传送:

ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);

然后自己创建过渡路径,或者通过在起点和终点之间插入帧,或者预定义这些帧(提示:您将需要更多的中间点)。

最简单的方法是挂钩 frameend 事件,该事件会在插件完成屏幕绘制后立即触发,然后立即重新定位相机。我能想到的最好的例子就是在这里:

http://earth-api-samples.googlecode.com/svn/trunk/examples/event-frameend.html

不幸的是,这个例子在直线上工作,使相机曲线更具挑战性。

另一种选择可能是查看 GE 插件对 KML 的原生支持,通过加载 KML 导览并通过插件播放,您可以让插件完成繁重的工作,

https://developers.google.com/earth/documentation/kml

于 2012-04-12T18:23:21.187 回答