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