Android Google Maps API v2 onInfoWindowClick löst beim Erstellen der Aktivität alle Listener aus

Hallo, ich habe eine Karte mit vielen Markierungen. Wenn ich die Markierungen zur Karte hinzufüge, möchte ich einen onInfoWindowClick Listener zu jedem Marker mit individuellen Daten hinzufügen. Ich möchte mit dem onInfoWindowClick-Listener ein ActiveX mit Informationen des Markers laden.

Der Code funktioniert nicht korrekt. Wenn der Aktivator erstellt wird, werden alle Listener gleichzeitig ausgelöst und wenn ich auf das InfoWindow klicke, passiert nichts.

private void addMarkerToMap(double lat, double lng, String eventTitle,
            String eventDiscribtion) {
        Marker currentMarker = myMap.addMarker(new MarkerOptions()
                .position(new LatLng(lat, lng)).title(eventTitle)
                .snippet(eventDiscribtion));

        onInfoWindowClick(currentMarker);
    }

    @Override
    public void onInfoWindowClick(Marker marker) {

            Intent nextScreen = new Intent(MapsActivity.this,
                    EventActivity.class);
            nextScreen.putExtra("userId", "" + userId);
            nextScreen.putExtra("eventId", "" + eventId);

            startActivityForResult(nextScreen, 0);

    }
1
nl ja ru

2 Antworten

Sie würden das Onclick-Verhalten in Ihrem GoogleMap-Objekt (myMap) implementieren

myMap.setOnInfoWindowClickListener(
  new OnInfoWindowClickListener(){
    public void onInfoWindowClick(Marker marker){
      Intent nextScreen = new Intent(MapsActivity.this,EventActivity.class);
        nextScreen.putExtra("userId", "" + userId);
        nextScreen.putExtra("eventId", "" + eventId);

        startActivityForResult(nextScreen, 0);
    }
  }
)
7
hinzugefügt
@DotProductSoft Hallo Ich mache die gleiche Vorgehensweise ... hier ist mein Code
hinzugefügt der Autor Rakesh Gondaliya, Quelle
Danke, das funktioniert, ich habe es in diesem Moment gefunden, aber jetzt habe ich ein anderes Problem. Die Zuhörer haben keine Möglichkeit mit individuellen Daten zu erstellen. Ich bekomme nur die letzten Marker Informationen in jedem Marker.
hinzugefügt der Autor King Luy, Quelle
Ich hatte dieses Problem überwunden, indem ich die Marker in einer Hashmap hinterlegte, die auf Aktivitätsebene definiert war. Auf diese Weise kann ich, wenn der Listener aufgerufen wird, das zugeordnete Objekt abrufen: MyObject obj = myHashMap.get (marker);
hinzugefügt der Autor RorschachDev, Quelle

check out this post about how to associate information or objects to markers: http://bon-app-etit.blogspot.be/2012/12/add-informationobject-to-marker-in.html

2
hinzugefügt