我尝试使用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?
如果有人有想法或方法,我会非常高兴。 提前感谢您的帮助。
答案 0 :(得分:1)
why does the view zoom out while panning?
这不是错误,而是默认行为。
如果飞行速度设置为SPEED_TELEPORT
以外的其他内容,插件将向移动的中点缩小,然后以循环动作向后缩放。
AFAIK除了发生的速度之外,没有办法控制它。
如果你想实现一个"飞到固定的高度/范围"你可以很容易地做到这一点。一种常见的方法是将速度保持在SPEED_TELEPORT
(以移除动画循环),然后通过frameEnd event以递增步骤手动移动相机。
看一下smoothly animating a camera via 'frameEnd'的这个例子 - 我相信你可以很容易地根据你的需要调整它(自上而下,固定高度等)。