如何在集群管理器中的标记中调用showinfowindow()?

时间:2016-04-27 23:52:01

标签: android google-maps markerclusterer

我正在使用群集中的标记(谷歌地图),在调用onclick方法时显示信息窗口没有问题。 问题是我无法像在标记上那样使用方法showInfoWindow()来打开信息而不给出点击。

当我使用标记

marker = map.addMarker(new MarkerOptions()
                    .position(position)
                    .snippet(info));
然后我打电话给

marker.showInfoWindow();

我如何使用集群管理器中地图上的标记(ClusterItem)来做同样的事情?

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

这是我想要显示infoWindow的标记 enter image description here

1 个答案:

答案 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()对象。