使用固定的FlyToSpeed与Google Earth相对于当前视图进行平移

时间:2014-06-03 18:36:39

标签: c# camera google-earth google-earth-plugin panning

我尝试使用C#(Interop.GEPlugin.dll)中的GE-PlugIn相对于当前视图平移Google Earth,如文档(https://developers.google.com/earth/documentation/camera_control)中所述,并使用固定的FlyToSpeed。

将FlyToSpeed设置为SPEED_TELEPORT时,一切都正常工作:

ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE)
lookAt.setLongitude(lookAt.getLongitude() + 1);
ge.getView().setAbstractView(lookAt); // Works as expected

将FlyToSpeed设置为特定数字,平移会因缩小行为的增加而受到干扰:

ge.getOptions().setFlyToSpeed(3);
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE)
lookAt.setLongitude(lookAt.getLongitude() + 1);
ge.getView().setAbstractView(lookAt); // why the view zooms out while panning?

如果有人有想法或方法,我会非常高兴。 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

why does the view zoom out while panning?

这不是错误,而是默认行为。

如果飞行速度设置为SPEED_TELEPORT以外的其他内容,插件将向移动的中点缩小,然后以循环动作向后缩放。

AFAIK除了发生的速度之外,没有办法控制它。

如果你想实现一个"飞到固定的高度/范围"你可以很容易地做到这一点。一种常见的方法是将速度保持在SPEED_TELEPORT(以移除动画循环),然后通过frameEnd event以递增步骤手动移动相机。

看一下smoothly animating a camera via 'frameEnd'的这个例子 - 我相信你可以很容易地根据你的需要调整它(自上而下,固定高度等)。