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