如何在Google地图中为clusterer中的标记设置我自己的图标

时间:2014-05-14 15:08:47

标签: android google-maps markerclusterer

我正在使用GoogleMaps群集。我有4种不同类型的标记,每种标记从一个抽象类扩展,每个标记都有自己的图标,并在MarkerOptions字段中定义。我将ClusterManager用于此抽象类。 当我只使用

//marker is instance of one of extended classes and has abstract class type
clusterManager.addItem(marker);

群集后,它将图标设置为默认值。我怎么解决这个问题?我试图使用这样的东西:

//marker is abstract marker, getMarker returns the MarkerOptions of this marker
clusterManager.getMarkerCollection().addMarker(marker.getMarker());

但它也不起作用,标记在地图上打印了所需的图标,但没有聚类。

我应该在我的抽象类中创建一些创建方法,还是有一些方法可以从DefaultClusterRenderer扩展?我没有使用谷歌或学习谷歌地图lib找到一些有关它的信息。

感谢您的帮助!

1 个答案:

答案 0 :(得分:23)

所以,这是我的愚蠢。再次,它表明,我应该更加关注,研究图书馆。如果有人有兴趣回答,这里是: 我猜对了,我需要覆盖DefaultClusterRenderer中的一些方法。所以,完整的方式: 创建自己的类并从DefaultClusterRenderer扩展它:

public class OwnIconRendered extends DefaultClusterRenderer<AbstractMarker>

然后覆盖方法 onBeforeClusterItemRendered

@Override
protected void onBeforeClusterItemRendered(AbstractMarker item,
        MarkerOptions markerOptions) {
    markerOptions.icon(item.getMarker().getIcon());
}

方式相当简单,但在我看来,聚类开始变慢。所以,这已经够了。