From a79e85a2de679cc4886d82eb70d0b90d3e2a8861 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期一, 08 五月 2023 09:33:51 +0800
Subject: [PATCH] 图层管理上移下移修改

---
 src/views/Tools/LayerTree.vue |  198 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 174 insertions(+), 24 deletions(-)

diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index f1f209e..3b587fb 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -115,7 +115,7 @@
       <div
         class="edit"
         @click="pellucidity()"
-        v-if="showlocal"
+        v-if="showopaque"
       >
         <i class="el-icon-tickets"></i>&nbsp;&nbsp;閫忔槑搴�
       </div>
@@ -227,6 +227,7 @@
     return {
       shwoHistogram: false,
       showlocal: false,
+      showopaque: false,
       eleId: "",
       isShow: false,
       currentData: "",
@@ -270,6 +271,7 @@
       mptLayer: [],
       optionts: [],
       proValue: null,
+      setCheeckedLayer: []
     };
   },
   methods: {
@@ -341,8 +343,13 @@
       }
       if (Node.data.children == null && Node.data.serveType == "Tileset") {
         this.showlocal = true;
+        this.showopaque = true;
+      } else if (Node.data.children == null && Node.data.serveType == "TMS") {
+        this.showlocal = true;
+        this.showopaque = false;
       } else if (Node.data.children == null && Node.data.serveType != "Tileset") {
         this.showlocal = false;
+        this.showopaque = false;
       }
       this.menuVisible = true;
 
@@ -484,15 +491,27 @@
 
 
     //妯″瀷瀹氫綅
-    positioning() {
+    async positioning() {
       this.menuVisible = false
-      for (var i in Viewer.scene.primitives._primitives) {
-        if (
-          Viewer.scene.primitives._primitives[i].id == this.currentData.cnName
-        ) {
-          Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
+
+      if (this.currentData.serveType == 'Tileset') {
+        for (var i in Viewer.scene.primitives._primitives) {
+          if (
+            Viewer.scene.primitives._primitives[i].id == this.currentData.cnName
+          ) {
+            Viewer.flyTo(Viewer.scene.primitives._primitives[i]);
+          }
+        }
+      } else if (this.currentData.serveType == 'TMS' && this.currentData.pubid) {
+        const data = await comprehensive_selectPubById({ id: this.currentData.pubid })
+        if (data.result.geom) {
+          var wkt = this.$wkt.parse(data.result.geom);
+          Viewer.camera.flyTo({
+            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
+          });
         }
       }
+
     },
     // 缂栬緫鑺傜偣
     editNode(data) {
@@ -954,6 +973,7 @@
             })
           );
           layer.name = res.cnName;
+          layer.id = "TMS"
           this.setChangeWMS();
         }
 
@@ -1025,12 +1045,12 @@
 
         layer.name = res.cnName;
 
-        if (data.result.geom) {
-          var wkt = this.$wkt.parse(data.result.geom);
-          Viewer.camera.flyTo({
-            destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
-          });
-        }
+        // if (data.result.geom) {
+        //   var wkt = this.$wkt.parse(data.result.geom);
+        //   Viewer.camera.flyTo({
+        //     destination: Cesium.Cartesian3.fromDegrees(wkt.coordinates[1], wkt.coordinates[0], 2000),
+        //   });
+        // }
         this.setChangeWMS();
       }
     },
@@ -1166,17 +1186,40 @@
       }
       this.$refs.tree.setCheckedKeys(std);
     },
+    getNewTree(obj, result) {
+      for (const i in obj) {
+        result.push(obj[i])
+        if (obj[i].children && obj[i].children.length > 0) {
+          this.getNewTree(obj[i].children, result)
+        }
+      }
+      return result
+    },
+
+
+
     // 鏌ヨ
     filterNode(value, data) {
-
       if (!value) return true;
       return data.cnName.indexOf(value) !== -1;
     },
 
     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,
@@ -1188,23 +1231,130 @@
           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 {
+        if (val.length > 0) {
+          if (val[0].type == 1 && val[0].isProject == 1) {//椤圭洰鍒嗙被
+            var std = [];
+            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.push(std_val[j])
+              }
+            }
+            var value = this.$store.state.isProjectLayer;
+            for (var i in value) {
+              std.push(value[i])
+            }
 
-        this.$store.state.pigCode = null
-        this.setChangeWMS();
+
+            this.setProjectLayer(std);
+          } 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);
+
+
       }
+
+
     },
+
+    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 '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);
+    },
+    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 = [];
+    },
+
+
     setChangeProLayer() {
+
       var value = this.$store.state.isProjectLayer;
+
       if (value.length != 0) {
 
         var std = [];

--
Gitblit v1.9.3