1 问题复现

使用L.tileLayer加载底图(A、B、C)并使用layerControl管理、在用L.tileLayer.wms添加wms服务(D),当切换ABC时会压盖D

视频中右下角的wms服务(D)只有在切换ing看得到,切换完成就被压盖了
有问题代码如下

const mapUrl = "http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=xxx";
const vecUrl = "http://t0.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=xxx";
// 天地卫星图
const layerA = L.layerGroup([
L.tileLayer(mapUrl, {
maxZoom: 20,
minZoom: 3
})
])
// 天地矢量图
const layerB = L.layerGroup([
L.tileLayer(vecUrl, {
maxZoom: 20,
minZoom: 3
})
])
// 高德卫星
const layerC = L.layerGroup([
L.tileLayer('https://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}', {
maxZoom: 18,
maxNativeZoom: 16,
minZoom: 3,
attribution: '高德地图 AutoNavi.com',
subdomains: '1234'
})
])
const baseLayers = {
'A': layerA,
'B': layerB,
'C': layerC
} // 记载wms服务
let layerName = 'layerName' // 修改为可访问的图层名
let url = 'url' // 修改为可访问地址
const layerD = L.layerGroup([
L.tileLayer.wms(url, {
layers: layerName,
format: 'image/png',
transparent: true,
attribution: layerName
})
])
//
var map = L.map('map', {attributionControl: false, layers: [layerA]}).setView([29.04656, 112.86254], 8);
L.control.layers(baseLayers,null, {position: 'topleft', sortLayers: true}).addTo(map)

2 解决方案

2.1 使用layerControl的overlayer

layerControl可以将图层分为baselayer (基础层) 和overlayer(覆盖层)两种.

基础层是互斥的,一次只能显示一个,覆盖层是可以叠加的,并且在基础层之上。

将D图层放在overlayer中可以避免覆盖

const overlayers = {
'D': layerD
}
L.control.layers(baseLayers, overlayers, {position: 'topleft', sortLayers: true}).addTo(map)

效果

2.2 使用setZIndex

setZIndex方法可以设置图层的顺序 (适用于 L.imageOverlay、L.layerGroup、L.GridLayer)

使用setZIndex可以更加灵活配置

L.control.layers(baseLayers, null, {position: 'topleft', sortLayers: true}).addTo(map)
layerD.addTo(map)
layerD.setZIndex(10)

效果

上面的L.tileLayer和L.tileLayer.wms都是用layerGroup管理,也可以不用layerGroup管理,直接addTo(map),但是没有setZIndex方法不好控制图层顺序

【Leaflet专题篇】L.tileLayer图层顺序问题的更多相关文章

  1. iOS开发UI篇—CAlayer(创建图层)

    iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...

  2. Java语法专题1: 类的构造顺序

    合集目录 Java语法专题1: 类的构造顺序 问题 下面的第二个问题来源于Oracle的笔试题, 非常经典的一个问题, 我从07年开始用了十几年. 看似简单, 做对的比例不到2/10. 描述一下多级继 ...

  3. Java语法专题2: 类变量的初始化顺序

    合集目录 Java语法专题2: 类变量的初始化顺序 问题 这也是Java面试中出镜率很高的基础概念问题 描述一下多级继承中字段初始化顺序 描述一下多级继承中类变量初始化顺序 写出运行以下代码时的控制台 ...

  4. ArcGIS 切片与矢量图图层顺序问题

    在项目中有个需求:根据图层索引添加图层 看到这个需求一下子想到 map.addLayer(layer,index?) 接口 但是问题出现了,我切片图加载顺序在矢量图之后就不行! map = new M ...

  5. django 实战篇之视图层

    视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...

  6. js技巧专题篇: 页面跳转

    本篇主要介绍网页上常见的页面跳转技术.页面跳转有几种方式,比较常用的是window.location.href,window.location.replace,window.open,当然还有目前比较 ...

  7. Leaflet中添加的不同图层样式图标

    如上图,具体问题请查看对应html页引用的basemaps的css样式. 如下图是本项目引用的css样式: .basemap img { width: 48px; border: 2px solid ...

  8. x86 Android游戏开发专题篇之使用google breakpad捕捉c++崩溃(以cocos2dx为例)

    近期一直都在x86设备上进行游戏开发.就c++层和Android java层倒没有什么要特别注意的(除了须要注意一下改动Application.mk指定平台外),在c++崩溃的时候,非常多时候看不到堆 ...

  9. cesium 之图层管理器篇(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  10. 数据结构顺序表中Sqlist *L,&L,Sqlist *&L

    //定义顺序表L的结构体 typedef struct { Elemtype data[MaxSize]: int length; }SqList; //建立顺序表 void CreateList(S ...

随机推荐

  1. 深入理解 python 虚拟机:描述器的王炸应用-property、staticmethod 和 classmehtod

    深入理解 python 虚拟机:描述器的王炸应用-property.staticmethod 和 classmehtod 在本篇文章当中主要给大家介绍描述器在 python 语言当中有哪些应用,主要介 ...

  2. Unity中实现字段/枚举编辑器中显示中文(中文枚举、中文标签)

    在unity开发编辑器相关经常会碰到定义的字段显示在Inspector是中文,枚举也经常碰到显示的是字段定义时候的英文,程序还好,但是如果编辑器交给策划编辑,策划的英文水平不可保证,会很头大,所以还是 ...

  3. 2022-10-22:以下go语言代码输出什么?A:moonfdd1;B:编译错误;C:运行时 panic。 package main import “fmt“ func main() {

    2022-10-22:以下go语言代码输出什么?A:moonfdd1:B:编译错误:C:运行时 panic. package main import "fmt" func main ...

  4. 2021-03-08:在一个数组中,任何一个前面的数a,和任何一个后面的数b,如果(a,b)是降序的,就称为逆序对。返回逆序对个数。

    2021-03-08:在一个数组中,任何一个前面的数a,和任何一个后面的数b,如果(a,b)是降序的,就称为逆序对.返回逆序对个数. 福哥答案2021-03-08: 1.归并排序,从右往左,相等拷右. ...

  5. 2022-03-15:给定一棵树的头节点head,原本是一棵正常的树, 现在,在树上多加了一条冗余的边, 请找到这条冗余的边并返回。

    2022-03-15:给定一棵树的头节点head,原本是一棵正常的树, 现在,在树上多加了一条冗余的边, 请找到这条冗余的边并返回. 答案2022-03-15: 1.指向头,入度没有0的.入度没有2的 ...

  6. Django自定义storage上传文件到Minio

    首先新建一个MyStorage.py,自定义Storage类 from io import BytesIO from django.core.files.storage import Storage ...

  7. .Net使用第三方onnx或ModelBuilder轻松接入AI模型

    ML.Net - 开源的跨平台机器学习框架 支持CPU/GPU训练 轻松简洁的预测代码 可扩展其他的机器学习平台 跨平台 1.使用Visual Studio的Model Builder训练和使用模型 ...

  8. 玩转服务器之数据传输篇:如何快速搭建FTP文件共享服务器

    FTP 文件共享服务器介绍 FTP服务(File Transfer Protocol,FTP)是最早应用于主机之间数据传输的基本服务之一,是目前使用最广泛的文件传送协议.FTP文件共享服务器在日常办公 ...

  9. NVIDIA Maxine Video Effects SDK 編程指南 - 实践小记

    NVIDIA Maxine Video Effects SDK 編程指南 - 实践小记 本篇博客重点只说Video Effect的部分,此外还有Audio Effect的部分.还有AR部分,不在本篇范 ...

  10. 水果识别系统python

    介绍 水果识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法.并通过对5种垃圾数据集进行训练,最后得到一个识别精度较高的模型.并基于Django框架 ...