From ec3342e1b34dd02f33dae9bed2db16a14ae8096d Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期三, 21 十二月 2022 17:06:11 +0800
Subject: [PATCH] 1

---
 src/views/Tools/LayerTree.vue |   92 +++++++++++++++++++++++++++++-----------------
 1 files changed, 58 insertions(+), 34 deletions(-)

diff --git a/src/views/Tools/LayerTree.vue b/src/views/Tools/LayerTree.vue
index 0c2d1a8..66c1c7c 100644
--- a/src/views/Tools/LayerTree.vue
+++ b/src/views/Tools/LayerTree.vue
@@ -94,6 +94,8 @@
 </template>
 
 <script>
+import ImageWMS from 'ol/source/ImageWMS';
+import Image from 'ol/layer/Image';
 export default {
   name: 'tree',
   data() {
@@ -158,14 +160,12 @@
   },
   methods: {
     NodeBlur(Node, data) {
-      console.log(Node, data);
       if (data.label.length === 0) {
         this.$message.error('鑿滃崟鍚嶄笉鍙负绌猴紒');
         return false;
       } else {
         if (data.isEdit) {
           this.$set(data, 'isEdit', false);
-          console.log(data.isEdit);
         }
         this.$nextTick(() => {
           this.$refs['slotTreeInput' + data.id].$refs.input.focus();
@@ -297,36 +297,48 @@
     handleCheckChange(data, checked, indeterminate) {
       if (data.children != null) return;
       var std = [];
-      if (checked == true) {
-        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
-          var val_id =
-            window.Viewer.imageryLayers._layers[i].imageryProvider.name;
-          if (val_id == data.label) {
-            std.push(data.label);
-          }
-        }
-        if (std.length == 0) {
-          let layerWMS = new Cesium.WebMapServiceImageryProvider({
-            url: geoServerURl,
-            layers: data.resource,
-            parameters: {
-              transparent: true,
-              format: 'image/png',
-            },
-          });
-          layerWMS.name = data.label;
-          window.Viewer.imageryLayers.addImageryProvider(layerWMS);
-        }
-      } else {
-        for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
-          var val_id =
-            window.Viewer.imageryLayers._layers[i].imageryProvider.name;
-          if (val_id == data.label) {
-            const img_layer = window.Viewer.imageryLayers._layers[i];
-            window.Viewer.imageryLayers.remove(img_layer);
-          }
+      var layers_ol = window.map.getAllLayers();
+      for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
+        var val_id =
+          window.Viewer.imageryLayers._layers[i].imageryProvider.name;
+        if (val_id == data.label) {
+          const img_layer = window.Viewer.imageryLayers._layers[i];
+          img_layer.show = checked;
         }
       }
+      for (var i in layers_ol) {
+        var layerOl = layers_ol[i];
+        if (layerOl.values_.name == data.label) {
+          layerOl.setVisible(checked); //鏄剧ず鍥惧眰
+        }
+      }
+    },
+    setAddLayers(res) {
+      let layerWMS = new Cesium.WebMapServiceImageryProvider({
+        url: geoServerURl,
+        layers: res.resource,
+        parameters: {
+          transparent: true,
+          format: 'image/png',
+        },
+      });
+      layerWMS.name = res.label;
+      window.Viewer.imageryLayers.addImageryProvider(layerWMS);
+
+      var layer2 = new Image({
+        name: res.label,
+        source: new ImageWMS({
+          crossOrigin: 'anonymous',
+          url: geoServerURl,
+
+          params: {
+            FORMAT: 'image/png',
+            VERSION: '1.1.1',
+            LAYERS: res.resource,
+          },
+        }),
+      });
+      window.map.addLayer(layer2);
     },
   },
   watch: {
@@ -337,14 +349,26 @@
   mounted() {
     var std = [];
     var val = this.treeData[0].children;
-    for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
-      var val_id = window.Viewer.imageryLayers._layers[i].imageryProvider.name;
+    if (this.$store.state.showAllLayers == true) {
       for (var j = 0; j < val.length; j++) {
-        if (val_id == val[j].label) {
-          std.push(val[j].id);
+        std.push(val[j].id);
+        this.setAddLayers(val[j]);
+      }
+
+      this.$store.state.showAllLayers = false;
+    } else {
+      for (var i = 0; i < window.Viewer.imageryLayers._layers.length; i++) {
+        var val_id = window.Viewer.imageryLayers._layers[i];
+        if (val_id.show == true) {
+          for (var j = 0; j < val.length; j++) {
+            if (val_id.imageryProvider.name == val[j].label) {
+              std.push(val[j].id);
+            }
+          }
         }
       }
     }
+
     this.$refs.tree.setCheckedKeys(std);
   },
 };

--
Gitblit v1.9.3