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

rob*_*ven 3 android google-maps markerclusterer

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

当我使用标记时

marker = map.addMarker(new MarkerOptions()
                    .position(position)
                    .snippet(info));
Run Code Online (Sandbox Code Playgroud)

然后我打电话

marker.showInfoWindow();
Run Code Online (Sandbox Code Playgroud)

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

MarkCluster cluster = new MarkCluster(Lat, Lon, info);
mClusterManager.addItem(cluster);
Run Code Online (Sandbox Code Playgroud)

它是我想要显示infoWindow的标记 在此输入图像描述

Kev*_*eil 8

试试这个,这是我在使用群集时获取地图标记引用的方法:

当您创建ClusterManager它时,它始终创建并使用DefaultClusterRenderer如果您不调用该.setRenderer()方法的实例,并将其传递给您自己的ClusterRenderer实现的实例.如果你让ClusterManager创建它自己DefaultClusterRenderer的关键是明确地添加它,以便你可以保持对它的引用(因为ClusterManager没有getter方法所以你可以获得ClusterRenderer对它的使用的引用):

mClusterManager = new ClusterManager<ClusterItem>(getActivity(), mMap);
mRenderer = new DefaultClusterRenderer(getActivity(), mMap, mClusterManager); 
mClusterManager.setRenderer(mRenderer); 
mClusterManager.addItem(ClusterItem);  
Run Code Online (Sandbox Code Playgroud)

然后,当你需要访问标记经过ClusterRendererClusterItem与标记关联.在ClusterItem您使用找到的标记将是ClusterItem你传递给ClusterManager到标记添加到原来的集群:

Marker marker = mRenderer.getMarker(ClusterItem);
if(marker != null){
    marker.showInfoWindow();
}
Run Code Online (Sandbox Code Playgroud)

Marker如果尚未在地图上渲染标记,则该对象将为null,因此请务必在使用之前检查标记对象是否为空.

如果您确定在调用时标记已放置在地图上.getMarker()且标记仍为null,则覆盖.equals()对象用途中的方法以实现ClusterItem接口,以确保您可以找到ClusterItem呈现器保持的正确对象.