微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据当前缩放更改ClusterRadius

如何解决根据当前缩放更改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,})

解决方法

  1. 您的currentZoom变量在地图zoomend事件的事件侦听器的内部范围内声明。您不能在该范围之外访问它。

  2. 更改分配给变量的原始值不会使所有其他分配相应地更新。但是,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 举报,一经查实,本站将立刻删除。