我正在使用群集中的标记(谷歌地图),在调用onclick方法时显示信息窗口没有问题。 问题是我无法像在标记上那样使用方法showInfoWindow()来打开信息而不给出点击。
当我使用标记
时marker = map.addMarker(new MarkerOptions()
.position(position)
.snippet(info));
然后我打电话给
marker.showInfoWindow();
我如何使用集群管理器中地图上的标记(ClusterItem)来做同样的事情?
MarkCluster cluster = new MarkCluster(Lat, Lon, info);
mClusterManager.addItem(cluster);
答案 0 :(得分:8)
试试这个,这就是我在使用群集时获取地图标记引用的方法:
当您创建ClusterManager
时,如果您不调用DefaultClusterRenderer
方法并将其传递给您自己的{{1},则它始终会创建并使用.setRenderer()
的实例实现。如果您让ClusterRenderer
创建自己的ClusterManager
,则关键是明确添加它,以便您可以保留对它的引用(因为DefaultClusterRenderer
没有getter方法所以您可以获得对其使用的ClusterManager
的引用:
ClusterRenderer
然后,当您需要访问标记时,会通过与标记关联的mClusterManager = new ClusterManager<ClusterItem>(getActivity(), mMap);
mRenderer = new DefaultClusterRenderer(getActivity(), mMap, mClusterManager);
mClusterManager.setRenderer(mRenderer);
mClusterManager.addItem(ClusterItem);
ClusterRenderer
。您用于查找标记的ClusterItem
将是您传递给ClusterItem
的{{1}},以便最初将标记添加到群集中:
ClusterItem
如果标记尚未在地图上呈现,则ClusterManager
对象将为null,因此请务必在使用之前检查标记对象是否为空。
如果您确定在拨打Marker marker = mRenderer.getMarker(ClusterItem);
if(marker != null){
marker.showInfoWindow();
}
时标记已放置在地图上且标记仍然为空,则覆盖Marker
方法
在对象中用于实现.getMarker()
接口,以确保您可以找到呈现器保持的正确.equals()
对象。