android - ClusterManager 为谷歌地图 v2 utils 的 ClusterItems 标记提供多种样式

标签 android android-maps-v2 marker markerclusterer android-maps-utils

我发现有一种方法可以更改 ClusterItem 渲染选项,以这种方式自定义它们:

clusterManager.setRenderer(new OwnIconRendered(getApplicationContext(), getMap(), clusterManager));

OwnIconRendered 应该扩展 DefaultClusterRenderer。

但是,它以一种样式更改了所有标记。对于不同的 ClusterItems,我需要不同的样式选项。 我已尝试在 clusterManager 集合中手动添加标记,但集群不起作用。

MarkerManager.Collection markerCollection = mClusterManager.getMarkerCollection();
for(MyMarker marker: markerList){
markerCollection.addMarker(getMarkerOptions(latLng, marker.getLabel(), marker.getType()));
}

最佳答案

我想通了。用不同的图标聚类效果很好。首先,我必须向实现 ClusterItem 的 ClusterMarker 类添加一些字段。

public class ClusterMarker implements ClusterItem {
private final LatLng latLng;
private MyMarker myMarker;

...
public void setMyMarker(MyMarker myMarker) {
    this.myMarker = myMarker;
}
}

MyMarker 类有一些关于样式标记、倾斜度和 ID 的信息。

在代码的后面,我只是通过这种方式向 ClusterManager 实例添加标记:

mClusterManager.addItem(clusterMarker);

在 OwnIconRendered 类中,我覆盖了所有标记样式发生的 onBeforeClusterItemRendered 方法,在 onClusterItemRendered 方法中,我向标记添加了标签,因此稍后我可以在点击事件时识别 map 上的标记.

public class OwnIconRendered extends DefaultClusterRenderer<ClusterMarker>  {
...
cunstructor
...

@Override
protected void onBeforeClusterItemRendered(ClusterMarker item, MarkerOptions markerOptions) {

    MyMarker myMarker = item.getMyMarker();

    markerOptions.icon(myMarker.getIcon());
    markerOptions.title(myMarker.getLabel());
    markerOptions.anchor(0.5f, 1);
    super.onBeforeClusterItemRendered(item, markerOptions);
}

@Override
protected void onClusterItemRendered(ClusterMarker clusterMarker, Marker marker) {
    marker.setTag(clusterMarker.getPlaceMarker().getItemId());
    super.onClusterItemRendered(clusterMarker, marker);
    clusterMarkerMap.put(marker, clusterMarker);
}
}

关于android - ClusterManager 为谷歌地图 v2 utils 的 ClusterItems 标记提供多种样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39394615/

相关文章:

Android BLE Scan 永远找不到设备

image-processing - HaarCascade(用于 OpenCV)识别标记

python - 如何更改 matplotlib 中误差线限制的标记符号?

android - 如何实现 Android 标记的拖放?

android - (android) 当屏幕宽度已满时,如何将继续的图像放在下一行?

android - 需要帮助在 godaddy 服务器中部署 oracle 数据库

android - 无需用户交互即可播放涟漪动画

android - 谷歌地图标记未显示

Android 谷歌地图在标记上长按/在标记上触摸带有运动事件

android - 如何为 android v2 map 创建发布 key