2

アプリケーションの 1 つでマップを使用しています。タップされたときにマーカーに関連付けられたオブジェクトを取得するための一般的/効率的な方法を知りたいです。

私が今日計画しているのは、次のようなものです。

mMap.addMarker(...);まず、インデックスとして返されたマーカーを使用して、オブジェクトの ArrayList とそれらのオブジェクトの HashMap を作成します。

ArrayList<MyObject> items = new ArrayList<MyObject>();
HashMap<Marker, MyObject> markersAndObjects = new HashMap<Marker, MyObject>();

今、私onMarkerClick()はそのようにオーバーライドします

public boolean onMarkerClick(Marker clickedMarker) {
    // send the object returned by markersAndObjects.get(clickedMarker) for processing
    return false;
}

これについて何か考えはありますか?

4

1 に答える 1

9

これを行うための推奨される方法は、マーカー ID とカスタム データを含むハッシュを用意することです。アクティビティが強制終了されて復元された場合、Marker オブジェクトは変更される可能性がありますが、ID は同じままです。マップは次のようになります。

HashMap<String, MyObject> markersAndObjects = new HashMap<String, MyObject>();

マーカー オブジェクトには、ID を取得するための getId() メソッドがあります。

[後で編集]

2016 年 8 月現在、新しい API があり、HashMap は不要になりました。https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker.html#setTag(java.lang.Object)を参照して ください。

于 2013-03-08T11:05:04.087 に答える