3

最新版本的 Google 地球附带了一项名为“缩放时自动倾斜”的功能。如果启用,当您靠近地面时,Google 地球会自动将相机向地平线倾斜。可以从 GUI 中禁用此功能(首选项 -> 导航选项卡)。不幸的是,到目前为止,我还没有找到禁用 Google 地球插件的方法。

似乎客户端设置对应于注册表项 (HKCU\Software\Google\Google Earth Plus\SwoopEnabled)。在 Google 地球插件注册表分支 (HKCU\Software\Google\GoogleEarthPlugin\SwoopEnabled) 中存在一个同名键,但是,将值“false”分配给它根本没有任何效果。与客户端不同,插件似乎不评估设置。

有一个 API 方法可以禁用地面自动转换 (void GEOptions.setAutoGroundLevelViewEnabled(bool)),但是这不会禁用自动倾斜行为。没有像“GEOptions.setSwoopEnabled(bool)”这样的方法,尽管在我看来拥有一个会很有意义。

Google Earth API 问题跟踪器将此问题列为问题:

http://code.google.com/p/earth-api-samples/issues/detail?id=23

但是,该条目是从 2008 年 8 月开始的,在我看来,Google 不太可能很快修复它。因此,我的问题是:是否有任何解决方法/hack/tweak.. 强制插件禁用烦人的自动倾斜功能?

任何帮助将不胜感激!

4

1 回答 1

1

不,AFAIK 无法禁用此行为。

...也就是说,如果视图高度低于某个高度,您可能会使用一些事件和条件逻辑以编程方式设置倾斜度但是,这可能会引入其他问题,例如无法将视图完全倾斜到某个高度以下。虽然这对于您的实施来说可能是可以接受的......

无论如何,以下内容可能对您有用,尽管它是写在这里并且未经测试的。

google.earth.addEventListener(ge, 'frameend', setView);

var setView = function() {
  var camera = ge.getView().copyAsCamera(ge.ALTITUDE_RELATIVE_TO_GROUND);
  if(camera.getAltitude() < BASE_ALTITUDE && camera.getTilt() >= AUTO_TILT_AMMOUNT) {
     var speed = ge.getOptions().getFlyToSpeed();
     ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);
     camera.setTilt(0);
     ge.getView().setAbstractView(camera);
     ge.getOptions().setFlyToSpeed(speed);
  }
}

BASE_ALTITUDE“猛扑”开始的高度在哪里,AUTO_TILT_AMMOUNT一旦“猛扑”,错误,猛扑,倾斜值在哪里。

于 2013-01-06T17:25:49.057 回答