2016-08-16 40 views
2

我有一個谷歌地圖V2和我setUpMap()方法,我附上的GoogleMap的infoWindowAdapter像這樣的GoogleMap:Android-連接InfoWindowAdapter與多個ClusterManagers

ClusterManager<OffersMarker> rentClusterManager = new ClusterManager<OffersMarker>(this, gmap); 
gmap.setInfoWindowAdapter(rentClusterManager.getMarkerManager()); 

有更多的代碼,但問題是這工作,我可以看到信息窗口,當我點擊標記。

因爲我有兩個ClusterManagers你我有一個問題:

ClusterManager<OffersMarker> rentClusterManager = new ClusterManager<OffersMarker>(this, gmap); 
ClusterManager<OffersMarker> saleClusterManager = new ClusterManager<OffersMarker>(this, gmap); 

gmap.setInfoWindowAdapter(rentClusterManager.getMarkerManager()); //<-- THIS DOESN'T WORK 
gmap.setInfoWindowAdapter(saleClusterManager.getMarkerManager()); //<-- ONLY THIS WORKS 

我的問題,我怎麼連接多個ClusterManager.getMarkerManager()來infoWindowAdapter設置?

隨着聽衆我使用MultiListener,但我還沒有找到一個MultiAdapter或類似的東西。

謝謝!

回答

1

您只能將一個InfoWindowAdapter設置爲GoogleMap對象。在你的情況下,它被覆蓋saleClusterManager.getMarkerManager()

但是作爲一個解決方法,你可以轉發呼叫到各自的集羣管理器。

gmap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() 
{ 
    @Override 
    public View getInfoWindow(Marker marker) 
    { 
     View view = rentClusterManager.getMarkerManager().getInfoWindow(marker); 
     if(view == null) 
      view = saleClusterManager.getMarkerManager().getInfoWindow(marker); 
     return view; 
    } 

    @Override 
    public View getInfoContents(Marker marker) 
    { 
     View view = rentClusterManager.getMarkerManager().getInfoContents(marker); 
     if(view == null) 
      view = saleClusterManager.getMarkerManager().getInfoContents(marker); 
     return view; 
    } 
}); 
+0

出於某種原因,對我而言,視圖永遠不爲空,所以同一個適配器不斷被調用... – gcolucci