我将使用Leaflet来可视化点数据,并尝试根据缩放级别更改圆的半径。
用户缩放越多,圆的半径就越大。 此处有正在进行的工作。 目前为止,这是我的成果。
第一行设置了初始半径:
用户缩放越多,圆的半径就越大。 此处有正在进行的工作。 目前为止,这是我的成果。
第一行设置了初始半径:
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);
});
我将半径设置为样式对象的一部分:
function damsStyle(feature) {
return {
fillOpacity: 0.8,
fillColor: getColor(feature.properties.mainuse),
weight: 1,
opacity: 1,
color: '#e0e0e0',
radius: damsRadius // HERE IS WHERE I SET THE RADIUS
};
}
然后使用pointToLayer
将整个工具包添加到地图中:
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, damsStyle(feature));
}
控制台显示一切都很顺利。缩放地图时,damsRadius
的值按预期更改。
问题在于,地图上点的半径没有更改。所以,在某个地方,有些信息没有得到传递。
我尝试使用L.circle
,但也不起作用。我需要每次更改缩放级别时使用clearLayers
函数并进行重绘吗?
那似乎有些过分了。
有何建议?