【问题标题】:ClusterManager onMarkerClickListener for non-clustered markersClusterManager onMarkerClickListener 用于非聚集标记
【发布时间】:2017-10-04 14:04:00
【问题描述】:

我在 Android 中使用 Google 地图,其中包含大约 800 个我想要聚类的标记和 80 个我不想聚类的标记。

对于我想要集群的标记,我使用添加到 clusterManager 中

mClusterManager.addItem(annotation);

对于我不想聚类的标记,我直接将它们添加到 markerCollection

Marker marker = mClusterManager.getMarkerCollection().addMarker(annotation.getMarkerOptions());

这里annoation指的是AirMapMarker的一个实例,它是一个实现ClusterItem的自定义类

annotation 包含一个自定义信息,例如当用户点击标记时我需要使用的标识字符串。

问题是,我无法同时为集群和 mapMarker 注册 onClickListener。如果我这样做了,只会触发地图的 onMarkerClickListener。

map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
  public boolean onMarkerClick(Marker marker) {
    // Handle marker click fires correctly.
  }
}

mClusterManager.setOnClusterItemClickListener(new ClusterManager.OnClusterItemClickListener<AirMapMarker>(){
  public boolean onClusterItemClick(AirMapMarker marker) {
    // Doesn't Fire
  }
}

现在的问题是,在 onMarkerClick 内部,我需要访问作为 AirMapMarker 一部分的标识,以防标记单击发生在单个非聚集标记上。我想不出将Marker 映射到AirMapMarker 内部onMarkerClick 的方法。

我还尝试完全删除 map.setOnMarkerClickListener 并仅依赖 mClusterManager.setOnClusterItemClickListener。然而,现在的问题是,当标记点击发生在不属于集群的标记上时,onClusterItemClick 会使用参数null 触发。这是因为在向地图添加标记时,您提供的是 markerOptions 而不是 ClusterItem 对象。

ClusterManager 中有一个选项可以关闭集群,但这会在全局范围内发生,而不是针对特定标记。

有人帮助我或给我建议我下一步应该尝试什么?

【问题讨论】:

    标签: android google-maps google-maps-markers google-maps-android-api-2 markerclusterer


    【解决方案1】:

    我不知道我是否正确理解了你的问题。但这里有一个可能的解决方案。

    你想要集群的标记,你可以将它们添加到ClusterManager。 clusterManager.addItem(yourItem);

    您不想集群的那些,您可以将它们直接添加到您的 GoogleMap 对象中。 map.addMarker

    在您的 MarkerRenderer 中,您可以覆盖

    protected void onClusterItemRendered(YourClusterItem clusterItem, Marker marker)

    如果需要,将 yourClusterItem 映射到您的标记。或者你可以为你的标记设置一个标签,表明它是一个 clusterItem。

    public boolean onMarkerClick(Marker marker) 您可以检查您的标签(或您的地图),以使每种标记具有不同的行为。

    【讨论】:

      猜你喜欢
      • 2014-10-13
      • 1970-01-01
      • 2017-11-21
      • 1970-01-01
      • 2021-08-17
      • 2023-03-05
      • 2013-01-03
      • 2015-12-20
      • 2013-12-18
      相关资源
      最近更新 更多