1

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

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

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

我的问题是我还没有弄清楚如何计算范围(又名:用户放大了多近/多远)!当一定距离时,在经度上加上“25”效果很好——但离地球表面更远或更近,解决方案很快就会分崩离析!

是否有一种自动方法可以解释范围,或者是否有人对基于当前范围调整纬度/经度运动的良好算法有任何指示?

谢谢!

4

2 回答 2

0

如果您获得 from 的当前外观,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/

于 2012-08-29T21:39:54.660 回答
0

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

如果您希望根据范围增加移动量,则只需在计算中的某处使用范围作为变量。您至少应该发布一些代码并说明如果您尝试此操作并卡住它为什么不起作用。

编辑

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

于 2012-08-29T21:59:18.927 回答