Javascript 传单——罐头盒';t在缩放时改变圆圈标记器上的半径

Javascript 传单——罐头盒';t在缩放时改变圆圈标记器上的半径,javascript,leaflet,mapbox,Javascript,Leaflet,Mapbox,我用它来可视化点数据,并试图根据缩放级别更改圆的半径 用户放大越大,半径越大 这是我到目前为止所拥有的 第一行设置初始半径: var damsRadius = 2; 然后我有一个zoomend事件来获取缩放级别,然后使用该缩放级别来确定新半径: map.on('zoomend', function(e) { var currentZoom = map.getZoom(); console.log("Current Zoom" + " " + currentZoom);

我用它来可视化点数据,并试图根据缩放级别更改圆的半径

用户放大越大,半径越大

这是我到目前为止所拥有的

第一行设置初始半径:

var damsRadius = 2;
然后我有一个zoomend事件来获取缩放级别,然后使用该缩放级别来确定新半径:

map.on('zoomend', function(e) {
    var currentZoom = map.getZoom();
    console.log("Current Zoom" + " " + currentZoom);
    if (currentZoom <= 6) {
        damsRadius = 2;
    } else {
        damsRadius = 6;
    }
    console.log("Dams Radius" + " " + damsRadius);
});
然后稍后使用
pointToLayer
将整个套件添加到地图:

pointToLayer: function (feature, latlng) {
    return L.circleMarker(latlng, damsStyle(feature));
} 
根据控制台,一切工作都很顺利。放大和缩小显示
damsRadius
的值正在按预期更改

但问题是,地图上点的半径没有改变。所以,在这一过程中,有些事情没有得到沟通

我用
L.circle
尝试了同样的技巧,但也没有奏效。每次更改缩放级别时,是否需要使用
clearLayers
功能和重画

这似乎有点过分


建议?

一旦
缩放更改,您需要重置样式

只需在
map.on('zoomend')
函数中添加以下行即可

timeline.setStyle(damsStyle)
你的函数是这样的

map.on('zoomend', function(e) {
    var currentZoom = map.getZoom();
    console.log("Current Zoom" + " " + currentZoom);
    if (currentZoom <= 6) {
      damsRadius = 2;
    } else {
    damsRadius = 6;
    }
    console.log("Dams Radius" + " " + damsRadius);
    timeline.setStyle(damsStyle)//add this line to change the style
});
map.on('zoomend',函数(e){
var currentZoom=map.getZoom();
log(“当前缩放”+“”+currentZoom);

如果(currentZoom啊!我甚至没有想到setStyle。你是对的——初步测试表明我必须更改范围。现在没有足够的时间深入研究,但感谢你为我指明了正确的方向!我将带有新setStyle行的“zoomend”函数从AJAX调用外部移到了内部,以解决范围问题,现在它可以工作了还有一个可以添加的优化。上面的函数将运行setStyle()在每次缩放更改时,无论是否有保证。它只应在必要时更改样式,而此时缩放超过给定的阈值。将最后一次缩放保存在一个变量中,并将缩放和上一次缩放进行比较,以获得更高性能的功能
map.on('zoomend', function(e) {
    var currentZoom = map.getZoom();
    console.log("Current Zoom" + " " + currentZoom);
    if (currentZoom <= 6) {
      damsRadius = 2;
    } else {
    damsRadius = 6;
    }
    console.log("Dams Radius" + " " + damsRadius);
    timeline.setStyle(damsStyle)//add this line to change the style
});