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

How I can call showinfowindow() in a marker within cluster manager?

我正在集群中使用标记(google 地图),在调用 onclick 方法时显示信息 window 没有问题。 问题是我无法找到如何使用 showInfoWindow() 方法,就像我在标记上所做的那样,无需单击即可打开信息。

当我使用标记时

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

然后我打电话给

marker.showInfoWindow();

如何使用集群管理器中地图上的标记 (ClusterItem) 执行相同的操作?

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

这是我要显示信息窗口的标记

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

当您创建 ClusterManager 时,如果您不调用 .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);  

然后,当您需要访问标记时,将 ClusterRenderer 和与标记关联的 ClusterItem 传递给它。您用于查找标记的 ClusterItem 将是您传递给 ClusterManagerClusterItem 以将标记最初添加到集群:

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

如果标记尚未在地图上呈现,Marker 对象将为空,因此请务必在使用前检查标记对象是否为空。

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