clustermanager onmarkerclicklistener用于非簇标记



我正在使用Android中的Google Maps,其中约800个标记我想群集和80个标记,我不想群集。

对于我要群集的标记,我使用

添加到clustermanager
mClusterManager.addItem(annotation);

对于我不想群集的标记,我将它们直接添加到MarkerCollection

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

在这里annoation是指Airmapmarker的实例,该实例是实现ClusterItem

的自定义类

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

问题是,我无法为群集和MapMarker注册Onclicklistener。如果我这样做,只有地图的OnMarkerClickListener fires。

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的标识,如果标记单击发生在单个未簇的标记上,则需要访问AirMapmarker的一部分。我无法找到一种将Marker映射到onMarkerClick内的AirMapMarker的方法。

我还尝试完全删除map.setOnMarkerClickListener并仅依靠mClusterManager.setOnClusterItemClickListener。但是,现在问题在于,当标记单击发生在不属于群集的一部分的标记上时,onClusterItemClick用参数null发射。这是因为在地图上添加标记时,您提供标记物而不是簇位对象。

clustermanager内部有选项可以关闭聚类,但这在全球范围内发生,而不是针对特定标记。

有人帮助我或给我关于接下来应该尝试的建议?

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

您要群集的标记,您可以将它们添加到簇曼格。 clusterManager.addItem(yourItem);

您不想群集的

可以将它们直接添加到GoogleMap对象中。 map.addMarker

在您的Markerrenderer内部,您可以覆盖

protected void onClusterItemRendered(YourClusterItem clusterItem, Marker marker)

,如果需要,将您的clusteritem映射到标记。或者,您可以将标签设置为标记,表明它是簇。

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

相关内容

  • 没有找到相关文章

最新更新