【发布时间】:2020-05-13 08:44:10
【问题描述】:
我在 Vuejs 中使用 Leaflet。我在地图上加载 GeoJSON 数据,我想在单击图层(多边形)时突出显示它。这很好用。但是当我点击第二层时,我希望第一层被取消突出显示。当我单击第二层时,第一层的去高光不起作用。这是我突出显示并尝试取消突出显示的功能的一部分:
makeEditable(feature, layer) {
var highlight = {
'color': '#FFFF00',
'weight': 2,
'opacity': 1
};
var previouscolor = {
'color': '#5dbcd2',
'weight': 2,
'opacity': 1
};
var selected
var previous
layer.on('click', function (e) {
e.target.setStyle(highlight);
if (selected !== null) {
previous = selected;
}
selected = e.target;
if (previous) {
layer.setStyle(previouscolor);
}
});
}
这也是我的计算:
computed: {
options() {
return {
onEachFeature: this.makeEditable,
}
}
}
我还定义了一个从 DB 加载 GeoJSON 的方法,在 mount 中调用:
async loadGeoJSON() {
try {
this.geojson = await api.getCurrentZones();
} catch (error) {
this.error = error.message;
this.notifyVue();
}
},
【问题讨论】: