Google地球的最新版本附带了一项名为“缩放时自动倾斜”的功能。如果启用,Google地球会在您靠近地面时自动将相机倾斜到地平线。可以在GUI(首选项 - >导航选项卡)中禁用此功能。不幸的是,到目前为止,我还没有找到一种方法来禁用谷歌地球插件。
似乎客户端设置对应于注册表项(HKCU \ Software \ Google \ Google Earth Plus \ SwoopEnabled)。 Google地球插件注册表分支(HKCU \ Software \ Google \ GoogleEarthPlugin \ SwoopEnabled)中存在同名的密钥,但是,为其指定值“false”则完全没有效果。与客户端不同,该插件似乎不会评估设置。
有一种API方法可用于禁用地平面自动转换(void GEOptions.setAutoGroundLevelViewEnabled(bool)),但这并不会禁用自动倾斜行为。没有像“GEOptions.setSwoopEnabled(bool)”这样的方法,尽管在我看来,拥有一个很有意义。
Google地球API问题跟踪器将此问题列为问题:
http://code.google.com/p/earth-api-samples/issues/detail?id=23
但是,该条目是从2008年8月开始的,我似乎不太可能在不久的将来修复它。因此,我的问题是:是否有任何类型的解决方法/黑客/调整..强制插件禁用恼人的自动倾斜功能?
任何帮助将不胜感激!
答案 0 :(得分: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
是“俯冲”的倾斜值,错误,俯冲。