我正在使用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找到一些有关它的信息。
感谢您的帮助!
答案 0 :(得分:23)
所以,这是我的愚蠢。再次,它表明,我应该更加关注,研究图书馆。如果有人有兴趣回答,这里是: 我猜对了,我需要覆盖DefaultClusterRenderer中的一些方法。所以,完整的方式: 创建自己的类并从DefaultClusterRenderer扩展它:
public class OwnIconRendered extends DefaultClusterRenderer<AbstractMarker>
然后覆盖方法 onBeforeClusterItemRendered :
@Override
protected void onBeforeClusterItemRendered(AbstractMarker item,
MarkerOptions markerOptions) {
markerOptions.icon(item.getMarker().getIcon());
}
方式相当简单,但在我看来,聚类开始变慢。所以,这已经够了。