[英]How to make separate marker click listener between normal marker and cluster marker in android
I have some normal marker as well as cluster marker.我有一些普通标记和集群标记。 googleMap.setOnMarkerClickListener(mClusterManager) listener override to normal marker listener and normal marker click not working. googleMap.setOnMarkerClickListener(mClusterManager) 侦听器覆盖到正常标记侦听器和正常标记单击不起作用。 So, i want to handle both marker click separately.所以,我想分别处理两个标记点击。
ClusterManager
have separate methods for this: ClusterManager
有单独的方法:
setOnClusterItemClickListener
handles on Marker
click setOnClusterItemClickListener
处理Marker
单击
setOnClusterClickListener
handles on Cluster
click setOnClusterClickListener
处理Cluster
点击
Both Marker
and Cluster
are markers on map. Marker
和Cluster
都是地图上的标记。 You specify that your ClusterManager
will manage on markers clicks via googleMap.setOnMarkerClickListener(mClusterManager)
.您指定ClusterManager
将通过googleMap.setOnMarkerClickListener(mClusterManager)
管理标记点击。
And now you need to set setOnClusterItemClickListener
and setOnClusterClickListener
for ClusterManager
现在您需要为ClusterManager
设置setOnClusterItemClickListener
和setOnClusterClickListener
Sample样本
googleMap.setOnMarkerClickListener(mClusterManager)
mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<ClusterItemClass>(){
@Override
public boolean onClusterClick(Cluster<ClusterItemClass> cluster) {
//logic for handle on cluster click
}
});
mClusterManager.OnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<ClusterItemClass>(){
@Override
public boolean onClusterItemClick(ClusterItemClass item) {
//logic for handle on cluster item click
}
});
Checkout more in Documentation在文档中查看更多信息
I got solution From How to manage click on marker which is not in Cluster in Android Google Map API?我从如何管理 Android Google Map API 中不在集群中的标记上获得解决方案?
For Normal Marker对于正常标记
googleMap.setOnMarkerClickListener(mClusterManager.getMarkerManager());
MarkerManager.Collection normalMarkersCollection = mClusterManager.getMarkerManager().newCollection();
Create a normal marker创建一个普通标记
MarkerOptions markerOptions = MarkerOptions() .position(new LatLng(...)) .title("Title") .snippet("Description")
Add Normal marker into "normalMarkersCollection"将 Normal 标记添加到“normalMarkersCollection”中
normalMarkersCollection.addMarker(markerOptions)
Set click for normal marker.为普通标记设置点击。
normalMarkersCollection.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener { public boolean onMarkerClick(marker: Marker) { // NORMAL MARKER CLICKED! return false; } });
For Cluster Marker对于集群标记
mClusterManager.setOnClusterClickListener(new ClusterManager.OnClusterClickListener<ClusterItemClass>(){
@Override
public boolean onClusterClick(Cluster<ClusterItemClass> cluster) {
//logic for handle on cluster click
}
});
mClusterManager.OnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<ClusterItemClass>(){
@Override
public boolean onClusterItemClick(ClusterItemClass item) {
//logic for handle on cluster item click
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.