2016-11-21 2 views
0

J'ai une activité principale et sur ce que j'ai quelques marqueurs (trop pour les initialiser un par un) Quand je clique sur l'infowidow je veux ouvrir un fragment avec le marqueur spécifique. Actuellement, j'ai quelque chose comme çaPuis-je lancer d'autres activités à partir de différents marqueurs sur Google Maps?

for(i = 0; i<j; i++) 
      { 
       hely = helyek.get(i); 
       if(hely.getStars()>=2){ 
        hely.getHelyId(); 
        Marker marker = mMap.addMarker(new MarkerOptions().position(new LatLng(hely.getLat(),hely.getLng())) 
          .title(hely.getHelynev()) 
          .snippet(hely.getHelycim()) 
          .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); 
        markers.add(marker); 

Cela ajoute les marqueurs à la carte.

public void onMapReady(GoogleMap googleMap) { 
    int j; 
    int i=0; 
    List<Marker> markers = new ArrayList<Marker>(); 
    mMap = googleMap;   
    mMap.getUiSettings().setMyLocationButtonEnabled(true); 
    mMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
     @Override 
     public void onInfoWindowClick(Marker marker) { 
      Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class); 
      intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev()); 
      intent.putExtra(ListActivity.HELY_CIM_EXTRA, hely.getHelycim()); 
      intent.putExtra(ListActivity.HELY_JOVALASZOK, hely.getJovalaszok()); 
      intent.putExtra(ListActivity.HELY_OSSZKERDES, hely.getOsszkerdes()); 
      intent.putExtra(ListActivity.HELY_ID_EXTRA, hely.getHelyId()); 
      intent.putExtra(ListActivity.HELY_LAT,hely.getLat()); 
      intent.putExtra(ListActivity.HELY_LONG, hely.getLng()); 
      startActivity(intent); 
     } 
    }); 
    mMap.setMyLocationEnabled(true); 
} 

Ceci ouvre une activité de coures mais la même à chaque fois. Comment puis-je définir quel marqueur j'ai cliqué?

Répondre

0

Vous pouvez essayer d'utiliser la déclaration d'une nouvelle structure de données HashMap. Lorsque vous ajoutez les marqueurs à la carte, vous pouvez mettre l'objet Hely dans la carte comme ceci:

HashMap<String, Hely> helyMap = new HashMap<>(); //... code to create the marker ...// markers.add(marker); helyMap.put(marker.getId(), hely);

Ensuite, dans la méthode onInfoWindowClick(Marker marker) récupérer l'objet Hely basé sur le marqueur qui a été cliqué comme si:

Hely hely = helyMap.get(marker.getId()); Intent intent = new Intent(getApplicationContext(), HelyDetailActivity.class); intent.putExtra(ListActivity.HELY_NEV_EXTRA, hely.getHelynev()); // ... other intent code ... // startActivity(intent);

+0

Merci, je voulais juste poster que j'ai trouvé la solution :) c'était la même, mais merci quand même maintenant tu me fait en sorte que je suis sur la bonne voie :) – kocsisur