Wie bekomme ich eine Objekt-ID von Google Map Marker? - Java, Android, Google-Karten, Hashmap, Android-Karten-v2

Ich benutze diesen Code, um Markierungen in Google Maps zu zeichnen (verstecke die, die auf dem Bildschirm unsichtbar sind)

for (MyMapPointModel item : items) {
// If the item is within the the bounds of the screen
if (bounds.contains(item.getLatLng())) {
// If the item isn"t already being displayed
if (!visibleMarkers.containsKey(item.getId())) {
// Add the Marker to the Map and keep track of it with
// the HashMap
// getMarkerForItem just returns a MarkerOptions object
customMarker = getMap().addMarker(getMarkerForItem(item));
visibleMarkers.put(item.getId(), customMarker);
drawMarker(item.getLatLng(), item.getThumbUri(), item.getId());
}
} else { // If the marker is off screen
// If the course was previously on screen
if (visibleMarkers.containsKey(item.getId())) {
// 1. Remove the Marker from the GoogleMap
visibleMarkers.get(item.getId()).remove();
// 2. Remove the reference to the Marker from the
// HashMap
visibleMarkers.remove(item.getId());

}
}
}

und ich speichere Marker mit Items darinhashmap Ich möchte eine Aktivität mit Details für den getapten Marker aufrufen und ich kann keine Item ID von onMarkerClick Listener bekommen (er stellt nur ein Markerobjekt zur Verfügung) .Fehle ich etwas und wenn ich was bin? Hat jemand eine bessere Idee?

Antworten:

0 für die Antwort № 1

Probieren Sie das unten

 mMap.setOnMarkerClickListener(new OnMarkerClickListener()
{

@Override
public boolean onMarkerClick(Marker arg0) {
arg0.getId() //get id
//use switch case
// or use title
if(arg0.getTitle().equals("title"))
// do something
return true;
}

});

1 für die Antwort № 2

und ich speichere Marker mit Items in hashmap Ich benutze hashmap

Ich nehme an, dass Sie diese bestimmte Datenstruktur erfolgreich anderswo verwenden, und so ist es nützlich.

Für Ihr Problem klingt es jedoch so, als würden Sie es brauchen HashMap<String, Integer>verwenden getId() auf Marker als Schlüssel. Dies ermöglicht es Ihnen, nachzusehen Integer gegeben sein Marker.

Oder, wenn Sie Ihr eigenes Info-Fenster erstellen, verwenden Sie die Titel- oder Snippet-Felder in a Marker um eine String-Darstellung Ihrer Ganzzahl zu halten, damit Sie sie verwenden können getTitle() oder getSnippet() um diesen Wert direkt abzurufen.


0 für die Antwort № 3

benutze diesen Code dafür

 mMap.setOnMarkerClickListener(new OnMarkerClickListener()
{

@Override
public boolean onMarkerClick(Marker arg0) {
if(arg0.getTitle().equals("MyHome")) // if marker source is clicked

return true;
}

});

Verwandte Fragen
Speisekarte