我正在尝试通过代码旋转Google地球插件地球。我正在使用第三方控制器来移动它,嵌入在调用JavaScript函数的WPF应用程序中。
我理想的解决方案是精确模拟HUD按钮。当我告诉它“向右转”或“向下旋转”时,我希望地球的行为就像我按下HUD按钮一样。这可能吗?
由于我没有找到上述解决方案,我通过一系列调用'lookAt.setLongitude()'创建了一些旋转地球的方法。解决方案的基础是我每次调用JavaScript函数时都会向经度(或纬度)添加一定数量。
我的问题是我还没弄明白如何考虑范围(又名:用户缩放的距离/距离):当一定距离时,向经度添加“25”效果很好 - 但是进一步或接近地球表面并且解决方案很快就会崩溃!
我是否可以通过自动方式考虑范围,或者是否有人根据当前范围调整拉/长运动的良好算法?
谢谢!
答案 0 :(得分:0)
如果你从ge.getView()
获得当前的外观,你也可以得到视图的当前范围。
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
var newLook = ge.createLookAt('');
newLook.setLatitude(lookAt.getLatitude());
newLook.setLongitude(lookAt.getLongitude() + 25.00); //or however you want to rotate
newLook.setRange(lookAt.getRange());
ge.getView().setAbstractView(newLook);
答案 1 :(得分:0)
没有自动方法可以考虑范围,使地球看起来在不同的缩放级别移动相同的ammount。基本上,如果您将视图移动25度,那么您移动视图的程度就是多少。
如果您希望根据范围增加移动量,则只需在计算中的某个位置使用范围作为变量。您至少应该发布一些代码,并说明如果您尝试这样做并且卡住它就会失效。
修改强>
另一种选择可能是简单地模拟为您旋转地球仪的按键。根据您的设置,您应该能够发送其中一个箭头键或其中一个控制键 a , w , s 或 d 因此使插件旋转就像按下HUD上的按钮一样。