0

Ich versuche eine Map mit einigen Markern zu erstellen, die ein Infolabel mit einem Bild und einer Textansicht haben sollten. Ich habe bereits gelöst, dass der Text jedes Infolabel anders ist, aber ich kämpfe mit der Bildansicht.Marker CustomInfoWindow Imageview überschreibt alle anderen Bilder

Wenn ich hinzufügen, einen neuen Marker meine App das neue Bild ein legt es in jedem Infofenster, die ...

Hier existiert nimmt, ist mein CodeSnippet, wo ich den Wert der Image- und Textview gesetzt:

public class CustomInfoWindowAdapter implements GoogleMap.InfoWindowAdapter { 

    private Activity context; 

    public CustomInfoWindowAdapter(Activity context){ 
     this.context = context; 
    } 

    @Override 
    public View getInfoWindow(Marker marker) { 
     return null; 
    } 

    @Override 
    public View getInfoContents(Marker marker) { 
     boolean imageGeandert = false; 
     View view = context.getLayoutInflater().inflate(R.layout.custom_infowindow, null); 

     TextView tvTitle = (TextView) view.findViewById(R.id.nameTxt); 
     TextView tvSubTitle = (TextView) view.findViewById(R.id.addressTxt); 


     tvTitle.setText(marker.getTitle()); 
     tvSubTitle.setText(marker.getSnippet()); 

      ImageView imageView = (ImageView) view.findViewById(R.id.clientPic); 
      imageView.setImageResource(R.mipmap.logo); 
      Log.d("Loka2", String.valueOf(MapsActivity.iconFinalFinal2)); 


     return view; 
    } 

} 

Die Log.d Output sieht wie folgt aus:

* 12-19 21: 36: 25.315 bis 25.315 14,499/com.example.yannick.mapdemo D/Lokale Bitmap:

[email protected]

12-19 21: 36: 25.315 bis 25.315 14,526/com.example.yannick.mapdemo D/Loka2: [email protected]

12-19 21: 36: 25.315 bis 25.315 14,672/com.example .yannick.mapdemo D/Lokale Bitmap: [email protected]

12-19 21: 36: 14,682 25315-25315/com.beispiel.yannick.mapdemo D/Loka2: [email protected]

12-19 21: 36: 25.315 bis 25.315 14,844/com.example.yannick.mapdemo D/Lokal Bitmap: [email protected]

12-19 21: 36: 14,854 25.315-25.315 /com.example.yannick.mapdemo D/Loka2: andro [email protected]

12-19 21: 36: 25.315 bis 25.315 14,948/com.example.yannick.mapdemo D/Loka2: [email protected]

12-19 21: 36: 15.014 25315-25315/com.beispiel.yannick.mapdemo D/Loka2: [email protected]

12-19 21: 36: 15.062 25315-25315/com.beispiel.yannick.mapdemo D/Loka2: [email protected]*

Die letzte für jede bestehende Infofenster genommen und ich weiß nicht, warum ....

+0

Sie müssen nur jede Markierung auf einem Bild-ID auf der Karte, und diese Karte verwenden, um zu bestimmen, welche Bildressource in 'getInfoContents zu verwenden()'. Sie könnten eine 'HashMap ' verwenden. –

+0

danke für deine antwort, kannst du mir ein kurzes beispiel geben, wie das gemacht wird? – Yannick

Antwort

0

Sie müssen nur jeden Marker einer Image-ID zuordnen und anhand dieser Map bestimmen, welche Image-Ressource in getInfoContents() verwendet werden soll.

Zunächst definieren die Karte als Instanzvariable:

Map<Marker, Integer> mMarkerMap = new HashMap<>(); 

Dann diese Karte füllen, wenn eine Markierung auf der Karte hinzugefügt wird:

public void addMarker(LatLng latLng, String title, String snippet, int imageID) { 

    MarkerOptions markerOptions = new MarkerOptions() 
     .position(latLng) 
     .title(title) 
     .snippet(snippet); 
    Marker marker = mGoogleMap.addMarker(markerOptions); 

    mMarkerMap.put(marker, imageID); 
} 

Sie die oben beschriebene Methode wie folgt aufrufen können:

LatLng latLng = new LatLng(37.7244502,-122.4703867); 
String title = "title"; 
String snippet = "snippet"; 
addMarker(latLng, title, snippet, R.mipmap.logo); 

ändern Sie dann Ihre InfoWindowAdapter, um die entsprechende Ressource zu nutzen fo r das Infofenster eines spezifischen Marker:

public class CustomInfoWindowAdapter implements GoogleMap.InfoWindowAdapter { 

    private Activity context; 

    public CustomInfoWindowAdapter(Activity context){ 
     this.context = context; 
    } 

    @Override 
    public View getInfoWindow(Marker marker) { 
     return null; 
    } 

    @Override 
    public View getInfoContents(Marker marker) { 
     boolean imageGeandert = false; 
     View view = context.getLayoutInflater().inflate(R.layout.custom_infowindow, null); 

     TextView tvTitle = (TextView) view.findViewById(R.id.nameTxt); 
     TextView tvSubTitle = (TextView) view.findViewById(R.id.addressTxt); 

     tvTitle.setText(marker.getTitle()); 
     tvSubTitle.setText(marker.getSnippet()); 

     ImageView imageView = (ImageView) view.findViewById(R.id.clientPic); 

     //get resource ID and set as image resource: 
     int resID = mMarkerMap.get(marker); 
     imageView.setImageResource(resID); 

     return view; 
    } 

} 
+0

danke für Ihre Hilfe, aber in CustomWindowInfoAdapter bekomme ich: "Kann nicht zu Symbol mMarkerMap" – Yannick

+0

lösen Aber ich habe es so gemacht, BIG DANKE !! – Yannick

Verwandte Themen