单击时在小叶多边形上重置样式

时间:2014-01-09 19:36:44

标签: javascript leaflet mapbox

我有一张用leaflet.js制作的地图,其中的geoJSON图层由70个多边形组成。每次用户点击多边形时,它都会突出显示,侧面板会填充数据并打开:

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;
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

你的作业是错误的,必须是

lastClickedLayer = layer;

如果已经设置了lastClickedLayer,您还应该另外添加一项检查:

if(lastClickedLayer){
   geojson.resetStyle(lastClickedLayer);
}