From b4c7dc1ef3dba0aafca28993a27621d0d3ed6080 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期六, 27 五月 2023 16:13:33 +0800 Subject: [PATCH] 1 --- src/views/Tools/LayerTree.vue | 259 +++++++++++++-------------------------------------- 1 files changed, 66 insertions(+), 193 deletions(-) diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue index f3f60e3..d1577b4 100644 --- a/src/views/Tools/LayerTree.vue +++ b/src/views/Tools/LayerTree.vue @@ -81,8 +81,6 @@ </template> <script> -import ImageWMS from "ol/source/ImageWMS"; -import Image from "ol/layer/Image"; import GeoJSON from "ol/format/GeoJSON.js"; import queryinfo from "./queryinfo.vue"; import { Vector as VectorSource } from "ol/source"; @@ -95,6 +93,7 @@ data () { return { isBusy: false, // 姝e繖 + lastPrjCode: "", // 鏈�鍚庨�夋嫨椤圭洰缂栫爜 showProp: false, // 灞炴�� shwoHistogram: false, // 閽诲瓟鏌辩姸鍥� showLocal: false, // 瀹氫綅 @@ -131,7 +130,7 @@ }, }, mounted () { - this.getMenus() + this.getMenus(); this.$bus.$on("treeDataCopy", (res) => { this.$store.state.treeData = this.treeData; this.$store.state.checkedKeys = this.$refs.tree.getCheckedKeys(); @@ -455,15 +454,15 @@ addTMSLayers (layers) { for (let i in layers) { let res = layers[i]; - let url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url; + res.url = res.url.indexOf("{host}") > -1 ? res.url.replace("{host}", iisHost) : res.url; if (res.pubid) { - this.setQueryPubid(res); + this.setTMSLayerByPubid(res); continue; } let layer = Viewer.imageryLayers.addImageryProvider(new Cesium.UrlTemplateImageryProvider({ - url: url, + url: res.url, maximumLevel: 22, })); layer.id = res.id; @@ -572,208 +571,82 @@ tileset._root.transform = matrix; // Viewer.flyTo(tileset); }, - async setQueryPubid (res) { - const data = await comprehensive_selectPubById({ id: res.pubid }) - if (data.code != 200) { - // - } else { - let url = data.result.url; - if (res.url.indexOf("{host}") != -1) { - url = res.url.replace("{host}", iisHost); - } - let min = data.result.min; - let max = data.result.max; - let layer; - if (max > 0) { - layer = Viewer.imageryLayers.addImageryProvider( - new Cesium.UrlTemplateImageryProvider({ - url: url, - minimumLevel: min, - maximumLevel: max, - }) - ); - } else { - layer = Viewer.imageryLayers.addImageryProvider( - new Cesium.UrlTemplateImageryProvider({ - url: url, - minimumLevel: min, - }) - ); - } + // 鏍规嵁Pubid璁剧疆TMS鍥惧眰 + async setTMSLayerByPubid (res) { + const data = await comprehensive_selectPubById({ id: res.pubid }); + if (!data || data.code != 200) return; - layer.name = res.cnName; - if (data.result.geom) { - // let wkt = this.$wkt.parse(data.result.geom); - // Viewer.camera.flyTo({ - // destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000), - // }); - } - this.setChangeWMS(); - } + let provider = data.result.max > 0 ? + new Cesium.UrlTemplateImageryProvider({ + url: res.url, + minimumLevel: data.result.min, + maximumLevel: data.result.max + }) : + new Cesium.UrlTemplateImageryProvider({ + url: res.url, + minimumLevel: data.result.min + }); + + let layer = Viewer.imageryLayers.addImageryProvider(provider); + layer.name = res.cnName; + + // if (data.result.geom) { + // let wkt = this.$wkt.parse(data.result.geom); + // Viewer.camera.flyTo({ + // destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000) + // }); + // } }, // 鍒囨崲椤圭洰 - async prjChanged (res) { + prjChanged (code) { + this.$store.state.pigCode = code; + if (code) { + this.isBusy = true; + let checkedLayers = this.getCheckedLayersByCode(code); - }, - - async setproChange (res) { - if (res) { - this.setCheeckedLayer = this.$refs.tree.getCheckedKeys(); - this.$store.state.pigCode = res; - let st_code = this.menus.filter(rs => { - if (rs.code == res) { - return rs - } - }) - - let val = this.$store.state.oldTree.filter(rs => { - if (rs.enName == st_code[0].code) { - return rs - } - }) - this.removeAllLayer(); - let obj = { - dirid: res, - pageIndex: 1, - pageSize: 10, + let checkedKeys = []; + for (let i in checkedLayers) { + checkedKeys.push(checkedLayers[i].id); } - const data = await project_selectByDirid(obj); - if (data.code != 200) { - this.$message.error("鍒楄〃鑾峰彇澶辫触"); - return; - } + this.$refs.tree.setCheckedKeys(checkedKeys); + sessionStorage.setItem("checkedLayers", JSON.stringify(checkedLayers)); + this.isBusy = false; + } - if (data.result[0]) { - let geom = data.result[0].geom - if (geom) { - let wkt = this.$wkt.parse(geom) - Viewer.camera.flyTo({ - destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000), - }); - } - } - //this.cannelTerrainLayer(); - //this.setTerrainMptLayer(); - //娓呯┖鍥惧眰鏍戦�変腑鐘舵�� - this.$refs.tree.setCheckedKeys([]); - if (val.length > 0) { - if (val[0].type == 1 && val[0].isProject == 1) {//椤圭洰鍒嗙被 - let std_check = []; - for (let i in val) { - let std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], []) - for (let j in std_val) { - std_check.push(std_val[j]) - } - } - let value = this.$store.state.isProjectLayer; - for (let i in value) { - - std_check.push(value[i]) - } - this.setProjectLayer(std_check); - } else { - this.setChangeProLayer(); - } - } else { - this.setChangeProLayer(); - } - } else { - this.removeAllLayer(); - this.$store.state.pigCode = null; - this.$refs.tree.setCheckedKeys(this.setCheeckedLayer); - let std = []; - for (let i in this.setCheeckedLayer) { - std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data) - } - this.setProjectLayer(std); + for (let i = 0, c = this.treeData.length; i < c; i++) { + this.handleCheckChange(this.treeData[i], true); } }, - removeAllLayer () { - for (let j in Viewer.scene.primitives._primitives) { - Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) + // 鏍规嵁椤圭洰缂栫爜鑾峰彇閫変腑鍥惧眰 + getCheckedLayersByCode (code) { + let layers = []; + for (let i = 0, c = this.treeData.length; i < c; i++) { + this.getCheckedChildLayersByCode(this.treeData[i], code, layers, false); } - for (let i in window.Viewer.dataSources._dataSources) { - window.Viewer.dataSources.remove( - window.Viewer.dataSources._dataSources[i] - ); - } - for (let i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { - let val_id = window.Viewer.imageryLayers._layers[i].id; - if (val_id == 'TMS') { - window.Viewer.imageryLayers.remove( - window.Viewer.imageryLayers._layers[i] - ); - } - } - for (let i in this.mptLayer) { - this.mptLayer[i].deleteObject(); - this.mptLayer.splice(i, 1) - } - this.mptLayer = []; + + return layers; }, - setProjectLayer (res) { - let layerid = []; - for (let j in res) { - layerid.push(res[j].id) - } - this.$refs.tree.setCheckedKeys(layerid); - // let value = this.$refs.tree.getCheckedNodes(); - // this.$bus.$emit("showMenuLayer", value); - let listWMS = []; - let listWFS = []; - let listTileset = []; - let listTMS = []; - let listMpt = []; - for (let i in res) { - if (res[i].type == 2) { - switch (res[i].serveType) { - case 'WMS': - listWMS.push(res[i]) - break; - case 'WFS': - listWFS.push(res[i]) - break; - case '3DML': - case 'Tileset': - listTileset.push(res[i]) - break; - case 'Mpt': - listMpt.push(res[i]) - break; - case 'TMS': - listTMS.push(res[i]) - break; + // 鏍规嵁椤圭洰缂栫爜鑾峰彇閫変腑瀛愬浘灞� + getCheckedChildLayersByCode (data, code, layers, isPrj) { + if (data.children && data.children.length) { + for (let i = 0, c = data.children.length; i < c; i++) { + let layer = data.children[i]; + if (layer.children && layer.children.length) { + let flag = layer.type == 1 && layer.isProject && layer.enName == code; + this.getCheckedChildLayersByCode(layer, code, layers, flag); + continue; + } + + if (layer.type == 2 && (layer.isProject || isPrj)) { + layers.push(layer); } } + return; } - // this.setChangeProLayer(); - this.setChangeWMS(listWMS, true); - this.setChangeWFS(listWFS, true); - this.setChangeTileset(listTileset, true); - this.setChangeTMS(listTMS, true); - this.setChangeMpt(listMpt, true); - }, - getNewTree (obj, result) { - for (const i in obj) { - console.log(obj[i].cnName) - result.push(obj[i]) - if (obj[i].children && obj[i].children.length > 0) { - this.getNewTree(obj[i].children, result) - } - } - return result - }, - setChangeProLayer () { - let value = this.$store.state.isProjectLayer; - if (value.length != 0) { - let std = []; - for (let i in value) { - std.push(value[i].id) - } - this.$refs.tree.setCheckedKeys(std); - this.$bus.$emit("showMenuLayer", value); + if (data.type == 2 && (data.isProject || isPrj)) { + layers.push(data); } }, // 娣诲姞WFS鍥惧眰 * -- Gitblit v1.9.3