1

Android の Maps API の概念を理解するのに苦労しています。地図上に何か新しいものを描画したいときはいつでも、新しいオーバーレイを作成するのは正しいですか? これは一見非常に効率が悪いように見えます。レイヤー構造全体が焼き付いたので、パフォーマンスについてまったく心配する必要はありませんか、それとも updateOverlay のようなものが欠けていますか? それとも、Overlay クラスを拡張して後で MapView.invalidate() を呼び出すときに、独自の updateOverlay() メソッドを実装しますか?

4

1 に答える 1

0

オーバーレイを1回だけ作成し、それをMapViewに追加します。次に、MapViewでpostInvalidate()を呼び出す必要があります。これにより、新しいオーバーレイが画面に表示されます。この呼び出しがないと、オーバーレイは作成されますが、表示されません。

アクティビティライフサイクルのonResume()メソッドは、アプリケーションの起動時または起動時に常に呼び出されるため、onResume()で位置追跡を有効にし、onPause()で無効にする必要があります。MyLocationOverlayクラスには便利なメソッドがあります:runOnFirstFix()このメソッドを使用すると、場所が決まったらすぐに実行されるコードを設定できます。

@Override
public void onResume()
{
    super.onResume();
    whereAmI.enableMyLocation();
    whereAmI.runOnFirstFix( new Runnable() {
        public void run() {
            mapController.setCenter(whereAmI.getMyLocation());
        }
    });
 }

その後、MyLocationOverlayが位置情報の更新を取得し、その位置に青い点が点滅するため、自分で何もする必要はありません。

@Override
public void onPause()
{
    super.onPause();
    whereAmI.disableMyLocation();
}
于 2013-01-07T19:48:48.347 に答える