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

news2024/11/15 17:40: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/833613.html

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

相关文章

快速增加Shopee,lazada店铺销量的秘籍大揭秘

在竞争激烈的电商市场中&#xff0c;如何快速提高Shopee。lazada店铺的销量一直是卖家们关注的焦点。 优化产品信息&#xff1a;在Shopee平台上&#xff0c;完整填写产品标题、描述和关键词等信息非常重要。确保您的产品信息准确、清晰&#xff0c;并包含与目标买家搜索相关的…

Jest和Mocha两者之间有哪些区别?

什么是单元测试&#xff1f; 所谓单元测试&#xff0c;是对软件中单个功能组件进行测试的一种软件测试方式&#xff0c;其目的是确保代码中的每一个基本单元都能正常运行。因此&#xff0c;开发人员在应用程序开发的整个过程&#xff08;即代码编写过程&#xff09;中都需要进行…

SpringBoot + ajax 实现分页和增删查改

0目录 1.SpringBoot 2.SpringBoot分页&#xff1b;增删改查 1.SpringBoot分页 创建数据库和表 创建SpringBoot工程&#xff0c;引入springboot下的分页依赖 配置application.yml 实体类 Mapper接口 Mapper.xml Service接口 Service实现类 控制层 测试 加…

Liunx环境下git的详细使用(gitee版)

Liunx环境下git的详细使用&#xff08;gitee版&#xff09; 1.git是什么2.git操作2.1在gitee创建一个仓库2.2.gitignore2.3.git 3.git三板斧3.1add3.2 commit3.3push 4.git其他命令4.1查看当前仓库状态4.2查看提交日志4.3修改git里面文件名称4.4删除文件4.5修改远端仓库内容 1.…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(26)-Fiddler如何抓取Android7.0以上的Https包-上篇

1.简介 众所周知&#xff0c;假如设备是android 7.0的系统同时应用设置targetSdkVersion > 24的话&#xff0c;那么应用默认是不信任安装的Fiddler用户证书的&#xff0c;所以你就没法抓到应用发起的https请求&#xff0c;然后你在Fiddler就会看到一堆200 HTTP Tunnel to x…

SpringBoot3---核心特性---1、快速入门

星光下的赶路人star的个人主页 年轻人仍然所见有极限&#xff0c;又迷失在太多讯息中–讯息不等于眼界 文章目录 1、简介1.1 前置知识1.2 环境要求1.3 SpringBoot是什么 2、快速体验2.1 开发流程2.2 特性小结2.3 Spring Initializr 3、应用分析3.1 依赖管理机制3.2 自动配置机制…

工作日志怎么写?聪明灵犀能帮你撰写

工作日志怎么写&#xff1f;工作日志是每个职场人士都需要编写的重要文档之一&#xff0c;它记录了我们在工作中所做的事情、遇到的问题以及解决方法等重要信息。然而&#xff0c;写工作日志并不是一件容易的事情&#xff0c;特别是对于那些不擅长记录的人来说。不过&#xff0…

go 语言实战入门案例之实现Socks5

文章和代码已经归档至【Github仓库&#xff1a;https://github.com/timerring/backend-tutorial 】或者公众号【AIShareLab】回复 go 也可获取。 文章目录 实现 Socks 5 代理介绍原理TCP echo serverauth请求阶段完整代码 学习路线推荐 实现 Socks 5 代理 介绍 socks5 协议它虽…

2023 8-2 ~ 8-3

2181 合并0之间的节点 思路挺简单 就是注意一下指针不要制空 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNod…

【Linux】在服务器上创建Crontab(定时任务),自动执行shell脚本

业务场景&#xff1a;该文即为上次编写shell脚本的姊妹篇,在上文基础上,将可执行的脚本通过linux的定时任务自动执行,节省人力物力,话不多说,开始操作! 一、打开我们的服务器连接工具 连上服务器后,在任意位置都可以执行:crontab -e 如果没有进入编辑cron任务模式 根据提示查看…

瑞吉外卖实战-笔记

软件开发的流程 角色分工 软件环境 开发环境的搭建 数据库环境 maven环境 1.创建完成后&#xff0c;需要检查一下编码、maven仓库、jdk等 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</a…

Java 监听Mysql binlog

使用 mysql-binlog-connector-java 1. mysql-binlog-connector-java 官网 2. Java代码中&#xff0c;如何监控Mysql的binlog&#xff1f; 前置条件 1. mysql服务器表结构 CREATE TABLE student (id int NOT NULL AUTO_INCREMENT,name varchar(255) CHARACTER SET utf8mb4 C…

meedu二次开发:企业内部使用 必须登录之后才能查看里面内容

meedu二次开发&#xff1a;修改成企业内部培训系统功能 用户必须登录之后才能查看里面课程内容

20天学rust(一)和rust say hi

关注我&#xff0c;学习Rust不迷路 工欲善其事&#xff0c;必先利其器。第一节我们先来配置rust需要的环境和安装趁手的工具&#xff0c;然后写一个简单的小程序。 安装 Rust环境 Rust 官方有提供一个叫做 rustup 的工具&#xff0c;专门用于 rust 版本的管理&#xff0c;网…

安全学习DAY14_JS信息打点

信息打点——前端JS框架 文章目录 信息打点——前端JS框架小节概述-思维导图JS安全概述什么是JS渗透测试&#xff1f;前后端差异JS安全问题流行的Js框架如何判定JS开发应用&#xff1f; 测试方法&#xff08;JS文件的获取以及分析方法1、手工搜索分析2、半自动Burp分析插件介绍…

实数信号的傅里叶级数研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

临床球囊扩张术中的压力精密控制解决方案

摘要&#xff1a;目前临床用气管导管套囊压力管理中缺乏操作简便和技术成熟的套囊压力自动控制仪器&#xff0c;现有压力测量和控制装置操作繁琐&#xff0c;存在充气增压和放气减压过程不及时和压力不稳定等问题。针对这些问题本文提出了套囊压力自动控制解决方案&#xff0c;…

ad+硬件每日学习十个知识点(20)23.7.31 (芯片和天线间的巴伦电路)

文章目录 1.什么是前端电路&#xff1f;2.什么是巴伦电路&#xff1f;3.巴伦电路的性能参数4.LC巴伦电路5.ADS是干什么的&#xff1f;6.HFSS是干什么的&#xff1f;7.ANSYS有限元软件8.常用的电路仿真软件都有什么&#xff1f;9.巴伦电路的复端阻抗LC10.微带巴伦&#xff08;不…

RuntimeException:Duplicate class xxx found in modules xxx and xxx依赖冲突

在开发的过程中因为多个项目混杂&#xff0c;依赖冲突 在Terminal 中运行gradlew -q app:dependencies查看依赖树。 然后根据依赖树中的版本进行依赖排除&#xff0c;排除低版本的依赖或者冲突的依赖包 implementation (org.web3j:core:4.8.7-android){exclude group:org.bou…

LED光源均匀通用积分球

积分球又称光通球&#xff0c;是一个中空的完整球壳。内壁涂白色漫反射涂料&#xff0c;并且球内壁不同点漫射均衡。采用积分球测量光通量时&#xff0c;能够确保测量结果的可靠性&#xff0c;其可降低并过滤因光线形状、发散角度以及检测部件中不同位置相应度差异引起的测量误…