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