【Leaflet专题篇】L.tileLayer图层顺序问题
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图层顺序问题的更多相关文章
- iOS开发UI篇—CAlayer(创建图层)
iOS开发UI篇—CAlayer(创建图层) 一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控 ...
- Java语法专题1: 类的构造顺序
合集目录 Java语法专题1: 类的构造顺序 问题 下面的第二个问题来源于Oracle的笔试题, 非常经典的一个问题, 我从07年开始用了十几年. 看似简单, 做对的比例不到2/10. 描述一下多级继 ...
- Java语法专题2: 类变量的初始化顺序
合集目录 Java语法专题2: 类变量的初始化顺序 问题 这也是Java面试中出镜率很高的基础概念问题 描述一下多级继承中字段初始化顺序 描述一下多级继承中类变量初始化顺序 写出运行以下代码时的控制台 ...
- ArcGIS 切片与矢量图图层顺序问题
在项目中有个需求:根据图层索引添加图层 看到这个需求一下子想到 map.addLayer(layer,index?) 接口 但是问题出现了,我切片图加载顺序在矢量图之后就不行! map = new M ...
- django 实战篇之视图层
视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...
- js技巧专题篇: 页面跳转
本篇主要介绍网页上常见的页面跳转技术.页面跳转有几种方式,比较常用的是window.location.href,window.location.replace,window.open,当然还有目前比较 ...
- Leaflet中添加的不同图层样式图标
如上图,具体问题请查看对应html页引用的basemaps的css样式. 如下图是本项目引用的css样式: .basemap img { width: 48px; border: 2px solid ...
- x86 Android游戏开发专题篇之使用google breakpad捕捉c++崩溃(以cocos2dx为例)
近期一直都在x86设备上进行游戏开发.就c++层和Android java层倒没有什么要特别注意的(除了须要注意一下改动Application.mk指定平台外),在c++崩溃的时候,非常多时候看不到堆 ...
- cesium 之图层管理器篇(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- 数据结构顺序表中Sqlist *L,&L,Sqlist *&L
//定义顺序表L的结构体 typedef struct { Elemtype data[MaxSize]: int length; }SqList; //建立顺序表 void CreateList(S ...
随机推荐
- 数据结构哈夫曼树(C语言版)
文章目录 一. 问题 需求分析 代码分析 结构体定义使用 建立哈夫曼树,首先需要找到两个权值最小的两个叶子结点,然后建树 哈夫曼编码(我采用的是从叶子结点-->根节点,所以实际是反过来的) 使用 ...
- 「学习笔记」2-SAT问题
SAT 是适定性 (Satisfiability) 问题的简称.一般形式为 k - 适定性问题,简称 k-SAT.而当 \(k>2\) 时该问题为 NP 完全的.所以我们只研究 \(k=2\) ...
- 数据结构与算法大作业:走迷宫程序(C语言,DFS)(代码以及思路)
好家伙,写大作业,本篇为代码的思路讲解 1.大作业要求 走迷宫程序 问题描述: 以一个 m * n 的长方阵表示迷宫, 0和1分别表示迷宫的通路和障碍. 设计一个程序, 对任意设定的迷宫, 求出一 ...
- #Powerbi 理解VAR函数
VAR意思即为变量,在编程语言中,变量是一个重要概念,DAX作为一种语言也有变量概念,利用VAR,我们可以缩短我们一些DAX语句的长度,更清晰的表达我们的度量值计算逻辑. 举例说明: 我们要计算一个产 ...
- 2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置。给你一个整数 k 。 请你在数轴上增设 k 个加油站, 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数
2022-09-23:整数数组 stations 表示 水平数轴 上各个加油站的位置.给你一个整数 k . 请你在数轴上增设 k 个加油站, 新增加油站可以位于 水平数轴 上的任意位置,而不必放在整数 ...
- values_list() 元组形式显示查询结果
values_list() 元组形式显示查询结果 name,age为数据库的两个列 Student.objects.values_list('name','age') values_list() 元组 ...
- cnpm : 无法加载文件 D:\nodejs\node_global\cnpm.ps1,因为在此系统上禁止运行 脚本。
错误信息: cnpm : 无法加载文件 D:\nodejs\node_global\cnpm.ps1,因为在此系统上禁止运行 脚本.有关详细信息,请参阅 https:/go.microsoft.com ...
- vscode 注释快捷键 一键注释和取消注释快捷键
// 注释:ctrl+/ /**/ 注释:alt+shift+a
- 自动化测试-基础知识—Bash基础
Bash 在 Bash 中,美元符号 $ 可以用于引用变量或者表达式的值.Bash 中的变量并不需要事先声明,而是在第一次赋值时自动创建.基于这个特性,我们可以通过给变量名加上 $ 的方式来引用它的值 ...
- 【python基础】循环语句-while循环
1.初识while循环 循环语句主要的作用是在多次处理具有相同逻辑的代码时使用.while循环是Python提供的循环语句之一. while循环的语法格式之一: 比如我们输出1-10之间的奇数,编写程 ...