Vue.js2+Cesium 四、WMS 服务加载,控制自图层显隐

news2025/1/18 11:59:16

Vue.js2+Cesium 四、WMS 服务加载,控制自图层显隐

Demo

<template>
  <div
    id="cesium-container"
    style="width: 100%; height: 100%;"
  >
    <div class="layer_container">
      <button id="btn">清除</button>
      <el-tree
        ref="tree"
        :data="layers"
        show-checkbox
        node-key="id"
        :props="defaultProps"
        :default-checked-keys="defaultCheckedKeys"
        highlight-current
        @check="handleCheckChange"
      />
    </div>
  </div>
</template>

<script>
/* eslint-disable no-undef */
// import {
//   getExtend
// } from '@/utils/CesiumUtils.js'
import { findIndex } from 'lodash'
export default {
  data() {
    return {
      defaultCheckedKeys: [],
      defaultProps: {
        label: 'id'
      },
      basePath: 'https://wms.geo.admin.ch/',
      layers: [
        {
          id: 'ch.bafu.hydroweb-warnkarte_national'
        },
        {
          id: 'ch.swisstopo.pixelkarte-farbe-pk1000.noscale'
        }
      ]
    }
  },
  computed: {},
  watch: {},
  mounted() {
    window.$InitMap()

    const _layers = this.layers.map(_ => _.id)
    this.defaultCheckedKeys = _layers

    const wmsImageryProvider = new Cesium.WebMapServiceImageryProvider({
      url: this.basePath,
      layers: _layers.join(','),
      // maximumLevel: 21,
      parameters: {
        transparent: true,
        format: 'image/png',
        srs: 'EPSG:4326',
        tiled: true
      },
      tileWidth: 1024,
      tileHeight: 1024
    })
    const imageryLayer = new Cesium.ImageryLayer(wmsImageryProvider)
    imageryLayer.name = '666'
    imageryLayer.id = '666'
    viewer.imageryLayers.add(imageryLayer)

    document.getElementById('btn').onclick = function () {
      const layer = viewer.imageryLayers.get(
        findIndex(viewer.imageryLayers._layers, function (_) {
          return _.id === '666'
        })
      )
      viewer.imageryLayers.remove(layer)
    }

    // 全球
    // viewer.imageryLayers.add(
    //   new Cesium.ImageryLayer(
    //     new Cesium.WebMapServiceImageryProvider({
    //       url: 'https://ahocevar.com/geoserver/ne/wms',
    //       layers: 'ne:ne_10m_admin_0_countries',
    //       parameters: {
    //         transparent: true,
    //         format: 'image/png'
    //       }
    //     })
    //   )
    // )

    viewer.imageryLayers.add(
      new Cesium.ImageryLayer(
        new Cesium.WebMapServiceImageryProvider({
          url: 'http://openlayers.vip/geoserver/cite/wms',
          layers: 'cite:xintai18,cite:2000',
          parameters: {
            transparent: true,
            format: 'image/png',
            srs: 'EPSG:4326'
          },
          tileWidth: 1024,
          tileHeight: 1024
        })
      )
    )
    // viewer.camera.flyTo({
    //   destination: Cesium.Rectangle.fromDegrees(104.23828125000001, 30.805664062499996, 104.26025390624999, 30.827636718749996)
    // })

    // Australia
    viewer.imageryLayers.add(
      new Cesium.ImageryLayer(
        new Cesium.WebMapServiceImageryProvider({
          url: 'https://nationalmap.gov.au/proxy/http://geoserver.nationalmap.nicta.com.au/geotopo_250k/ows',
          layers: 'Hydrography:bores',
          parameters: {
            transparent: true,
            format: 'image/png',
            srs: 'EPSG:4326'
          },
          tileWidth: 1024,
          tileHeight: 1024
        })
      )
    )

    // U. S.
    viewer.imageryLayers.add(
      new Cesium.ImageryLayer(
        new Cesium.WebMapServiceImageryProvider({
          url: 'https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi',
          layers: 'nexrad-n0r-wmst',
          parameters: {
            transparent: true,
            format: 'image/png'
          }
        })
      )
    )
    // viewer.imageryLayers.add(
    //   new Cesium.ImageryLayer(
    //     new Cesium.WebMapServiceImageryProvider({
    //       url: 'https://ahocevar.com/geoserver/wms',
    //       layers: 'topp:states',
    //       parameters: {
    //         transparent: true,
    //         format: 'image/png'
    //       }
    //     })
    //   )
    // )
    // viewer.imageryLayers.add(
    //   new Cesium.ImageryLayer(
    //     new Cesium.WebMapServiceImageryProvider({
    //       url: 'https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi',
    //       layers: 'nexrad-n0r',
    //       credit: 'Radar data courtesy Iowa Environmental Mesonet',
    //       parameters: {
    //         transparent: 'true',
    //         format: 'image/png'
    //       }
    //     })
    //   )
    // )
    // viewer.imageryLayers.add(
    //   new Cesium.ImageryLayer(
    //     new Cesium.WebMapServiceImageryProvider({
    //       url: 'https://mesonet.agron.iastate.edu/cgi-bin/wms/goes/conus_ir.cgi?',
    //       layers: 'goes_conus_ir',
    //       credit: 'Radar data courtesy Iowa Environmental Mesonet',
    //       parameters: {
    //         transparent: 'true',
    //         format: 'image/png'
    //       }
    //     })
    //   )
    // )
  },
  methods: {
    handleCheckChange(data, checked, indeterminate) {
      const ids = this.$refs.tree.getCheckedKeys()
      const _layers = ids.join(',')
      const imageryLayer = new Cesium.ImageryLayer(
        new Cesium.WebMapServiceImageryProvider({
          url: this.basePath,
          layers: _layers,
          parameters: {
            transparent: true,
            format: 'image/png',
            srs: 'EPSG:4326',
            tiled: true
          },
          tileWidth: 1024,
          tileHeight: 1024
        })
      )
      imageryLayer.id = '666'
      imageryLayer.name = '666'
      viewer.imageryLayers.add(imageryLayer)

      const allLayers = viewer.imageryLayers._layers.filter(
        _ => _.name === '666'
      )
      const removeLayers = allLayers.filter(
        _ => _.imageryProvider.layers !== _layers
      )
      setTimeout(() => {
        for (let index = 0; index < removeLayers.length; index++) {
          const layer = removeLayers[index]
          viewer.imageryLayers.remove(layer)
        }
      }, 1000)
    }
  }
}
</script>

<style>
.layer_container {
  position: absolute;
  right: 50px;
  top: 50px;
  z-index: 999;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/829312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型开发(十六):从0到1构建一个高度自动化的AI项目开发流程(中)

全文共1w余字&#xff0c;预计阅读时间约40~60分钟 | 满满干货(附代码)&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;通过LtM提示流程实现自动构建符合要求的函数&#xff0c;并通过实验逐步完整测试code_generate函数功能。 代码下载点这里 一、介绍 此篇文章为…

Redis两种持久化方案RDB持久化和AOF持久化

Redis持久化 Redis有两种持久化方案&#xff1a; RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启…

docker---网络

docker网络 使用–publish或-p标志使端口可用于 Docker 外部的服务。这会在主机中创建一条防火墙规则&#xff0c;将容器端口映射到 Docker 主机上通往外界的端口。 -p 8080:80&#xff1a;将容器中的TCP端口80映射到Docker主机上的端口8080。 -p 192.168.1.100:8080:80&…

说明学习委员之作业管理系统—后端部分

项目背景 学习委员收集作业的过程&#xff0c;繁琐且曲折&#xff0c;作者充分理解并体谅为大家服务的苦逼学习委员&#xff0c;以此为出发点和灵感&#xff0c;设计并开发了此套作业管理系统&#xff0c;希望能帮助各位提高效率&#xff0c;早日摆脱重复机械式的工作&#xf…

Vue3和TypeScript_页面

1 在views下新建myView.view 2 在router文件夹里&#xff0c;配置路径&#xff0c;按需引入组件 3 浏览器通过路径访问页面

pycharm——涟漪散点图

from pyecharts import options as opts from pyecharts.charts import EffectScatterc (EffectScatter().add_xaxis( ["高等数学1&#xff0c;2","C语言程序设计","python程序设计","大数据导论","数据结构","大数据…

旺店通·企业奇门和用友U8接口打通对接实战

旺店通企业奇门和用友U8接口打通对接实战 接通系统&#xff1a;旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺…

QT学习笔记-QT5.15 + MSVC编译套件时编译日志及运行日志日志乱码解决

QT学习笔记-QT5.15 MSVC编译套件时编译日志及运行日志日志中文乱码解决 0、基础环境1、QtCreator中的基本设置编辑->首选项->文本编辑器 2、问题1&#xff1a;MSVC编译日志乱码问题解决问题描述解决方法 3、问题2&#xff1a;MSVC构建套件编译后程序运行日志乱码问题问题…

多雷达探测论文阅读笔记:雷达学报 2023, 多雷达协同探测技术研究进展:认知跟踪与资源调度算法

多雷达协同探测技术 原始笔记链接:https://mp.weixin.qq.com/s?__biz=Mzg4MjgxMjgyMg==&mid=2247486627&idx=1&sn=f32c31bfea98b85f2105254a4e64d210&chksm=cf51be5af826374c706f3c9dcd5392e0ed2a5fb31ab20924b7dd38e1b1ae32abe9a48afa8174#rd ↑ \uparrow …

Redis—全局命令

Redis—全局命令 &#x1f50e;get / set&#x1f50e;常用全局命令keysexistsdelexpirettlkey 的过期策略type Redis 官网 Redis 中的命令不区分大小写 进入 Redis 客户端 redis-cli -h Redis 服务器的 IP 地址 -p Redis 服务器的端口号省略 -h 表示 Redis 服务器的 IP 地址…

【ASP.NET MVC】数据库访问(5)

一、ORM简介 对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称ORM&#xff09;模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 以上是官话&#xff0c;个人理解&#xff1a; 1、解决问题&#xff1a;数据库的访问 2、如何解决&a…

Vue路由:Vue Router

Vue Router 介绍 Vue Router 是 Vue.js (opens new window) 官方的路由管理器。 核心深度集成&#xff0c;包含的功能有&#xff1a; 嵌套的路由/视图表 模块化的、基于组件的路由配置 路由参数、查询、通配符基于 Vue.js 过渡系统的视图过渡效果 细粒度的导航控制 Vue Rou…

学习系统编程No.33【生产消费模型】

引言&#xff1a; 北京时间&#xff1a;2023/7/22/14:27&#xff0c;现实和预期往往相差是巨大的&#xff0c;哈哈哈&#xff01;白天睡不醒&#xff0c;晚上睡不着&#xff0c;就像一个夜猫子一样。熬夜耍手机&#xff0c;我真的是专业的&#xff0c;已经连续好久没有正常睡过…

【C++】类和对象 - 中

目录 1. 类的6个默认成员函数2. 构造函数2.1 概念2.2 特性3.3 默认构造函数 3. 析构函数3.1 概念3.2 特性 4. 拷贝构造函数4.2 概念4.3 特性4.3 传参或作返回值 5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 前后置 --重载5.4 自定义类型的输出输出 6. const成员函数…

SAP MM学习笔记15-物料调达中的Master数据(1)-仕入先Master

SAP中做一个购买发注的时候&#xff0c;涉及到以下Master数据&#xff1a; 1&#xff0c;仕入先Master&#xff08;供应商&#xff09;&#xff1a;跟谁买 2&#xff0c;品目Master&#xff08;物料&#xff09;&#xff1a;买什么 3&#xff0c;购买情报&#xff1a;什么价…

电脑误删除环境变量Path

今天在搞环境变量 一不注意手一滑把Path删除了&#xff0c;当时惊了一身冷汗&#xff0c;幸好看见有别人讲的补救措施&#xff0c;赶紧记录一下&#xff1a; 首先进入注册表winR&#xff0c;输入regedit&#xff1a; 在注册表编辑器中进入到【HKEY_LOCAL_MACHINE\SYSTEM\Contr…

基于 STM32自研多任务+SpringBoot+Vue 农业大棚智能调光系统

工作以后常常容易感到疲于奔命&#xff0c;即使在周末也没有得到高质量的休息。打工人/学生党如何过周末&#xff1f;你有哪些延长周末和下班时间的好方法吗&#xff1f;- 方法就是多积累&#xff0c;多发博客&#xff0c;将感悟全写出来&#xff01;&#xff01;&#xff0c;接…

Python——调用webdriver.Chrome() 报错

今天运行脚本&#xff0c;报错内容如下&#xff1a; collecting ... login_case.py:None (login_case.py) login_case.py:11: in <module> dr webdriver.Chrome() D:\Program Files (x86)\Python\Python39\Lib\site-packages\selenium\webdriver\chrome\webdriver.p…

改造 dify 项目适配自建的 OpenAI API 服务

改造 dify 项目适配自建的 OpenAI API 服务 0. 背景1. 修改默认的 api_base 地址2. 修改 openai_provider.py3. 重新构建 docker 镜像4. 修改 docker-compose.yaml5. 启动项目 0. 背景 项目 https://github.com/langgenius/dify.git 的 OpenAI 配置项目里&#xff0c;现在(202…

01-1 搭建 pytorch 虚拟环境

pytorch 管网&#xff1a;PyTorch 一 进入 Anaconda 二 创建虚拟环境 conda create -n pytorch python3.9注意要注意断 VPN切换镜像&#xff1a; 移除原来的镜像 # 查看当前配置 conda config --show channels conda config --show-sources# 移除之前的镜像 conda config --…