我開始與示例代碼CurrentPlaceDetailsOnMap從這裏: CurrentPlaceDetailsOnMap定製信息視圖不顯示圖像
我改變了它添加圖像的信息視圖。然後我試圖加載圖像中的getInfoContents
@Override
public View getInfoContents(final Marker marker) {
// Inflate the layouts for the info window, title and snippet.
View infoWindow = getLayoutInflater().inflate(R.layout.custom_info_contents, (FrameLayout)findViewById(R.id.map), false);
TextView title = ((TextView) infoWindow.findViewById(R.id.title));
title.setText(marker.getTitle());
TextView snippet = ((TextView) infoWindow.findViewById(R.id.snippet));
snippet.setText(marker.getSnippet());
final ImageView imageView = ((ImageView) infoWindow.findViewById(R.id.image));
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Bitmap bitmap = getBitmap(MapsActivityCurrentPlace.this, R.drawable.my_bitmap;
imageView.setImageBitmap(bitmap);
}
});
return infoWindow;
}
在上面的代碼我用Handler
只以模擬當我通過調用Places.GeoDataApi.getPlacePhotos
異步加載圖像會發生什麼。 結果是沒有顯示圖像。 如果我稱之爲:
Bitmap bitmap = getBitmap(MapsActivityCurrentPlace.this, R.drawable.my_bitmap;
imageView.setImageBitmap(bitmap);
同步一切都很好。 它看起來像谷歌地圖緩存視圖創建整個視圖的圖像。來自文檔:
注意:繪製的信息窗口不是實時視圖。該視圖在返回時呈現爲圖像(使用View.draw(Canvas))。這意味着對視圖的任何後續更改都不會反映在地圖上的信息窗口中。稍後更新信息窗口(例如,在加載圖像後),請調用showInfoWindow()。此外,信息窗口不會考慮任何典型的普通視圖的交互性,例如觸摸或手勢事件。但是,您可以在整個信息窗口中收聽通用點擊事件,如下面的部分所述。
如何在InfoView中設置圖像?