2012-12-14 21 views
23

Come possiamo aggiungere un oggetto a un marker nella nuova API di Android per le mappe di Google v2? Quindi, se clicchiamo su InfoWindow, possiamo fare qualcosa con l'oggetto?Android Google Maps v2 - Aggiungi oggetto al marker

public void addSpotOnMap(Spot spot) { 
    getMap().addMarker(new MarkerOptions() 
      .position(new LatLng(spot.getParseGeoPoint().getLatitude(), spot.getParseGeoPoint().getLongitude())) 
      .title(spot.getName()) 
      .snippet(spot.getCategory()) 
      .draggable(false)); 

} 

Imposta posizione, titolo e snippet per l'oggetto. Ma voglio essere in grado di andare a un'altra attività su questo specifico oggetto Spot se clicco su InfoWindow

+0

puoi usare [android-maps-extensions] (https://code.google.com/p/android-maps-extensions) estende le classi Marker e Polygon e ti consente di impostare e ottenere oggetti da esso – primax79

risposta

37

Non proprio sicuro se questa è la risposta corretta, ma date un'occhiata a questo post di blog che ho fatto su questo problema:

dal Marker è final, è questo può essere facilmente risolto collegando i dati con il Marker in un Map, ad esempio HashMap<Marker, YourDataClass> o HashMap<Marker, String>

Ecco un tutorial che spiega tutto: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

+0

Anche io non ho visto nessun altro modo di fare. – Vincent

+0

Grazie per aver postato la soluzione. –

+1

Si prega di non aggiungere risposte di solo collegamento, fornire un riassunto della soluzione qui su SO – avalancha

1

Prova android-maps-extensions sua biblioteca dove è possibile aggiungere oggetti a marchio con il metodo SetData e recuperare metodo di chiamata dati getData

Read more

Object getData() and setData(Object) on Marker, Circle, GroundOverlay, Polygon, Polyline or TileOverlay 

da Gradle È possibile utilizzare qualsiasi versione di Google Servizi

dependencies { 
    compile 'com.androidmapsextensions:android-maps-extensions:2.2.0' 
    compile 'com.google.android.gms:play-services-maps:8.1.0' 
} 
Gioca
12

A partire da Play Services v9.4.0, ora puoi impostare qualsiasi oggetto direttamente su un marker!

per salvare i dati:

Marker marker = getMap().addMarker(new MarkerOptions() 
     .position(lat, lng) 
     .title(spot.getName()); 

CustomObject myData = new CustomObject(); 
marker.setTag(myData); 

Poi, per prelevare i dati:

CustomObject myRestoredData = (CustomObject)marker.getTag(myData); 

Per ulteriori infomration su dati marcatori, here are the docs.

+0

So che questa è una vecchia domanda, ma vorrei che aggiungessero l'opzione userData come in iOS. –

Problemi correlati