From 7a827ef306c503e788220f087193d50b8afd315b Mon Sep 17 00:00:00 2001 From: Surpriseplus <845948745@qq.com> Date: 星期一, 22 五月 2023 09:02:07 +0800 Subject: [PATCH] 图层管理修改 --- src/views/Tools/LayerTree.vue | 173 ++++++++++++++++++++++++++++++++++++++++-- src/components/preview_map.vue | 21 +++-- src/components/mapsdk.vue | 3 3 files changed, 178 insertions(+), 19 deletions(-) diff --git a/src/components/mapsdk.vue b/src/components/mapsdk.vue index 2fa800f..2677e44 100644 --- a/src/components/mapsdk.vue +++ b/src/components/mapsdk.vue @@ -1013,7 +1013,8 @@ window.terrainLayer = null; window.terrainLayer = new Cesium.CesiumTerrainProvider({ - url: LFData + '/3d/terrain/dem20230321' + // url: LFData + '/3d/terrain/dem20230321' + url: demLayer }); Viewer.terrainProvider = window.terrainLayer Viewer.camera.flyTo({ diff --git a/src/components/preview_map.vue b/src/components/preview_map.vue index 637c3c9..19f76d2 100644 --- a/src/components/preview_map.vue +++ b/src/components/preview_map.vue @@ -932,19 +932,24 @@ Viewer.scene.globe.depthTestAgainstTerrain = true; // window.elevationTool = new SmartEarth.ElevationTool(window.sg); // elevationTool.setContourColor("#F1D487"); - var option = { - url: window.sceneConfig.SGUrl, - layerName: window.sceneConfig.mptName, - requestVertexNormals: true, - }; - window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + // var option = { + // url: window.sceneConfig.SGUrl, + // layerName: window.sceneConfig.mptName, + // requestVertexNormals: true, + // }; + // window.terrainLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + window.terrainLayer = new Cesium.CesiumTerrainProvider({ + url: demLayer + }); + Viewer.terrainProvider = window.terrainLayer if (this.$store.state.previewLayer) { var res = this.$store.state.previewLayer; var type = res.type; if (type == 'DEM') { - window.terrainLayer.deleteObject(); + // window.terrainLayer.deleteObject(); + Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); window.terrainLayer = null; window.terrainLayer = new Cesium.CesiumTerrainProvider({ url: res.url @@ -959,7 +964,7 @@ } }); - } else if (res.url.indexOf('.png') != -1) { + } else if (type == 'DOM') { var wkt = this.$wkt.parse(res.geom); var height = this.getHeight(wkt.coordinates[2]) window.BaseMapLayer = Viewer.imageryLayers.addImageryProvider( diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue index 5006a68..5730204 100644 --- a/src/views/Tools/LayerTree.vue +++ b/src/views/Tools/LayerTree.vue @@ -1183,9 +1183,22 @@ }, async setproChange(res) { - - this.$store.state.pigCode = res; if (res) { + this.setCheeckedLayer = this.$refs.tree.getCheckedKeys(); + + this.$store.state.pigCode = res; + var st_code = this.optionts.filter(rs => { + if (rs.code == res) { + return rs + } + }) + + var val = this.$store.state.oldTree.filter(rs => { + if (rs.enName == st_code[0].code) { + return rs + } + }) + this.removeAllLayer(); var obj = { dirid: res, pageIndex: 1, @@ -1197,21 +1210,161 @@ this.$message.error("鍒楄〃鑾峰彇澶辫触"); return; } + if (data.result[0]) { var geom = data.result[0].geom - var wkt = this.$wkt.parse(geom) - Viewer.camera.flyTo({ - destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000), - }); + if (geom) { + var wkt = this.$wkt.parse(geom) + Viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[0].toFixed(6), wkt.coordinates[1].toFixed(6), 5000), + }); + } } - this.setChangeProLayer(); - } else { + this.cannelTerrainLayer(); + this.setTerrainMptLayer(); + //娓呯┖鍥惧眰鏍戦�変腑鐘舵�� + this.$refs.tree.setCheckedKeys([]); - this.$store.state.pigCode = null - this.setChangeWMS(); + + if (val.length > 0) { + + if (val[0].type == 1 && val[0].isProject == 1) {//椤圭洰鍒嗙被 + + var std_check = []; + for (var i in val) { + var std_val = this.getNewTree([this.$refs.tree.getNode(val[i].id).data], []) + for (var j in std_val) { + std_check.push(std_val[j]) + } + } + + + var value = this.$store.state.isProjectLayer; + for (var 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); + var std = []; + for (var i in this.setCheeckedLayer) { + std.push(this.$refs.tree.getNode(this.setCheeckedLayer[i]).data) + } + this.setProjectLayer(std); } }, + removeAllLayer() { + for (var j in Viewer.scene.primitives._primitives) { + Viewer.scene.primitives.remove(Viewer.scene.primitives._primitives[j]) + } + for (var i in window.Viewer.dataSources._dataSources) { + window.Viewer.dataSources.remove( + window.Viewer.dataSources._dataSources[i] + ); + } + for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) { + var val_id = window.Viewer.imageryLayers._layers[i].id; + if (val_id == 'TMS') { + window.Viewer.imageryLayers.remove( + window.Viewer.imageryLayers._layers[i] + ); + } + } + for (var i in this.mptLayer) { + this.mptLayer[i].deleteObject(); + this.mptLayer.splice(i, 1) + } + this.mptLayer = []; + }, + setProjectLayer(res) { + var layerid = []; + for (var i in res) { + layerid.push(res[i].id) + } + this.$refs.tree.setCheckedKeys(layerid); + // var value = this.$refs.tree.getCheckedNodes(); + // this.$bus.$emit("showMenuLayer", value); + + var listWMS = []; + var listWFS = []; + var listTileset = []; + var listTMS = []; + var listMpt = []; + for (var 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; + + } + } + } + // 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 + }, + cannelTerrainLayer() { + //娓呯┖鍦板舰 + if (window.terrainMptLayer) { + window.terrainMptLayer.deleteObject(); + window.terrainMptLayer = null; + } + if (window.terrainDemLayer) { + Viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider(); + window.terrainDemLayer = null; + } + }, + setTerrainMptLayer() { + // //榛樿鍦板舰MPT + // var option = { + // url: window.sceneConfig.SGUrl, + // layerName: window.sceneConfig.mptName, + // requestVertexNormals: true, + // }; + // window.terrainMptLayer = sgworld.Creator.sfsterrainprovider("", option, "", true, ""); + window.terrainDemLayer = new Cesium.CesiumTerrainProvider({ + // url: LFData + '/3d/terrain/dem20230321' + url: demLayer + }); + Viewer.terrainProvider = window.terrainDemLayer + }, setChangeProLayer() { var value = this.$store.state.isProjectLayer; if (value.length != 0) { -- Gitblit v1.9.3