Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ClusterManager性能-防止对越界群集取消群集_Android_Performance_Google Maps_Google Maps Api 3_Google Maps Markers - Fatal编程技术网

Android ClusterManager性能-防止对越界群集取消群集

Android ClusterManager性能-防止对越界群集取消群集,android,performance,google-maps,google-maps-api-3,google-maps-markers,Android,Performance,Google Maps,Google Maps Api 3,Google Maps Markers,我有一个巨大的标记列表要显示在我的地图片段上。我实现了一个ClusterManager来提高性能,它在某些情况下工作得很好:当用户放大时,屏幕上的群集将取消聚集以显示标记(没有性能问题),但当用户缩小时(由于标记的密度)大量屏幕外标记已取消聚类,尽管用户缩小时进行了聚类,但仍存在性能问题 有没有办法对付这种情况 我尝试实现一个视口标记管理解决方案(如下所示),其中一旦更改集群,集群项将从集群管理器中清除,然后添加位于可见区域提供的latLngBound内的集群项。这使得性能更差 priv

我有一个巨大的标记列表要显示在我的地图片段上。我实现了一个ClusterManager来提高性能,它在某些情况下工作得很好:当用户放大时,屏幕上的群集将取消聚集以显示标记(没有性能问题),但当用户缩小时(由于标记的密度)大量屏幕外标记已取消聚类,尽管用户缩小时进行了聚类,但仍存在性能问题

有没有办法对付这种情况

我尝试实现一个视口标记管理解决方案(如下所示),其中一旦更改集群,集群项将从集群管理器中清除,然后添加位于可见区域提供的latLngBound内的集群项。这使得性能更差

    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);
}
private void setupcluster(){
mClusterManager=newclustermanager(这个,主要是谷歌地图){
@凌驾
CameraChange上的公共无效(CameraPosition CameraPosition){
super.onCameraChange(摄像机定位);
LatLngBounds bounds=mainGoogleMap.getProjection().getVisibleRegion().LatLngBounds;
mClusterManager.clearItems();
用于(岩壁c:岩壁){
if(bounds.contains(c.getPosition())){
mClusterManager.addItem(c);
}
}
}
};
主要谷歌地图。SetonCamerachenglistener(McClusterManager);
setOnMarkerClickListener(mClusterManager);
}

Hi,我遇到了同样的问题,在小范围内有大约10k个集群项目。我想知道你是否已经找到了这个问题的解决方案,并愿意与大家分享。@KasparTr我有一个类似的问题,你已经解决了吗?@CeccoCQ从技术上讲没有。我从业务角度“解决”了这个问题,默认情况下过滤标记,让用户随意选择显示更多/更少。过滤时,使用原语集以提高性能。我所做的是组成一个过滤集群项列表。然后仅通过执行.clear()和.add()(批量添加列表)来使用Clustermanager。另外,我建议使用sqlLight,只从数据库中获取带有LatLngBounds的标记。我想知道你是否已经找到了这个问题的解决方案,并愿意与大家分享。@KasparTr我有一个类似的问题,你已经解决了吗?@CeccoCQ从技术上讲没有。我从业务角度“解决”了这个问题,默认情况下过滤标记,让用户随意选择显示更多/更少。过滤时,使用原语集以提高性能。我所做的是组成一个过滤集群项列表。然后仅通过执行.clear()和.add()(批量添加列表)来使用Clustermanager。除此之外,我建议使用sqlLight,只从数据库中获取带有LatLngBounds的标记。