3

Google Earthの最近のバージョンには、「ズーム時の自動傾斜」と呼ばれる機能が付属しています。有効にすると、Google Earthは、サーフェスに近づくと、カメラを水平線に向かって自動的に傾けます。この機能は、GUI内から無効にできます([設定]-> [ナビゲーション]タブ)。残念ながら、これまでのところ、GoogleEarthプラグインで無効にする方法は見つかりませんでした。

どうやらクライアント設定はレジストリキー(HKCU \ Software \ Google \ Google Earth Plus \ SwoopEnabled)に対応しているようです。Google Earthプラグインのレジストリブランチ(HKCU \ Software \ Google \ GoogleEarthPlugin \ SwoopEnabled)内に同じ名前のキーがありますが、値「false」を割り当ててもまったく効果がありません。クライアントとは異なり、プラグインは設定を評価しないようです。

グラウンドレベルの自動遷移を無効にするためのAPIメソッド(void GEOptions.setAutoGroundLevelViewEnabled(bool))がありますが、これは自動傾斜動作を無効にしません。「GEOptions.setSwoopEnabled(bool)」のようなメソッドはありませんが、それを使用することは非常に理にかなっているように思われます。

Google Earth API Issue Trackerは、この問題を問題としてリストします。

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

ただし、エントリは2008年8月のものであり、Googleがすぐに修正する可能性は低いようです。したがって、私の質問は次のとおりです。プラグインに迷惑な自動傾斜機能を無効にするための回避策/ハック/微調整はありますか?

どんな助けでも大歓迎です!

4

1 に答える 1

1

いいえ、私の知る限り、この動作を無効にすることはできません。

...ビューの高度が特定の高さを下回っている場合、いくつかのイベントと条件付きロジックを使用してプログラムで傾斜を設定できる可能性があると述べました。ただし、これにより、特定の高度より下でビューをまったく傾けることができないなど、他の問題が発生する可能性があります。多分それはあなたの実装には受け入れられますが...

とにかく、ここに書かれていてテストされていませんが、次のようなものがうまくいくかもしれません。

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 に答える