1

地図とPOIが記載されたアプリがあります。パスの描画にhttp://djsolid.net/blog/android---draw-a-path-array-of-points-in-mapviewを使用しています。ピンマーカーはhttps://github.com/jgilfelt/android-mapviewballoonsを使用して、情報を含むポップアップバルーンを表示しています

一度、メインアクティビティで通知を受け取る方法を見つけようとしています

protected boolean onBalloonTap(int index, OverlayItem item) 

発生します。ポイントの取得、バルーンとポップアップ情報の描画、およびタップ(バルーン)するとパスの描画に関して、すべてが機能します。ただし、選択したPOIを保存したい(画面にいくつかあるので、ユーザーがどれを選択したかを知りたい)が、異なるクラスで発生するため、必ずしも作成されたときではないため、そのようなもののパブリックゲッターを使用します。オーバーレイを作成するためのコードは次のとおりです。

    Drawable marker = getResources().getDrawable(R.drawable.malls);
    PinsOverlay malls= new PinsOverlay(marker, mapView);
    List<Overlay> mapOverlays= mapView.getOverlays();
    for (int i = 0; i < coordinates.length; i++) {
        long systemTime = Long.valueOf(currentTime);
        long timeSinceReported = (systemTime - Long.valueOf(time[i])) / 60;
        OverlayItem spot = new OverlayItem(coordinates[i], getAddressFromGP(coordinates[i]), getResources()
                .getString(R.string.timeSinceReported)
                + String.valueOf(timeSinceReported)
                + " "
                + getResources().getString(R.string.minutes));
        malls.addOverlay(spot);
    }
    mapOverlays.add(malls);

ここで、coordinates[i]はすべてのマーカーの座標を保持する配列であり、 getAddressFromGP(coordinates[i])GoogleAPIを使用して逆ジオコーディングを行うためのメソッドです。

各オーバーレイに任意の種類のデリゲートを追加するにはどうすればよいですか?出来ますか?私はこのhttp://www.javaworld.com/javatips/jw-javatip10.htmlを見ましたが、それが私が探しているものであるかどうか、そしてそれを実装する方法を正確に理解できませんでした。

前もって感謝します。

4

1 に答える 1

3

別のクラスから発生したことをクラスに通知するには、オブザーバーデザインパターンを使用します。オブザーバーデザインパターンは、発生するはずのイベントをリッスンするため、Javaではリスナーと呼ばれることがよくあります。

別のスレッドから発生したことをメインスレッドに通知するための最も一般的な方法は次のとおりです。

  1. Handler.post
  2. Activity.runOnUiThread
  3. View.post
  4. AsyncTask
于 2012-06-14T23:32:28.543 に答える