其他分享
首页 > 其他分享> > android – 如何在集群管理器中的标记中调用showinfowindow()?

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

作者:互联网

我正在使用群集中的标记(谷歌地图),在调用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

解决方法:

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

创建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将是您传递给ClusterManager以将标记最初添加到集群的ClusterItem:

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

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

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

标签:android,google-maps,markerclusterer
来源: https://codeday.me/bug/20190727/1555202.html