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

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.kler.cn/a/519976.html

相关文章:

  • 汽车网络信息安全-ISO/SAE 21434解析(下)
  • 向量和矩阵算法笔记
  • xxl-job分布式定时任务
  • 瑞芯微方案:RV1126定制开发板方案定制
  • 高级java每日一道面试题-2025年01月23日-数据库篇-主键与索引有什么区别 ?
  • JJJ:Linux - 高精度定时器 hrtimer
  • 【漫话机器学习系列】058.特征重要度(Feature Importance)
  • Vue 响应式渲染 - 指令
  • css3 svg制作404页面动画效果HTML源码
  • 【JVM】调优
  • Python 常用运维模块之Shutil 模块
  • 绝缘栅双极性晶体管(IGBT)
  • CF 339A.Helpful Maths(Java实现)
  • 证券量化交易选择合适的编程语言
  • LetsWave脑电数据简单ERP分析matlab(一)
  • Keras、TensorFlow、PyTorch框架对比及服务器配置揭秘
  • PID如何调试,如何配置P,I,D值,如何适配pwm的定时器配置,如何给小车配电源
  • Meta-CoT:通过元链式思考增强大型语言模型的推理能力
  • 铁路通信电源设备的安全维护
  • 机位:解锁摄影视角的多维度密码
  • 20250124 Flink 增量聚合 vs 全量聚合
  • 自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
  • WebForms 表单
  • Linux系统中处理子进程的终止问题
  • LabVIEW橡胶动态特性测试系统
  • Python数据分析-Python语法基础,IPython和Jupyter-Notebooks(二)