2012-12-21 1 views
1

J'utilise le code suivant pour créer une liste de marqueurs dans un mapfragment utilisant trois tableaux qui envoie les informations de latitude, longitude et nom d'une liste d'enregistrements. Mon objectif est d'envoyer à une nouvelle intention le nom de l'enregistrement lorsque l'on clique sur la fenêtre d'information. Maintenant, envoie pour tous les marqueurs le nom d'enregistrement du dernier élément du tableau, mais j'ai besoin d'envoyer les informations spécifiques à chaque marqueur. Une idée?Comment extraire une information de marqueur d'une liste de marqueurs

  String[] arraylatitud = arrlat.toArray(new String[arrlat.size()]); 
      String[] arraylongitud = arrlon.toArray(new String[arrlon.size()]); 
      String[] arrayrecordname = arrrecname.toArray(new String[arrrecname.size()]); 

      for(int i=0; i<arrlon.size();i++){ 


        mapa.addMarker(new MarkerOptions() 
        .position(new LatLng(Float.valueOf (arraylatitud[i]),Float.valueOf (arraylongitud[i]))) 
        .title("Grabación:" + arrayrecordname[i]) 
        .snippet("Latitud:" + arraylatitud[i] + "Longitud:" + arraylongitud[i])); 

        filename = arrayrecordname[i]; 

      } 

      mapa.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

        public void onInfoWindowClick(Marker marker) { 


          Intent intent = new Intent(MapArea.this, StreamingArea.class); 
          intent.putExtra("variable_selection", filename.toString()); 
          startActivity(intent); 


        } 
      } 

Répondre

3

Je viens de faire un blog à ce sujet. Vous pouvez le trouver à: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

Chaque marqueur a un ID.

Marker m = mapa.addMarker(new MarkerOptions() 
       .position(new LatLng(Float.valueOf (arraylatitud[i]),Float.valueOf (arraylongitud[i]))) 
       .title("Grabación:" + arrayrecordname[i]) 
       .snippet("Latitud:" + arraylatitud[i] + "Longitud:" + arraylongitud[i])); 

m.getId(); 

si vous stockez cet identifiant, ainsi que les informations dont vous avez besoin, vous pouvez obtenir les informations de retour

getMap().setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

     public void onInfoWindowClick(Marker marker) { 
      int id = marker.getId(); 
      Intent i = new Intent(MapArea.this.getActivity(), StreamingArea.class); 
      //your code goes here 
      i.putExtra(....); 

      startActivity(i); 

     } 
    }); 
+0

Cela ne fonctionne pour moi, retourne toujours le dernier identifiant de la liste. Dans un autre forum m'a recommandé qui utilise une carte du type privé Map markerMap = new HashMap <>(); pour obtenir le onInfoWindowClick() peut être appelé par markerMap.get (marqueur) mais je ne pense pas comment implémente cette idée. – velas16v

+0

Oui, c'est ce que je veux dire. Je vais essayer de vous expliquer un bitbetter dans environ une heure – dumazy

+1

http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html – dumazy

Questions connexes