我有一个用leaflet.js制作的 map ,其中包含由70多个多边形组成的geoJSON图层。用户每次单击多边形时,都会将其突出显示,并在侧面板中填充数据并打开:
function clickFeature(e) {
var layer = e.target;
layer.setStyle({
weight: 3,
color: '#666',
dashArray: '',
fillOpacity: 0.7
});
info.update(layer.feature.properties);
$( "#mypanel" ).panel("open");
}
很好但是我需要更改它,以便每次单击一个多边形时,它都会同时突出显示,并且先前单击的多边形会返回到原始样式,因此一次只能“选择”一个多边形。
我已经尝试过了,但是它不起作用(面板不再更新或打开):
var lastClickedLayer;
function clickFeature(e) {
geojson.resetStyle(lastClickedLayer);
var layer = e.target;
layer.setStyle({
weight: 3,
color: '#666',
dashArray: '',
fillOpacity: 0.7
});
info.update(layer.feature.properties);
$( "#mypanel" ).panel("open");
layer = lastClickedLayer;
}
任何帮助非常感谢。
最佳答案
您的分配是错误的,必须是
lastClickedLayer = layer;
您还应该添加额外的检查,以确定是否已设置
lastClickedLayer
:if(lastClickedLayer){
geojson.resetStyle(lastClickedLayer);
}