2016-08-12 1 views
0

Ich habe einige Google Maps Marker (10) mit Info-Fenster. Durch Klicken auf ein Infofenster sollte eine neue Aktivität gestartet werden und ein Wert sollte über intent.put extra() übertragen werden: Mein Problem ist, dass immer der Wert des letzten Markers auf die nächste Aktivität übertragen wird, obwohl ich auf eine andere Info klicke Fenster, in diesem Fall ist es 101010. Mein Code:Android Google Maps, mehrere Absichten

Marker marker1 = map.addMarker(new MarkerOptions() 
        .title(itemList.get(1)) 
        .icon(BitmapDescriptorFactory.fromResource(getDrawableId(imagename))) 
        .position(new LatLng(Double.parseDouble(itemList.get(2)), Double.parseDouble(itemList.get(3)))) 

      ); 



      System.out.println("MoID=" + monsterid1); 
      map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
       @Override 
       public void onInfoWindowClick(Marker marker1) { 
        Intent intent1 = new Intent(showmap.this, MonsterDetail.class); 
        intent1.putExtra("monsterid", monsterid); //value i want to transfer to next activity e.g "111" 
        startActivity(intent1); 


       } 
      }); 


Marker marker2 = map.addMarker(new MarkerOptions() 
        .title(itemList.get(5)) 
        .icon(BitmapDescriptorFactory.fromResource(getDrawableId(imagename))) 
        .position(new LatLng(Double.parseDouble(itemList.get(6)), Double.parseDouble(itemList.get(7)))) 

      ); 



      System.out.println("MoID=" + monsterid1); 
      map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
       @Override 
       public void onInfoWindowClick(Marker marker2) { 
        Intent intent2 = new Intent(showmap.this, MonsterDetail.class); 
        intent2.putExtra("monsterid", monsterid2); //value i want to transfer to next activity e.g. "222" 
        startActivity(intent2); 


       } 
      }); 

Marker marker10 = map.addMarker(new MarkerOptions() 
... 
... 
... 
intent10.putExtra("monsterid", monsterid10); //value i want to transfer to next activity e.g. "101010" 

Antwort

1

die OnInfoWindowClickListener ist für die Karte, nicht der Marker. Also, Ihre aktuellen Code ist:

  • Erstellen eines OnInfoWindowClickListener

  • andere OnInfoWindowClickListener Erstellen, die vorherige

  • Wegwerfen und so weiter

Anruf setOnInfoWindowClickListener()einmal. In onInfoWindowClick() übergeben Sie eine Marker, die darstellt, worauf der Benutzer geklickt hat. Mit diesem Marker, bestimmen Sie den Wert des Extra in Ihre Intent zu setzen. Zum Beispiel hat IIRC, Marker eine getId() Methode, so dass Sie eine HashMap<String, String> Mapping-Marker-IDs zu zusätzlichen Werten haben könnten, wobei Sie in onInfoWindowClick() den Wert für den angeklickten Marker nachschlagen.

+0

Vielen Dank! Problem gelöst :) – AndreasK