1

コードで Google Earth プラグインの地球儀を回転させようとしています。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 度移動すると、それがビューの移動量になります。

範囲に基づいて移動量を増やしたい場合は、計算のどこかで範囲を変数として使用するだけです。少なくともいくつかのコードを投稿し、これを試して動かなくなった場合になぜ機能しないのかを説明する必要があります。

編集

別のオプションは、地球を回転させるキープレスを単純にシミュレートすることです。セットアップに応じて、矢印キーの 1 つ、またはコントロール キー 、 のいずれかを送ることができるはずです。つまりa、HUD のボタンを押したかのようにプラグインを回転させることができます。wsd

于 2012-08-29T21:59:18.927 に答える