我尝试用GE-PlugIn在c# (Interop.GEPlugin.dll)中平移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?
如果有人有一个想法或方法,我将非常高兴。提前感谢您的帮助。
why does the view zoom out while panning?
这不是错误,这是默认行为。
如果飞到速度被设置为SPEED_TELEPORT
以外的东西,插件将缩小到运动的中点,然后在循环运动中缩小到结束。
我敢说,除了控制它发生的速度之外,没有办法控制它。
如果你想实现"飞到固定高度/范围",你可以很容易地做到这一点。一种常见的方法是将速度保持在SPEED_TELEPORT
(删除动画循环),然后通过frameEnd事件手动以增量步骤移动摄像机。
看一下这个例子,通过'frameEnd'平滑地动画一个相机-我相信你可以很容易地适应它,以满足您的需求(自顶向下,固定高度等)。