【问题标题】:Google Earth API: How to prevent high jump when changing camera location?Google Earth API:更改相机位置时如何防止跳高?
【发布时间】:2012-04-14 02:00:12
【问题描述】:

在 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 m)。

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

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

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

感谢所有提示。

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多