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

news/2024/11/23 23:43:24/

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

Demo

<template><divid="cesium-container"style="width: 100%; height: 100%;"><div class="layer_container"><button id="btn">清除</button><el-treeref="tree":data="layers"show-checkboxnode-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 = _layersconst 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)// })// Australiaviewer.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.ppmy.cn/news/1001464.html

相关文章

刷完这个笔记,15K真的不能再少了....

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;得准备面试了&#xff0c;又不知道从何下手&#xff01;为了帮大家节约时间&#xff0c;特意准备了一份面试相关的资料&#xff0c;内容非常的全面&#xff0c;真的可以好好补一补&#xff0c;希望大家在都能拿到理想…

合并两个有序链表 LeetCode热题100

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路 遍历两个链表比较大小&#xff0c;按从小到大添加到链表即可。 代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* List…

Day07-JS高级编程

Day02-JS高级编程 一、闭包(扩展) 概念:闭包指的就是在子函数中,可以访问父级函数中的变量。闭包形成的条件,需要在一个函数中嵌套一个子函数,内部函数访问外部函数的变量。 案例1-闭包的基础 /*** 函数声明*/function fun(){var name = "hello" return fun…

【2】Linux实现多进程、多线程

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言一、linux开发的方向二、Linux环境特点1、Linux环境介绍2、Linux环境基本构成三、同步与互斥1、Linux同步并发的方法(1)创建、终止、等待、分离线…

有向图的拓扑序列

给定一个 n 个点 m 条边的有向图&#xff0c;点的编号是 1 到 n &#xff0c;图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列&#xff0c;如果拓扑序列不存在&#xff0c;则输出 −1 。 若一个由图中所有点构成的序列 A 满足&#xff1a;对于图中的每条边 (…

mysql 、sql server 常见的区别

&#xff2e;&#xff35;&#xff2c;&#xff2c;   处理 MySQL IFNULL(col , val) SQL Server ISNULL(col,val) 表名、列名等 一般不推荐用保留字 &#xff0c;如果非要保留字 MySQL 用用着重号&#xff0c;即 反引号 包括 select col from GROUP SQL Server 用用着重号…

寄存器详解

目录 前言&#xff1a; 通用寄存器 示例&#xff1a; 通用寄存器的划分 汇编指令 cpu物理地址的形成 地址加法器运算示例&#xff1a; 1. 相关部件提供段地址和偏移地址 2. 段地址和偏移地址送入地址加法器 3. 段地址*16 4. 求出物理地址 5. 输出物理地址 段的概念 Deb…

FeignClient接口的几种方式总结

FeignClient这个注解&#xff0c;已经封装了远程调用协议。在springboot的开发&#xff0c;或者微服务的开发过程中&#xff0c;我们需要跨服务调用&#xff0c;或者调用外部的接口&#xff0c;我们都可以使用FeignClient。 一、FeignClient介绍 FeignClient 注解是 Spring Cl…