我正在尝试实现 Google Maps Android Marker Clustering Utility。我遇到的问题是在最大缩放时重叠 ClusterItems。我对此的解决方案是:通过扩展 DefaultClusterRenderer 创建自定义渲染器。然后防止在最大缩放时进行聚类,然后在最大缩放时允许 ClusterItems 可拖动(否则不允许拖动)。
@Override
protected void onBeforeClusterItemRendered(MarkerList.Markers markers, MarkerOptions markerOptions) {
mImageView.setImageBitmap(getImage(markers));
Bitmap icon = mIconGenerator.makeIcon();
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(markers.getEntity().getPostType());
//allow user to drag overlapping ClusterItems to inspect individually
if(MAX_CAMERA_ZOOM <= cameraZoom){
markerOptions.draggable(true);
}else{
markerOptions.draggable(false);
}
}
@Override
protected boolean shouldRenderAsCluster(Cluster cluster) {
//Never render clusters at max zoom
if (MAX_CAMERA_ZOOM <= cameraZoom ) {
return false;
} else {
return cluster.getSize() > 2;
}
}
这将在我的手机上运行一段时间,然后集群停止并且拖动的 ClusterItems 变得永久,以便显示的 ClusterItems 的数量增加(同一项目的许多副本在地图上)。新拖动的 ClusterItems 是不可点击的,所以我认为它们只是没有被删除的图标。谁能帮我找到解决方案?我猜我需要在拖动后以编程方式删除拖动的图标。尽管对解决我的问题的任何建议将不胜感激。