飛行後にマップが最終的に移動を停止すると、画面中心を取得します。私はこれのための標準のSDKイベントがないことに気付きます。私はoverride MapView.onTouchEventのようないくつかのテクニックを見たり、ACTION_UPで繰り返しタイマーを開始したり、マップの動きの終了を待ちます。Mapview.drawからアクティビティへメッセージを送信
私はMapView.drawをオーバーライドで探しています: -
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
Log.e(TAG, "draw");
center = this.getMapCenter(); //(GeoPoint)
if (centerSave != null){
if (centerSave.equals(center)){
Log.e(TAG, "map stopped moving");
// Now what goes here?????
}
}
centerSave = center;
}
この「情事の終り」の検出は、私が見てきた他、ビット単純ですが、それが実行されるため、それは多分もう少しCPUをロードしませんすべてのドローで。
私はMapActivityにマップの移動が停止したというメッセージ/イベントを送信します。 MapActivityは、地図の中心にプッシュピンを配置します。
このメッセージを送信するにはどうすればよいですか?
スレッド間ではなく、2つの異なるクラス間でメッセージを送信しています。多分簡単なテクニックがありますが、そのトリックはそれを知ることです。任意のヘルプ
ため
おかげでピーター
編集:私はUIスレッドにメッセージを送信するためのハンドラを使用しています。残念ながら、それは飛行の問題を解決するものではありませんが(それは改善です)。
// Now what goes here????
Message m = Message.obtain();
m.what = MyApplication.HANDLE_DRAW_TO;
MyApplication.tabbedMapActivityHandler.dispatchMessage(m);