问题描述
使用mapbox官网提供的例子Create and style clusters聚合显示大数据量。
使用clusterMaxZoom配置最大聚合层级,当配置一个较大层级,例如20级别时,还未到该层级就不聚合了
。
原因分析:
一、可以看到官网提供的代码如下:
map.addSource('earthquakes', {
type: 'geojson',
// Point to GeoJSON data. This example visualizes all M1.0+ earthquakes
// from 12/22/15 to 1/21/16 as logged by USGS' Earthquake hazards program.
data: 'https://docs.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson',
cluster: true,
clusterMaxZoom: 14, // Max zoom to cluster points on
clusterRadius: 50 // Radius of each cluster when clustering points (defaults to 50)
});
二、对于clusterMaxZoom的解释如下:
如果启用了群集,则对其进行群集的最大缩放。默认值为比最大缩放小一个缩放(这样最后一个缩放功能就不会聚集在一起)。集群将在整数缩放级别上重新评估,因此将clusterMaxZoom设置为14意味着集群将显示到z15。
那为什么clusterMaxZoom配置20则未到该层级就不聚合了呢?
三、查看源码
可以从代码中看见给添加的source设置了默认的maxzoom,但是取的是clusterMaxZoom与maxzoom-1的最小值。
那么默认的maxzoom是多少呢?如下maxzoom=18,所以说添加source的时候不配置maxzoom,当clusterMaxzoom>18时是不会生效的。
解决方案:
当想在一个比较大的层级(zoom>18)仍然聚合时,在修改clusterMaxzoom值的同时,也需要配置maxzoom
原因就是mapbox给聚合的source默认配置了最大级别为18。