ClusterManager性能 - 防止超出边界集群的集群

时间:2016-04-24 05:20:41

标签: android performance google-maps google-maps-api-3 google-maps-markers

我有一个巨大的标记列表要显示在我的地图片段上。我实现了一个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);
}

0 个答案:

没有答案