2016-07-23 4 views
-1

Ich arbeite an benutzerdefinierten Marker auf Google-Karte, aber ich habe nur einen Zweifel, warum Liste der Marker Details nicht in GoogleMap.InfoWindowAdapter kommen, denn wenn ich die Daten auf Standard-Marker zu diesem Zeitpunkt alle Daten zeigen perfekt zeigt.Warum in GoogleMap.InfoWindowAdapter Liste der Marker nicht funktioniert?

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

    double latitude = mStringLocation.getMerchants().get(i).getLocation().getLatitude(); 
    double longitude = mStringLocation.getMerchants().get(i).getLocation().getLongitude(); 

    final String name = mStringLocation.getMerchants().get(i).getName(); 

    LatLng latLng1 = new LatLng(latitude, longitude); 

    MarkerOptions markerOptions = new MarkerOptions(); 
    markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_icon)); 
    markerOptions.position(latLng1); 
    //markerOptions.title(name); 
    map.addMarker(markerOptions); 

    map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
    @Override 
    public View getInfoWindow(Marker marker) { 
      return null; 
    } 

    @Override 
    public View getInfoContents(Marker marker) { 

      View view = getActivity().getLayoutInflater().inflate(R.layout.map_marker_layout, null); 

      mNameTxt = (TextView) view.findViewById(R.id.name_txt); 

      Toast.makeText(getActivity(), "" + name, Toast.LENGTH_SHORT).show(); 

      mNameTxt.setText(name); 

      return view; 
     } 
    }); 

    map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
    @Override 
    public void onInfoWindowClick(Marker marker) { 
     Toast.makeText(getActivity(), "" + name, Toast.LENGTH_SHORT).show(); 
    } 
    }); 
} 

Aber wenn ich zu diesem Zeitpunkt Benutzerdefinierte Marker verwenden es, wenn Sie auf einen des Markers tippen, dann wird es den letzten Indexwert des Arrays zeigen.

Bitte gehen Sie freundlich meine Post durch und lassen Sie mich wissen, wenn Sie irgendeine Lösung haben.

+0

Sie haben keinen Code in Ihrer Frage, der zeigt, "wenn Sie auf einen der Marker tippen, dann wird der letzte Indexwert des Arrays angezeigt". – CommonsWare

+0

hey danke nothing simple on default marker wenn du auf einen Gegenstand tippst, wird es die Details anzeigen, aber wenn ich in GoogleMap.InfoWindowAdapter tue, wenn Sie auf einen der Artikel tippen, wird es den letzten Wert zeigen –

+0

Sie können eine einfachere Zeit bekommen Hilfe, wenn Sie Ihre Frage bearbeiten und den Code für "wenn Sie auf einen der Marker tippen, dann zeigt es den letzten Indexwert des Arrays". Ich würde vermuten, dass dies Ihre 'onInfoWindowClick()' Methode Ihres 'OnInfoWindowClickListener' ist. Sie können eine Beispielmethode namens 'onInfoWindowClick()' in [dieser Aktivität] sehen (https://github.com/commonsguy/cw-omnibus/blob/master/MapsV2/Popups/app/src/main/java/com/commonsware /android/mapsv2/popups/MainActivity.java) von [dieser Beispielanwendung] (https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/Popups). – CommonsWare

Antwort

0

Sie rufen setInfoWindowAdapter() mehrmals an. Sie müssen es nur einmal anrufen.

Ebenso rufen Sie setOnInfoWindowClickListener() mehrmals an. Sie müssen es nur einmal anrufen.

Verschieben Sie diese Anrufe außerhalb Ihrer Schleife. Verwenden Sie das Objekt Marker, das an getInfoContents() und onInfoWindowClick() übergeben wurde, um festzustellen, was Sie in diesen Methoden tun müssen. This sample app zeigt die Verwendung von Modellobjekten von getInfoContents() unter Verwendung eines HashMap, der durch die Marker ID codiert ist.