如何使折线图层始终在最上面?
How to make polyline layer always on top?
我在两个不同的单选框按钮中有 2 个多边形的 geojson,在一个复选框中有一个 geojson 折线。
当复选框被选中并且多边形层选择被更改时,我需要折线层仍然在前面。如何使用 BringToFront() 或其他方法将折线层始终固定在前面?
该项目在 jsfiddle 进行了简化
http://jsfiddle.net/albertovich/fe0vtytb/
var poligon1 = new L.LayerGroup();
var poligon2 = new L.LayerGroup();
var polyline1 = new L.LayerGroup();
var map = L.map('map', {
center: [39.4699075, -0.382881],
zoom: 13,
layers: [poligon1]
});
var baseLayers = {
"Poligon1": poligon1,
"Poligon2": poligon2
};
var myStylePol1 = {
"weight": 2,
"opacity": 1,
"color": "#FF00CC",
"fillOpacity": 1
};
var myStylePol2 = {
"weight": 2,
"opacity": 1,
"color": "#FFFF80",
"fillOpacity": 1
};
var myStyle3 = {
"weight": 2,
"opacity": 1,
"color": "#000"
};
L.geoJson(poli1, {
style: myStylePol1
}).addTo(poligon1),
L.geoJson(poli2, {
style: myStylePol2
}).addTo(poligon2),
L.geoJson(polyl3, {
style: myStyle3
}).addTo(polyline1);
var overlays = {
"Polyline": polyline1
};
L.control.layers(baseLayers, overlays).addTo(map);
你可以做类似
map.on('baselayerchange',function(baselayer){
baselayer.layer.getLayers()[0].bringToBack();
});
已更新Fiddle here
但通常 baseLayers 是图块层(街道、卫星、地形等),而不是 geoJson 多边形,因此您可能想采用另一种方法,其中所有层都是简单的叠加层
我在两个不同的单选框按钮中有 2 个多边形的 geojson,在一个复选框中有一个 geojson 折线。 当复选框被选中并且多边形层选择被更改时,我需要折线层仍然在前面。如何使用 BringToFront() 或其他方法将折线层始终固定在前面?
该项目在 jsfiddle 进行了简化
http://jsfiddle.net/albertovich/fe0vtytb/
var poligon1 = new L.LayerGroup();
var poligon2 = new L.LayerGroup();
var polyline1 = new L.LayerGroup();
var map = L.map('map', {
center: [39.4699075, -0.382881],
zoom: 13,
layers: [poligon1]
});
var baseLayers = {
"Poligon1": poligon1,
"Poligon2": poligon2
};
var myStylePol1 = {
"weight": 2,
"opacity": 1,
"color": "#FF00CC",
"fillOpacity": 1
};
var myStylePol2 = {
"weight": 2,
"opacity": 1,
"color": "#FFFF80",
"fillOpacity": 1
};
var myStyle3 = {
"weight": 2,
"opacity": 1,
"color": "#000"
};
L.geoJson(poli1, {
style: myStylePol1
}).addTo(poligon1),
L.geoJson(poli2, {
style: myStylePol2
}).addTo(poligon2),
L.geoJson(polyl3, {
style: myStyle3
}).addTo(polyline1);
var overlays = {
"Polyline": polyline1
};
L.control.layers(baseLayers, overlays).addTo(map);
你可以做类似
map.on('baselayerchange',function(baselayer){
baselayer.layer.getLayers()[0].bringToBack();
});
已更新Fiddle here
但通常 baseLayers 是图块层(街道、卫星、地形等),而不是 geoJson 多边形,因此您可能想采用另一种方法,其中所有层都是简单的叠加层