我收到了一个包含Google Map和群集API的应用程序。
我正在添加ClusterItem
这样的内容:
MyClusterItem item = new MyClusterItem(optionMarkerToDraw);
clusterManager.addItem(item);
我有一个渲染器:
public class ClusterRenderer extends DefaultClusterRenderer<MyClusterItem>
{
public ClusterRenderer()
{
super(getActivity(), map, clusterManager);
}
@Override
protected void onBeforeClusterItemRendered(MyClusterItem item, MarkerOptions markerOptions)
{
markerOptions.icon(item.getIcon());
markerOptions.position(item.getPosition());
markerOptions.alpha(item.getAlpha());
}
@Override
protected void onBeforeClusterRendered(Cluster<MyClusterItem> cluster, MarkerOptions markerOptions)
{
super.onBeforeClusterRendered(cluster,markerOptions);
}
@Override
protected boolean shouldRenderAsCluster(Cluster<MyClusterItem> cluster)
{
//start clustering if at least 2 items overlap
return cluster.getSize() > 1;
}
}
当这些项目仍未分组到群集中时,它们在地图上显示正常,没有任何问题。
当项目被分组到群集中时,存在一个问题,即当放大和缩小地图时,会使群集移动到地图上的其他位置。
如何让群集在地图上保留其位置?
答案 0 :(得分:0)
似乎问题出在算法上。我在代码中有这一行:
clusterManager.setAlgorithm(new PreCachingAlgorithmDecorator<MGClusterItem>(new GridBasedAlgorithm<MGClusterItem>()));
这导致了这种行为。删除此行后,群集就像我预期的那样停留在原位。