Связать объект с маркером (google map v2)

В моем приложении у меня есть некоторые объекты, которые отображаются на карте с помощью маркеров. Проблема в том, что единственный способ, которым я нашел обращение с маркерами, – это

googleMap.setOnMarkerClickListener(new ... { @Override public void onMarkerClick(Marker marker) { // how to get the object associated to marker??? } }) 

Другими словами, я получаю объект Marker, а единственный интерфейс, который я позволяю мне устанавливать только MarkerOptions.

Любой способ связать маркер с объектом?

Вы можете связать произвольный объект с помощью метода setTag () Marker

 Marker amarker = mMap.addMarker(new MarkerOptions().position(lat, lng).title("Hello World")); amarker.setTag(new SomeData()); 

Чтобы получить данные, связанные с маркером, вы просто читаете его с помощью getTag (), а затем применяете его к исходному типу.

 SomeData adata = (SomeData) amarker.getTag(); 

Больше информации

Я считаю, что этот обратный вызов был не очень тщательно, хотя команда 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 (), и это наш объект.

Таким образом, мы не будем ссылаться на маркер в памяти, и вам не придется беспокоиться о сборках мусора.

Здесь вы можете увидеть больше ответов .