1

Je souhaite définir OnMarkerClickListener de différents marqueurs. Ici, je veux imprimer je valeur variable de la boucle chaque fois que le marqueur respectif sera cliqué. Donc, je l'ai fait par la voie suivante .. mais il ne fonctionne pas, il affiche même dernière valeur de la boucle sur le Snackbar dans tous les différents marqueurs cliquez sur .. Mais je suppose d'obtenir 0,10,20,30 .... 170 respectivement dans le casse-croûte sur le clic différent de marqueur.Paramètre onMarkerClickListener sur différents marqueurs

S'il vous plaît aider ...

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



     // SETTING MARKER 
     for(int i=0;i<180;i=i+10) { 
      LatLng sydney = new LatLng(i, i); 
      mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i)); 

      //ON MARKER CLICK 
      final int finalI = i; 

      mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 

       @Override 
       public boolean onMarkerClick(Marker marker) { 
        Snackbar.make((View) findViewById(R.id.map),""+finalI,Snackbar.LENGTH_LONG).show(); 
        return true; 
       } 
      }); 
     } 
} 

Voici le marqueur qui a été créé par la boucle mais je reçois même valeur à 170

enter image description here

Répondre

1

Pour résoudre votre problème, vous devriez avoir un tableau de marqueurs.

Essayez ceci:

d'abord votre application pour mettre en œuvre GoogleMap.OnMarkerClickListener Ensuite, créez un tableau de marqueur:

Marker[] marker = new Marker[20]; //change length of array according to you 

puis à l'intérieur

onMapReady(){ 
mMap.setOnMarkerClickListener(this); 
for(int i=0;i<180;i=i+10) { 
      LatLng sydney = new LatLng(i, i); 
      marker[i] = mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i)); 


     } 
} 

puis finalement

 @Override 
    public boolean onMarkerClick(Marker marker) { 
    //you can get assests of the clicked marker 
    return false; 
} 
0

J'ai trouvé un sens ...

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

      // SETTING MARKER 
      for(int i=0;i<180;i=i+10) { 
       LatLng sydney = new LatLng(i, i); 
       mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Position"+i)); 

       } 

     //ON MARKER CLICK 
     mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 

     @Override 
     public boolean onMarkerClick(Marker marker) { 
      for(int i=0;i<180;i=i+10) { 
       if (marker.getTitle().equals("Marker in Position" + i)) 
        Snackbar.make((View) findViewById(R.id.map), "" + i, Snackbar.LENGTH_LONG).show(); 

      }return true; 
     } 
    }); 
    }