Google Earth API:如何在更改相机位置时防止跳高?

时间:2012-04-12 17:55:56

标签: google-maps google-earth google-earth-plugin

在Google地球(网络浏览器插件,GE API)中,我通过更改坐标将相机从A点移动到B点。 它起作用了,但GE在航行时似乎总是跳高。

示例(使用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米)。

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

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

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

感谢所有提示。

1 个答案:

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