infoWindows Bild wird jetzt beim ersten Klick angezeigt, aber beim zweiten Klick funktioniert es

Mein Android nutzt die Google Map Android-API. InfoWindows Bild wird beim ersten Klick nicht angezeigt, funktioniert aber beim zweiten Klick.

Ich passe das infoWindow mit @

void setMapInfoWindow(){
    mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
        @Override
        public View getInfoWindow(Marker arg0) {
            return null;
        }

        @Override
        public View getInfoContents(Marker arg0) {
            View v = getLayoutInflater().inflate(R.layout.windowlayout, null);
            final ImageView img = (ImageView)v.findViewById(R.id.imageView3);
            //image
            Picasso.with(context).load("http://imgurl").resize(140, 
        }

    });
}

Hier ist mein Marker-Einrichtungsprozess

void setMarkers(){
    ...

    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject datas=jsonArray.getJSONObject(i);
        MarkerOptions tmp=new MarkerOptions()
                .title("name")
                .alpha(0.6f)
                .position(new LatLng(123,456));//replace LatLng with sample
        marker=mMap.addMarker(tmp);

    }
    ....
    setMapInfoWindow();
}

Nachdem ich die Einstellung des Markers abgeschlossen habe, rufe ich das @ ausetMapInfoWindow() Funktion.

Es funktioniert auf meinem Smartphone, aber wenn Sie zum ersten Mal auf das infoWindow klicken, wird das Bild nicht angezeigt. aber es zeigt beim zweiten Klick.

Ich teste für einige Fälle:

Ersetzen Sie das Web-Image durch ein lokales Image. Das Problem tritt weiterhin auf.speichere alle Marker in ArrayList, setze nach Abschluss des gesamten Prozesses alle Marker aufshowInfoWindow(), dann setze alle Marker aufhideInfoWindow(). Es funktioniert, aber es gibt ein infoWindow, das nicht geschlossen werden kann (das letzte). Ich versuche die Bitmap zu verwenden, um das Bild zu erhalten, aber es wird kein Bild angezeigt. Ich versuche viele Wege aus dem Stapelüberlauf. Aber es funktioniert, wenn Sie die Picasso-Bibliothek verwenden.

Vielen Dan

das Problem wurde gelöst durch: Es scheint, dass die Bild-URL des Google-Webdienstes beim Laden in eine andere URL geändert wird.

Beispiel

https: //maps.googleapis.com/maps/api/place/photo? photoreference =

it wird von Google in folgende URL geändert:

https: //lh4.googleusercontent.com ......

so ändere ich das boolesche not_first_time_showing_info_window auf int und rufe es dreimal zurück

    int not_first_time_showing_info_window=0;
    //show image
    try {
        if(not_first_time_showing_info_window==2){
            not_first_time_showing_info_window=0;
            Picasso.with(HomeActivity.this).load("http://....").resize(600,400).into(img);
        }
        else if (not_first_time_showing_info_window==1) {
            not_first_time_showing_info_window++;
            Picasso.with(HomeActivity.this).load("http://....").resize(600, 400).into(img,new InfoWindowRefresher(marker));
        }else if(not_first_time_showing_info_window==0){
            not_first_time_showing_info_window++;
            Picasso.with(HomeActivity.this).load("http://....").resize(600,400).into(img,new InfoWindowRefresher(marker));
        }
    } catch (Exception e) {
        img.setImageDrawable(null);
    }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage