在Google地球插件中旋转地球,考虑范围/缩放

时间:2012-08-29 20:10:24

标签: kml google-earth google-earth-plugin

我正在尝试通过代码旋转Google地球插件地球。我正在使用第三方控制器来移动它,嵌入在调用JavaScript函数的WPF应用程序中。

我理想的解决方案是精确模拟HUD按钮。当我告诉它“向右转”或“向下旋转”时,我希望地球的行为就像我按下HUD按钮一样。这可能吗?

由于我没有找到上述解决方案,我通过一系列调用'lookAt.setLongitude()'创建了一些旋转地球的方法。解决方案的基础是我每次调用JavaScript函数时都会向经度(或纬度)添加一定数量。

我的问题是我还没弄明白如何考虑范围(又名:用户缩放的距离/距离):当一定距离时,向经度添加“25”效果很好 - 但是进一步或接近地球表面并且解决方案很快就会崩溃!

我是否可以通过自动方式考虑范围,或者是否有人根据当前范围调整拉/长运动的良好算法?

谢谢!

2 个答案:

答案 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);

小提琴:http://jsfiddle.net/3J3y8/4/

答案 1 :(得分:0)

没有自动方法可以考虑范围,使地球看起来在不同的缩放级别移动相同的ammount。基本上,如果您将视图移动25度,那么您移动视图的程度就是多少。

如果您希望根据范围增加移动量,则只需在计算中的某个位置使用范围作为变量。您至少应该发布一些代码,并说明如果您尝试这样做并且卡住它就会失效。

修改

另一种选择可能是简单地模拟为您旋转地球仪的按键。根据您的设置,您应该能够发送其中一个箭头键或其中一个控制键 a w s d 因此使插件旋转就像按下HUD上的按钮一样。