Gis Layer.js中的层排序

Gis Layer.js中的层排序,gis,leaflet,Gis,Leaflet,如何强制将添加到传单中地图的新图层作为基础地图的第一个图层 我找不到一种方法来轻松改变图层的顺序,这是一个非常基本的GIS功能。我遗漏了什么吗?根据传单API,您可以在任何层上使用bringToFront或bringToBack将该层置于所有路径层的顶部或底部 Etienne传单地图由一组“窗格”组成,其视图顺序由z索引控制。每个窗格都包含一组层。默认窗格显示顺序为平铺->阴影->覆盖->标记->弹出窗口。如上文所述,您可以通过调用bringToFront()或bringToBack()来控制覆

如何强制将添加到传单中地图的新图层作为基础地图的第一个图层


我找不到一种方法来轻松改变图层的顺序,这是一个非常基本的GIS功能。我遗漏了什么吗?

根据传单API,您可以在任何层上使用
bringToFront
bringToBack
将该层置于所有路径层的顶部或底部


Etienne

传单地图由一组“窗格”组成,其视图顺序由z索引控制。每个窗格都包含一组层。默认窗格显示顺序为平铺->阴影->覆盖->标记->弹出窗口。如上文所述,您可以通过调用
bringToFront()
bringToBack()
来控制覆盖窗格中路径的显示顺序
L.FeatureGroup
也有这些方法,因此如果需要,您可以立即更改重叠组的顺序

如果要更改整个窗格的显示顺序,则只需使用CSS更改窗格的z索引

如果你想添加一个新的地图窗格…我还不知道怎么做


更多细节,Bobby Sudekum展示了窗格z索引的操作。我一直把它作为出发点

以下是关键代码:

var topPane = L.DomUtil.create('div', 'leaflet-top-pane', map.getPanes().mapPane);
var topLayer = L.mapbox.tileLayer('bobbysud.map-3inxc2p4').addTo(map);
topPane.appendChild(topLayer.getContainer());
topLayer.setZIndex(7);
我已找到此修复程序(css):


在这里找到它:

最近不得不解决这个问题,但偶然发现了这个问题

这是一个解决方案,它不依赖于CSS破解,并且与层组一起工作。它基本上按照所需的顺序删除和重新添加层

我认为这是比当前答案更好的“最佳实践”。它展示了如何管理层并对其重新排序,这对于其他上下文也很有用。当前方法使用图层
标题
来标识要重新排序的图层,但您可以轻松地修改它以使用实际图层对象的索引或引用

欢迎并鼓励改进、评论和编辑

JS小提琴:

或者向下滚动并单击“运行代码片段”并播放它。我将初始缩放级别设置为有助于说明重叠效果的点

函数{
//创建地图
var map=L.map('map').setView([39.5,-0.5],4);
//设置OSM层
var baseLayer=L.tileLayer(
'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'{
最大缩放:18
}).addTo(地图);
var baseLayers={
“OSM瓷砖”:底层
};
this.map=map;
此参数为0.BaseLayers={
“OSM瓷砖”:底层
};
this.LayersControl=L.control.layers(baseLayers).addTo(map);
这个.Overlays=[];
this.AddOverlay=函数(分层、标记){
var zIndex=this.Overlays.length;
var layerGroup=L.layerGroup(markers).addTo(map);
this.LayersControl.addOverlay(layerGroup,layerOptions.title);
这个。覆盖。推({
zIndex:zIndex,
传单图层:图层组,
选项:分层,
初始标记:标记,
标题:layerOptions.Title
});
返回图层组;
}
this.RemoveOverlays=函数(){
对于(var i=0,len=this.Overlays.length;i
#地图{
高度:400px;
}


最近,传单还添加了setZIndex方法,该方法可用于TileLayer,使用CSSLink手动管理瓷砖层顺序。因此,不鼓励仅回答问题,请尝试用自己的话回答,如果您认为有必要,请将链接作为参考发布。此外,链接最终可能会断开,这将使您的答案毫无意义。第三个命令似乎只适用于mapbox tileLayers,没有
getContainer().leaflet-map-pane {
    z-index: 2 !important;
}

.leaflet-google-layer {
    z-index: 1 !important;
}