Android群集和标记点击 [英] Android cluster and marker clicks
问题描述
我在地图上使用android集群实用程序,并为mClusterManager.setOnClusterItemClickListener()成功实施了一个onclick监听器,用于聚类库处理的所有标记。
因为我还希望某些标记始终是非集群的,所以我还添加了一些标记而不使用mClusterManager,但直接使用了地图的mMap.addMarker(),这样我就可以确定它们从未聚集在地图上。
我的问题是我无法拦截那些标记点击(总是非聚集点),因为我已经使用mMap.setOnMarkerClickListener(mClusterManager)来处理点击的群集标记。
有没有办法监听点击的聚集标记和点击标记未被聚类库处理?
或者有没有一种方法可以指定集群管理器永远不会聚集一些标记?在这种情况下,我将不必处理那些不同的点击监听器,因为所有标记都将使用群集实用程序显示。
谢谢
您可以创建一个新的 MarkerManager
,并将其传递到 ClusterManager code>构造函数。然后使用
MarkerManager#newCollection
创建一个新的Marker集合,并使用 MarkerManager.Collection#addMarker
方法。
$ b 然后,不要调用 mMap.setOnMarkerClickListener(mClusterManager)
,而是调用 mMap.setOnMarkerClickListener(mMarkerManager)
,它会处理将 Marker
点击事件转发给适当的监听器。您还需要使用 MarkerManager.Collection#setOnMarkerClickListener(GoogleMap.OnMarkerClickListener markerClickListener)
函数为普通标记设置onMarkerClick侦听器。
我建议您查看 MarkerManager 和 ClusterManager 类,以更好地了解这些类如何交互。
I'm using the android clustering utility on a map and succesffuly implemented an onclick listener with mClusterManager.setOnClusterItemClickListener() for all the markers handled by the clustering library.
Because I also want some markers to always be unclustered, I also add some markers without using the mClusterManager but directly using the map's mMap.addMarker(), this way I'm sure that they are never clustered on the map.
My problem is that I cannot intercept clicks on those markers (the always unclustered ones) because I already used mMap.setOnMarkerClickListener(mClusterManager) to handle the clicked clusters' markers.
Is there a way to listen to the clicked clustered markers AND the clicked markers not handled by the clustering library ?
Or is there a way to specify the cluster manager to never cluster some markers ? In this case I won't have to handle those different click listener since all markers would be shown using the clustering utility.
Thank you
You can create a new MarkerManager
that you pass into the ClusterManager
constructor. Then make a new Marker collection using MarkerManager#newCollection
and add your normal Markers to the map using the MarkerManager.Collection#addMarker
method.
Then, instead of calling mMap.setOnMarkerClickListener(mClusterManager)
, call mMap.setOnMarkerClickListener(mMarkerManager)
, and it will handle forwarding your Marker
click events to the proper listeners. You'll also need to set up your onMarkerClick listener for normal Markers with the MarkerManager.Collection#setOnMarkerClickListener(GoogleMap.OnMarkerClickListener markerClickListener)
function.
I recommend looking over the source of the MarkerManager and ClusterManager classes to get a better idea of how the classes interact.
这篇关于Android群集和标记点击的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!