沿着这些思路
首先,把你的图层变成一个变量
var mylayer = L.geoJson(statesData, {style: style});
map.addLayer(mylayer);
创建一个新函数以根据您的按钮 ID 获取新样式
function newStyle(id) {
return {
fillColor: getColor(id),
weight: 2,
opacity: 1,
color: 'white',
dashArray: '3',
fillOpacity: 0.7
};
}
然后监听点击并获取btn id并设置新样式
$('body').on('click', 'btn', function (btn) {
var id = $(btn).attr('id');
var new_style = newStyle(id);
mylayer.setStyle(new_style);
});
更新:
将 getcolor 更新为仅 getColor(id)。您应该使您的按钮与示例中 getColor 函数中的颜色相对应。因此 id="11" 将返回示例中的 #FED976,id="21" 将返回 #FEB24C 等等。
或者,您可以将按钮 ID 设置为颜色 (id="#FED976"),然后将 fillColor: getColor(id) 更改为 fillColor: id
更新2:
function style1(feature) {
return {
fillColor: getColor(feature.properties.btn1)
};
}
function style2(feature) {
return {
fillColor: getColor(feature.properties.btn2)
};
}
var mylayer = L.geoJson(statesData, {style: style});
map.addLayer(mylayer);
$('body').on('click', 'btn', function (btn) {
var id = $(btn).attr('id');
switch (id) {
case "btn1":
map.removeLayer(mylayer);
mylayer = L.geoJson(statesData, {style: style1});
map.addLayer(mylayer);
break;
case "btn2":
map.removeLayer(mylayer);
mylayer = L.geoJson(statesData, {style: style2});
map.addLayer(mylayer);
break;
}
});