问题描述
我正在尝试找到一种方法来根据当前缩放比例更改聚类半径。
我想要的是在较高的缩放级别上比在较低的缩放级别上更少的聚类,这是我要实现的目标,但是它不能很好地工作,缺少某些东西或做错了...
map.on('zoomend',function() {
var currentZoom = map.getZoom();
if (currentZoom > 9) {
return 20
} else {
return 80
}
});
var mcg = new L.MarkerClusterGroup({
chunkedLoading: true,maxClusterRadius: currentZoom,})
解决方法
-
您的
currentZoom
变量在地图zoomend事件的事件侦听器的内部范围内声明。您不能在该范围之外访问它。 -
更改分配给变量的原始值不会使所有其他分配相应地更新。但是,Leaflet.markercluster插件API确实提供了一种解决此用例的方法:不是为
maxClusterRadius
选项提供原始值,而是提供了返回给定地图缩放级别的半径的函数:
https://github.com/Leaflet/Leaflet.markercluster#other-options
您还可以使用接受当前地图缩放并返回最大簇半径(以像素为单位)的功能。
因此,您的情况:
L.markerClusterGroup({
chunkedLoading: true,maxClusterRadius: function (mapZoom) {
if (mapZoom > 9) {
return 20;
} else {
return 80;
}
},});