2013-01-14 6 views
5

Attualmente sto utilizzando la classe ItemizedOverlay dall'API di Maps V1, che tiene traccia di quale marker (se presente) è attualmente selezionato. Esiste una funzionalità simile in Maps V2 per determinare quale marker è attualmente selezionato? Inoltre, c'è un modo per selezionare in modo programmatico un nuovo marker?Come si seleziona un marker utilizzando l'API di Maps V2 per Android?

risposta

16

Sì.

Per determinare quale marcatore è selezionato, aggiungere un OnInfoWindowClickedListener al vostro GoogleMap:

//mMap is an instance of GoogleMap 
mMap.setOnInfoWindowClickListener(getInfoWindowClickListener()); 

sovrascrivere il metodo onInfoWindowClicked() all'interno del OnInfoWindowClickListener:

public OnInfoWindowClickListener getInfoWindowClickListener() 
{ 
    return new OnInfoWindowClickListener() 
    {  
     @Override 
     public void onInfoWindowClick(Marker marker) 
     { 
      Toast.makeText(getApplicationContext(), "Clicked a window with title..." + marker.getTitle(), Toast.LENGTH_SHORT).show(); 
     } 
    };  
} 

e tenere traccia del marcatore selezionato , forse con una variabile di istanza.

Per selezionare un marcatore di programmazione, si dovrà tenere un elenco di tutti i marcatori, quindi ottenere una maniglia su uno e chiamare showInfoWindow(), simile a questo:

//markerList is just a list keeping track of all the markers you've added 
//to the map so far, which means you'll have to add each marker to this 
//list as you put it on the map 
Marker marker = this.markerList.get(someObjectYoureShowingAMarkerFor.getId()); 

if(marker != null) 
{ 
    marker.showInfoWindow(); 
} 
+0

Proprio quello di cui avevo bisogno, grazie! – noisecapella

1

È possibile utilizzare la OnMarkerClickListener.

googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
     @Override 
     public boolean onMarkerClick(Marker marker) { 
      Toast.makeText(getApplicationContext(), "Clicked a marker with title..." + marker.getTitle(), Toast.LENGTH_SHORT).show(); 
      return true; 
     } 
    }); 
Problemi correlati