試試這個標記,它是我做得到引用地圖標記使用羣集時:
當你創建一個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
對象由渲染者持有。
您是否在詢問如何獲取由ClusterRenderer添加到地圖的標記的引用? (即獲得對放大集羣后添加的標記的引用) –
是的,如果我得到引用,我可以調用infowindow。我一直在閱讀和尋找,但找不到方法。 – robertDraven
應該能夠使用'mClusterManager.getMarkerCollection()。getMarkers()',但您需要瀏覽列表以獲取您正在查找的Marker引用。 –