A imagem do infoWindow agora aparece no primeiro clique, mas funciona no segundo clique

Meu android usando a API android do mapa do Google, a imagem do InfoWindow não aparece no primeiro clique, mas funciona no segundo clique

Eu personalizo o infoWindow 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, 
        }

    });
}

Aqui está o meu processo de configuração do 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();
}

Depois de concluir a configuração do Marcador, ligo para osetMapInfoWindow() função.

Funciona no meu smartphone, mas quando você clica no infoWindow na primeira vez, ele não mostra a imagem; mas mostrando quando o segundo clique.

Eu testei em alguns casos:

substituir a imagem da web pela imagem local, o problema ainda ocorre.armazenar todos os marcadores em ArrayList, após todo o processo concluído, defina todos os marcadores parashowInfoWindow() , defina todos os marcadores parahideInfoWindow(). Funciona, mas há um infoWindow que não pode ser fechado (o final).Estou tentando usar o Bitmap para obter a imagem, mas não está mostrando a imagem, estou tentando várias maneiras de stackoverflow. Mas funciona ao usar a biblioteca Picasso.

obrigado

o problema resolvido por: parece que o URL da imagem do serviço web do google será alterado para outro URL durante o carregamento.

exemplo:

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

ele será alterado para o seguinte URL pelo google:

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

então mudo o booleano not_first_time_showing_info_window para int e retorno de chamada três vezes

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

questionAnswers(1)

yourAnswerToTheQuestion