如何解决根据当前缩放更改ClusterRadius
我正在尝试找到一种方法来根据当前缩放比例更改聚类半径。
我想要的是在较高的缩放级别上比在较低的缩放级别上更少的聚类,这是我要实现的目标,但是它不能很好地工作,缺少某些东西或做错了...
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;
}
},});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。