我有一个巨大的标记列表要显示在我的地图片段上。我实现了一个ClusterManager来提高性能,并且除了某种情况之外它运行良好:当用户放大时,屏幕上的集群不会显示标记(没有性能问题),但是当用户缩小时(由于密度)标记)大量的屏幕外标记已经非聚集,尽管在用户缩小时存在聚类,但存在性能问题。
无论如何都要打击这种情况?
我尝试在(下面)实现一个Viewport Marker Management工作,其中onCameraChange从ClusterManager清除ClusterItems然后添加可见区域给出的latLngBound内的ClusterItems。这使性能变差。
private void setUpClusterer() {
mClusterManager = new ClusterManager<Crag>(this, mainGoogleMap){
@Override
public void onCameraChange(CameraPosition cameraPosition) {
super.onCameraChange(cameraPosition);
LatLngBounds bounds = mainGoogleMap.getProjection().getVisibleRegion().latLngBounds;
mClusterManager.clearItems();
for(Crag c : crags){
if (bounds.contains(c.getPosition())){
mClusterManager.addItem(c);
}
}
}
};
mainGoogleMap.setOnCameraChangeListener(mClusterManager);
mainGoogleMap.setOnMarkerClickListener(mClusterManager);
}