いくつかの制約のため、ここでは説明しませんが、アプリケーションにカスタムパンを実装する必要があることに気づきました。
ArcGIS APIリファレンスでは、次のメソッドの使用を推奨しています。
IScreenDisplay2.PanStart(IPoint start) // Starts a pan
IScreenDisplay2.PanMoveTo(IPoint moveTo) // Moves to a point
IScreenDisplay2.PanEnd() // Ends the pan
これらの各メソッドは、次のイベントハンドラーで(それぞれ)呼び出されます。
IMapControl4.OnMouseDown // Call PanStart()
IMapControl4.OnMouseMove // Call PanMoveTo()
IMapControl4.OnMouseUp // Call PanEnd()
つまり、すべてがうまく機能し、イベントが処理され、パンが始まり、みんなが幸せです。
-だが-
画面が実際にパンする場所は、カーソルをドラッグした場所ではありません。マップはやや確定的なパターンで動き回りますが、APIが何をしているかを補正する方法がわかりません。私は啓発的なドキュメントを見つけることができませんでした。
誰かがAPIのこの部分の経験がありますか?サンプルコードやドキュメントは素晴らしいです!
1
マップが各パンを完了するときに、IDisplayTransformation.DeviceFrameを出力するようにデバッグステートメントを設定してみましたか?以前、特定の条件下でデバイスのフレームサイズが不適切な値に変更されることに気付きました。
—
カークカイケンダル2011年
@Kirk-
—
tbridge
DeviceFrame
パンしてもまったく変わりません。それは予想されることですが、正しいですか?デバイスフレームは、デバイス座標(ピクセル)でのフレームのサイズです
正解です。変更しないでください。displaytransformationインスタンスでITransformEvents.VisibleBoundsUpdatedをリッスンしてみましたか?多分それは2回呼ばれていますか?また、代わりにTrackPanを呼び出してみましたか?
—
Kirk Kuykendall
@カーク
—
抑制さ
VisibleBoundsUpdated
2回呼び出しても運がありません。私は使用しますTrackPan()
が、パン中にマウスイベントを引き続き処理する必要があり、それらはaの間TrackPan
イベントハンドラーにコードを投稿できますか?パンはOnMouseUpを終了し、予期しない場所で終了しますか?OnMouseDownとOnMouseUpのX、Yからポイントを作成してみましたか?パンの開始位置と終了位置に対応していますか。
—
Jakub Sisak GeoGraphics