La imagen de infoWindow ahora se muestra en el primer clic, pero funciona en el segundo clic

Mi Android utiliza la API de Android de Google Map, la imagen de InfoWindow no se muestra en el primer clic, pero funciona en el segundo clic

Personalizo la ventana de información usando

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, 
        }

    });
}

Aquí está mi proceso de configuración de marcador

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();
}

Después de completar la configuración del marcador, llamo alsetMapInfoWindow() función.

Funciona en mi teléfono inteligente, pero cuando hace clic en la ventana de información por primera vez, no muestra la imagen; pero se muestra cuando el segundo clic.

Pruebo para algunos casos:

reemplace la imagen web a imagen local, el problema aún ocurre.almacenar todos los marcadores en ArrayList, después de completar todo el proceso, establecer todos los marcadores enshowInfoWindow() , luego establezca todos los marcadores enhideInfoWindow(). Funciona, pero hay una ventana de información que no se puede cerrar (la última).Estoy tratando de usar el mapa de bits para obtener la imagen, pero al no mostrar la imagen, estoy intentando muchas formas desde stackoverflow. Pero funciona cuando se usa la biblioteca Picasso.

Gracias

El problema se resolvió mediante: parece que la URL de la imagen del servicio web de Google se cambiará a otra URL cuando se cargue.

ejemplo:

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

Google lo cambiará a la siguiente URL:

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

así que cambio el booleano not_first_time_showing_info_window a int y devuelvo la llamada tres veces

    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);
    }

Respuestas a la pregunta(1)

Su respuesta a la pregunta