From 8e44ce5a0c75861e5fdca999e3dc5b6f61faa585 Mon Sep 17 00:00:00 2001 From: TreeWish <1131093754@qq.com> Date: 星期四, 16 二月 2023 09:42:06 +0800 Subject: [PATCH] Merge branch 'master' of http://103.85.165.99:8989/r/LFWEB_NEW --- src/views/Tools/LayerTree.vue | 162 +++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 119 insertions(+), 43 deletions(-) diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue index 03592cc..6696753 100644 --- a/src/views/Tools/LayerTree.vue +++ b/src/views/Tools/LayerTree.vue @@ -15,7 +15,8 @@ @node-contextmenu="rightClick" @check-change="handleCheckChange" :default-checked-keys="handleTreeCheck" - ref="tree" > + ref="tree" + > <span class="slot-t-node" slot-scope="{ node, data }" @@ -38,7 +39,7 @@ ></el-input> </span> </span> - + </el-tree> <el-card @@ -143,6 +144,14 @@ import { image_layer } from '../../assets/js/index.js'; import ImageWMS from 'ol/source/ImageWMS'; import Image from 'ol/layer/Image'; +import GeoJSON from 'ol/format/GeoJSON.js'; +import Map from 'ol/Map.js'; + +import { Vector as VectorSource } from "ol/source"; +import { Vector as VectorLayer, } from "ol/layer"; + +import View from 'ol/View.js'; +import { Fill, Stroke, Style } from 'ol/style.js'; import { perms_selectLayers } from '../../api/api.js' export default { name: 'tree', @@ -297,6 +306,30 @@ deleteNode() { this.foo(); + var label = this.currentNode.data.label; + if (this.currentNode.data.layerType == 'WMS') { + for (var i in window.Viewer.imageryLayers_layers) { + if (window.Viewer.imageryLayers_layers[i].name === label) { + window.Viewer.imageryLayers.remove(window.Viewer.imageryLayers_layers[i]) + } + } + + } else if (this.currentNode.data.layerType == 'WFS') { + for (var i in window.Viewer.dataSources._dataSources) { + if (window.Viewer.dataSources._dataSources[i].name == label) { + window.Viewer.dataSources.remove(window.Viewer.dataSources._dataSources[i]); + std.push(data.label) + } + } + } + var layers_ol = window.map.getAllLayers(); + for (var i in layers_ol) { + var layerOl = layers_ol[i]; + if (layerOl.values_.name == label) { + window.map.removeLayer(layerOl); //鏄剧ず鍥惧眰 + } + } + this.$refs.tree.remove(this.currentNode); }, @@ -317,40 +350,41 @@ menuMoveF(type) { - // 灏嗗彉鍔ㄤ箣鍓嶇殑node澶囦唤 - var node= this.currentNode; - var data = this.currentData; - let copyNode = this.currentNode - // copyNode.previousSibling = {...node. } - // copyNode.nextSibling = {...node.nextSibling} - // window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode)) - let nodeData = {} - if (type==='up') { - // 涓婄Щ - if (node.previousSibling) { - // 鍒犻櫎鍘熷厛鐨刵ode - this.$refs.tree.remove(node.data) - // 鎷垮埌copy鐨刵ode - // nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode')) - // // 澶嶅埗璇ode鍒版寚瀹氫綅缃�(鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫悗涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node) - // this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data) - window.sessionStorage.removeItem('menuNode') - } else { - this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓婄骇') - } + // 灏嗗彉鍔ㄤ箣鍓嶇殑node澶囦唤 + var node = this.currentNode; + var data = this.currentData; + let copyNode = this.currentNode + + // copyNode.previousSibling = {...node. } + // copyNode.nextSibling = {...node.nextSibling} + // window.sessionStorage.setItem('menuNode',CircularJSON.stringify(copyNode)) + let nodeData = {} + if (type === 'up') { + // 涓婄Щ + if (node.previousSibling) { + // 鍒犻櫎鍘熷厛鐨刵ode + this.$refs.tree.remove(node.data) + // 鎷垮埌copy鐨刵ode + // nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode')) + // // 澶嶅埗璇ode鍒版寚瀹氫綅缃�(鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫悗涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node) + // this.$refs.tree.insertBefore(nodeData.data,nodeData.previousSibling.data) + window.sessionStorage.removeItem('menuNode') } else { - // 涓嬬Щ - if (node.nextSibling) { - this.$refs.tree.remove(node.data) - nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode')) - // 鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫墠涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node - this.$refs.tree.insertAfter(nodeData.data,nodeData.nextSibling.data) - window.sessionStorage.removeItem('menuNode') - } else { - this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓嬬骇') - } + this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓婄骇') } - }, + } else { + // 涓嬬Щ + if (node.nextSibling) { + this.$refs.tree.remove(node.data) + nodeData = CircularJSON.parse(window.sessionStorage.getItem('menuNode')) + // 鍙傛暟锛�1. 瑕佸鍔犵殑鑺傜偣鐨� data 2. 瑕佸鍔犵殑鑺傜偣鐨勫墠涓�涓妭鐐圭殑 data銆乲ey 鎴栬�� node + this.$refs.tree.insertAfter(nodeData.data, nodeData.nextSibling.data) + window.sessionStorage.removeItem('menuNode') + } else { + this.$message.warning('璇ヨ彍鍗曞凡缁忔槸褰撳墠灞傛渶涓嬬骇') + } + } + }, handleDragStart(node, ev) { @@ -410,15 +444,23 @@ if (std.length == 0 && checked == true) { this.setAddLayers(data) } - + var layers_ol = window.map.getAllLayers(); + for (var i in layers_ol) { + var layerOl = layers_ol[i]; + if (layerOl.values_.name == data.label) { + layerOl.setVisible(checked); //鏄剧ず鍥惧眰 + } + } }, setAddLayers(res) { if (res.layerType == 'WMS') { + var url = geoServerURl; if (res.url != null && res.url != undefined) { url = res.url } + var imageryLayers = window.Viewer.scene.imageryLayers; let layerWMS = new Cesium.WebMapServiceImageryProvider({ url: url, layers: res.resource, @@ -428,7 +470,29 @@ }, }); layerWMS.name = res.label; - window.Viewer.imageryLayers.addImageryProvider(layerWMS); + //閫忔槑搴� + var tdtAnnoLayer = imageryLayers.addImageryProvider(layerWMS); + if (res.opacity) { + tdtAnnoLayer.alpha = parseInt(res.opacity) / 100; + } + var layer2 = new Image({ + name: res.label, + source: new ImageWMS({ + crossOrigin: 'anonymous', + url: url, + + params: { + FORMAT: 'image/png', + VERSION: '1.1.1', + LAYERS: res.resource, + }, + }), + }); + if (res.opacity) { + layer2.setOpacity(parseInt(res.opacity) / 100); + } + window.map.addLayer(layer2); + } else if (res.layerType == 'WFS') { var url = res.url + "?service=WFS&version=1.0.0&request=GetFeature&typeName=" + res.resource + "&outputFormat=application%2Fjson" @@ -439,7 +503,8 @@ success: function (data) { var datasource = Cesium.GeoJsonDataSource.load(data, { stroke: Cesium.Color.YELLOW, - fill: Cesium.Color.YELLOW.withAlpha(0.5), + fill: Cesium.Color.YELLOW.withAlpha(0.1), + alpha: 0.1, strokeWidth: 8, clampToGround: true //鏄惁璐村湴 }); @@ -453,10 +518,17 @@ console.log("error"); } }); + + var vectorLayer = new VectorLayer({ + name: res.label, + source: new VectorSource({ + url: url, + format: new GeoJSON(), + }), + + }); + window.map.addLayer(vectorLayer); } - - - }, async layersStart() { const data = await perms_selectLayers(); @@ -581,17 +653,21 @@ watch: { filterText(val) { this.$refs.tree.filter(val); + }, }, mounted() { - + this.$bus.$on("treeDataCopy", (res) => { + this.$store.state.treeData = this.treeData; + this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys() + }); if (this.$store.state.showAllLayers == true) { this.layersStart(); this.$store.state.showAllLayers = false; } else { - this.treelayersStart(); - + this.treeData = this.$store.state.treeData; + this.$refs.tree.setCheckedKeys(this.$store.state.checkedKeys); } }, -- Gitblit v1.9.3