私のアプリには、マーカーを使用して地図上に位置を表示するオブジェクトがいくつかあります。問題は、マーカーのクリックを処理するために私が見つけた唯一の方法が
googleMap.setOnMarkerClickListener(new ... {
@Override
public void onMarkerClick(Marker marker) {
// how to get the object associated to marker???
}
})
言い換えると、MarkerOptionsのみを設定できる唯一のインターフェイスであるMarkerオブジェクトを取得します。
マーカーをオブジェクトに関連付ける方法はありますか?
Android=チームによると、このコールバックは非常に完全ではなかったと思いますが、それは私たちが持っているものです。
mMap.addMarker();
を呼び出すと、生成されたマーカーが返されます。その後、HashMapまたはその他のデータホルダー構造を使用してそれを記憶できます。
// Create the hash map on the beginning
WeakHashMap <Marker, Object> haspMap = new WeakHashMap <Marker, Object>();
// whenever adding your marker
Marker m = mMap.addMarker(new MarkerOptions().position(lat, lng).title("Hello World").icon(icon_bmp));
haspMap.put(m, your_data);
別のオプションは、キーがmarker.getId()で、値がオブジェクトであるマップを作成することです。
このようにして、マーカーへの参照をメモリに保持せず、ガベージコレクションされたマーカーについて心配する必要もありません。
ここでは その他の回答 を確認できます。