2017-03-20 67 views
0

我開始與示例代碼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中設置圖像?

回答

0

我到目前爲止找到的唯一解決方案是事先加載位圖並將其存儲在緩存中,然後將位圖同步分配給infoview.imageView。 但這意味着我必須提前加載圖像。