tio*_*oit 12 android google-maps android-maps-utils
我使用的是地图上的机器人聚集效用和succesffuly实现与mClusterManager.setOnClusterItemClickListener()一个onclick侦听由聚类库处理的所有标记.
因为我还想要一些标记总是非聚集的,我也添加一些标记而不使用mClusterManager但是直接使用地图的mMap.addMarker(),这样我确信它们永远不会聚集在地图上.
我的问题是我无法拦截那些标记上的点击(总是非集群的标记),因为我已经使用了mMap.setOnMarkerClickListener(mClusterManager)来处理点击的集群标记.
有没有办法收听点击的聚类标记和聚类库未处理的点击标记?
或者有没有办法指定集群管理器永远不会聚集一些标记?在这种情况下,我不必处理那些不同的点击侦听器,因为所有标记都将使用群集实用程序显示.
谢谢
Nas*_*eek 17
您可以创建一个MarkerManager传递给ClusterManager构造函数的新元素.然后MarkerManager#newCollection使用该MarkerManager.Collection#addMarker方法创建一个新的Marker集合并将正常的Markers添加到地图中.
然后,而不是呼叫mMap.setOnMarkerClickListener(mClusterManager),呼叫mMap.setOnMarkerClickListener(mMarkerManager),它将处理将您的Marker点击事件转发给适当的听众.您还需要使用该MarkerManager.Collection#setOnMarkerClickListener(GoogleMap.OnMarkerClickListener markerClickListener)函数为正常标记设置onMarkerClick侦听器.
我建议查看MarkerManager和ClusterManager类的源代码,以便更好地了解类的交互方式.
接收点击事件的另一种方法Marker是使用OnClusterItemClickListener界面.
打电话给mClusterManager.setOnClusterItemClickListener(this);你的班级实施OnClusterItemClickListener
然后在onClusterItemClick方法内部,您将获得ClusterItem,它是被单击的标记,
@Override
public boolean onClusterItemClick(ClusterItem clusterItem) {
Toast.makeText(getActivity(), "Latitude " + clusterItem.getPosition().latitude, Toast.LENGTH_LONG).show();
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8641 次 |
| 最近记录: |