android 如何在普通标记和集群标记之间创建单独的标记点击监听器

How to make separate marker click listener between normal marker and cluster marker in android

我有一些普通的标记和簇标记。 googleMap.setOnMarkerClickListener(mClusterManager) 监听器覆盖到普通标记监听器和普通标记点击不起作用。所以,我想分别处理两个标记点击。

ClusterManager 对此有单独的方法:

setOnClusterItemClickListener 处理Marker 点击

setOnClusterClickListener 处理Cluster 点击

MarkerCluster都是地图上的标记。您指定 ClusterManager 将通过 googleMap.setOnMarkerClickListener(mClusterManager).

管理标记点击

现在您需要为 ClusterManager

设置 setOnClusterItemClickListenersetOnClusterClickListener

示例

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
    }
});

Documentation

中查看更多

我从

得到了解决方案

普通标记

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

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

  3. 创建普通标记

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

将普通标记添加到 "normalMarkersCollection"

normalMarkersCollection.addMarker(markerOptions)
  1. 设置点击为普通标记。

    normalMarkersCollection.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener { public boolean onMarkerClick(marker: Marker) { // NORMAL MARKER CLICKED! return false; } });

对于集群标记

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
    }
});