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);
解决方法:
试试这个,这是我在使用群集时获取地图标记引用的方法:
创建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