简体   繁体   English

如何在android中的普通标记和集群标记之间制作单独的标记点击侦听器

[英]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. MarkerCluster都是地图上的标记。 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设置setOnClusterItemClickListenersetOnClusterClickListener

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对于正常标记

  1. googleMap.setOnMarkerClickListener(mClusterManager.getMarkerManager());

  2. MarkerManager.Collection normalMarkersCollection = mClusterManager.getMarkerManager().newCollection();

  3. Create a normal marker创建一个普通标记

    MarkerOptions markerOptions = MarkerOptions() .position(new LatLng(...)) .title("Title") .snippet("Description")

Add Normal marker into "normalMarkersCollection"将 Normal 标记添加到“normalMarkersCollection”中

normalMarkersCollection.addMarker(markerOptions)
  1. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM