2016-04-27 67 views
3

我正在使用羣集中的標記(谷歌地圖),我在調用onclick方法時顯示信息窗口沒有問題。 問題是,我無法找到如何使用方法showInfoWindow(),因爲我在標記上打開信息而不點擊。如何在羣集管理器中的標記中調用showinfowindow()?

當我使用一個標記

marker = map.addMarker(new MarkerOptions() 
        .position(position) 
        .snippet(info)); 

然後我打電話

marker.showInfoWindow(); 

我該怎麼做一個標記(ClusterItem)是羣集管理器中的地圖上的一樣嗎?

MarkCluster cluster = new MarkCluster(Lat, Lon, info); 
mClusterManager.addItem(cluster); 

這是我想說明的信息窗口 enter image description here

+0

您是否在詢問如何獲取由ClusterRenderer添加到地圖的標記的引用? (即獲得對放大集羣后添加的標記的引用) –

+0

是的,如果我得到引用,我可以調用infowindow。我一直在閱讀和尋找,但找不到方法。 – robertDraven

+0

應該能夠使用'mClusterManager.getMarkerCollection()。getMarkers()',但您需要瀏覽列表以獲取您正在查找的Marker引用。 –

回答

5

試試這個標記,它是我做得到引用地圖標記使用羣集時:

當你創建一個ClusterManager它如果您不調用.setRenderer()方法並將其傳遞給您自己的ClusterRenderer實現的實例,則始終創建並使用DefaultClusterRenderer的實例。如果你讓ClusterManager創建自己的DefaultClusterRenderer關鍵是要增加它明確,這樣就可以保持對它的引用(因爲ClusterManager沒有getter方法,讓你可以在ClusterRenderer其使用參考):

mClusterManager = new ClusterManager<ClusterItem>(getActivity(), mMap); 
mRenderer = new DefaultClusterRenderer(getActivity(), mMap, mClusterManager); 
mClusterManager.setRenderer(mRenderer); 
mClusterManager.addItem(ClusterItem); 

然後,當您需要訪問某個標記時,將ClusterRenderer與該標記相關聯的ClusterItem。該ClusterItem你用找到的標記將是ClusterItem你傳遞給ClusterManager到標記添加到原來的集羣:

Marker marker = mRenderer.getMarker(ClusterItem); 
if(marker != null){ 
    marker.showInfoWindow(); 
} 

Marker對象將是無效的,如果標記還沒有被呈現在地圖上還所以一定要在使用它之前檢查標記對象是否爲空。

如果你有一定的標記已被放置在地圖上,當你調用.getMarker()和標記仍然是null,則覆蓋.equals()方法 對象中的使用來實現ClusterItem接口,以確保您能夠找到正確ClusterItem對象由渲染者持有。

+0

謝謝你。這正是我所期待的。我的錯誤是我正在查看ClusterManager ..我只想強調,如果還沒有渲染(mRenderer),標記將始終返回null。 所以一旦onClusterItemRendered方法被執行,我得到標記 – robertDraven

+0

我最近有同樣的問題,所以我很高興我能夠幫助你。 –

相關問題