0

J'ai une liste d'enregistrements, où chaque enregistrement a sa propre latitude et longitude. Basé sur ces lat et long j'ai besoin d'afficher ces enregistrements sur la carte comme des épingles.Remplissage des broches sur GoogleMap et ouverture des activités sur cliquer sur chaque élément de broche

Ceci est mon code pour afficher les enregistrements sur la carte.

private GoogleMap mMap; 
List<Ticket> tickets = ticketDB.getMyTickets(ticketIDs, mCurrSortKey, mCurrSortOrder, currDate); 
    if (mMap != null) { 

     LatLngBounds.Builder bounds = new LatLngBounds.Builder(); 

     for (int i = 0; i < tickets.size(); i++) { 
      Ticket ticket = tickets.get(i); 
      if (ticket != null && ticket.Latitude > 0) { 
       MarkerOptions markerOptions = new MarkerOptions(); 
       markerOptions.position(new LatLng(ticket.Latitude, ticket.Longitude)); 
       bounds.include(new LatLng(ticket.Latitude, ticket.Longitude)); 
       markerOptions.title(ticket.TicketNumber); 
       mMap.addMarker(markerOptions); 
       mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(markerOptions.getPosition(),15)); 
} 
} 

Ici, tous les enregistrements de billets sont extraites de la base de données et avec succès sont repérés sur la carte (en présumant il y a 10 billets et sont donc 10 broches sur le marqueur)

Mon problème est de cliquer sur chaque marqueur dont j'ai besoin pour envoyer des données de l'enregistrement cliqué pour ouvrir l'activité. comment savoir sur quel disque on clique?

+0

https://stackoverflow.com/questions/14226453/google-maps-api-v2-how-to- make-markers-clickable –

+0

Cela pourrait aider: https://stackoverflow.com/questions/30601892/android-google-maps-how-to-make-each-marker-infowindow-open-different-activity –

Répondre

0

Implémentez GoogleMap.OnMarkerClickListener. Ici, dans la fonction donnée, dans l'instance de marqueur, vous obtenez tout ce qui est lié au marqueur cliqué.

0

Je résolus en mettant à jour les services de jeu de Google pour

compile 'com.google.android.gms:play-services:9.4.0' 

GoogleMap fournit des méthodes getTag() et setTag() afin de le faire avec la mise à jour ci-dessus.

et la mise en œuvre de la méthode OnMapReadyCallback.

@Override 
public void onMapReady(GoogleMap googleMap) { 
    GoogleMap mMap = googleMap; 
} 

Ajoutez getMapAsync (this) dans onCreate().

Maintenant, je peux définir les données à marqueur en utilisant getTag dans mon ci-dessus pour le code de boucle.

Marker marker = mMap.addMarker(markerOptions); 
marker.setTag(ticket); 

et peut être récupéré par:

mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 
      @Override 
      public void onInfoWindowClick(Marker marker) { 
       Ticket ticket = (Ticket) marker.getTag(); 

}}