当前位置: 首页 > news >正文

openlayer getLayerById 根据id获取layer图层

背景:

在项目中使用getLayerById获取图层,这个getLayerById()方法不是openlayer官方文档自带的,而是自己封装的一个方法,这个封装的方法的思路是:遍历所有的layer,根据唯一标识【可能是id,也可能是name,这是自定义的】即可获取带相应的图层。

唯一标识是在addlayer加载图层时候,通过layer.set('自定义的唯一标识','...自定义属性值')。在获取图层时,通过layer.get('自定义的唯一标识')即可获取到相应的图层。

官网链接:点击跳转官网

getLayerById()官网不存在此方法!

 例如:

第1步:创建一个layer

const param = 

                {

                        layer: true,

                        id: "TDT_DITU",

                        title: "天地图",

                        visible: false,

                        source: "XYZ",

                        url: "http://t{0-7}.tianditu.gov.cn/DataServer/tianditu?T=vec_w&x={x}&y={y}&l={z}&tk=1575c31672124b57f214b65928540083",

                        zIndex: 7,

                    },

let _layer = new TileLayer({

            title: param.title,

            source: new XYZ({

                url: param.url,

            }),

            visible: param.visible,

        });

        _layer .setZIndex(param.zIndex);

        map.addLayer(_layer );

第2步:设置唯一标识,这里用id

_layer.set('layerId','TDT_DITU')

第3步:根据id获取地图图层

_layer.get('layerId');//备注:看看返回的是不是等于自定义的属性'TDT_DITU',如果是,

第...步:

使用getLayers()方法找到地图上所有图层【getLayers()是openleyer官网的方法】

let allLayers = map.getLayers().array_;//所有图层

大概思路如上:

项目中实际代码:

const layerVisible = user.map.layer.getLayerById('location')
                {title: '临时图层',type: 'temporary',isShow: false,layers: [{layer: true,id: 'location',title: '定位图层',visible: true,source: 'Vector',zIndex: 10,isDeclutter: true},

 getLayerById()封装代码:

// 根据id查找图层是否开启getLayerById(id) {for (let i = 0; i <= this.config.length - 1; i++) {const index = this.config[i].layers.findIndex(el => el.children)if (index !== -1) {const layer_item = this.config[i].layers[index].children.find(el => el.id === id)if (layer_item) {return layer_item.visible}} else {const item = this.config[i].layers.find(el => el.id === id)if (item) {return item.visible}}}}

其它:

 getFeatureById()官网存在此方法!

官网链接:点击跳转

http://www.lryc.cn/news/526634.html

相关文章:

  • 在 vscode + cmake + GNU 工具链的基础上配置 JLINK
  • react antd点击table单元格文字下载指定的excel路径
  • 01-AD工具使用
  • centos7 配置国内镜像源安装 docker
  • Java设计模式 十八 状态模式 (State Pattern)
  • PyTorch张量操作reshape view permute transpose
  • RabbitMQ5-死信队列
  • macOS使用LLVM官方发布的tar.xz来安装Clang编译器
  • 【算法学习】归并排序算法思想的应用—求逆序对数量
  • 一组开源、免费、Metro风格的 WPF UI 控件库
  • Spring Security 应用详解
  • 业务对象和对象的区别
  • 81,【5】BUUCTF WEB [b01lers2020]Life on Mars
  • 华硕笔记本装win10哪个版本好用分析_华硕笔记本装win10专业版图文教程
  • Linux进程 -fork(初识),进程状态和进程优先级
  • 数据从前端传到后端入库过程分析
  • macOS如何进入 Application Support 目录(cd: string not in pwd: Application)
  • 第38周:猫狗识别 (Tensorflow实战第八周)
  • 【2024年华为OD机试】 (A卷,200分)- 计算网络信号、信号强度(JavaScriptJava PythonC/C++)
  • 【go语言】数组和切片
  • 2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)
  • 使用 Docker Compose 一键启动 Redis、MySQL 和 RabbitMQ
  • 新增自定义数据功能|UWA Gears V1.0.7
  • docker 简要笔记
  • 在Ubuntu上使用Apache+MariaDB安装部署Nextcloud并修改默认存储路径
  • 【JavaEE】-- 计算机是如何工作的
  • 政安晨的AI大模型训练实践三:熟悉一下LF训练模型的WebUI
  • 基于微信小程序的网上订餐管理系统
  • 科技快讯 | 理想官宣:正式收费!WeChat 港币钱包拓宽商户网络;百川智能发布深度思考模型Baichuan-M1-preview
  • 【java数据结构】map和set