From f3e4a728bca47d424fb3f9f0e2ef438cec58a2e3 Mon Sep 17 00:00:00 2001
From: liuyg <liuyg@qq.com>
Date: Thu, 31 Mar 2022 13:36:20 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/school-web

---
 src/pcviews/specialmap/welcome.vue |   47 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/src/pcviews/specialmap/welcome.vue b/src/pcviews/specialmap/welcome.vue
index 72a60c2..1968d5c 100644
--- a/src/pcviews/specialmap/welcome.vue
+++ b/src/pcviews/specialmap/welcome.vue
@@ -74,7 +74,7 @@
             </div>
         </div>
 
-        <!-- <div v-show="layerList.length > 0" class="layer-manage-container">
+        <div v-show="layerList.length > 0" class="layer-manage-container">
             <div class="header">图层管理</div>
             <ul class="content">
                 <li v-for="(item, index) in layerList" :key="index">
@@ -82,7 +82,7 @@
                     <el-switch v-model="item.flag" @change="switchChange(item)"></el-switch>
                 </li>
             </ul>
-        </div>-->
+        </div>
     </div>
 </template>
 
@@ -92,6 +92,7 @@
 
 let pathLayer = null
 let pointLayer = null
+let special = []
 
 export default {
     data () {
@@ -146,6 +147,14 @@
                     this.urlDataName = this.$route.query.name
                     this.getData()
                 } else if (newData.query.name != this.urlDataName) {
+                    if (special.length > 0) {
+                        special.forEach(item => {
+                            global.viewer.imageryLayers.remove(
+                                item.layer
+                            )
+                        })
+                    }
+                    special = []
                     this.audioSynth.cancel()
                     global.viewer.removeLayer(pathLayer)
                     global.viewer.removeLayer(pointLayer)
@@ -169,22 +178,33 @@
     methods: {
         switchChange (item) {
             if (item.flag == true) {
-
+                this.addArcgisLayer(item.url, item.name)
             } else {
-
+                this.removeArcgisLayer(item.name)
             }
         },
 
-        addArcgisLayer (url) {
-            global.viewer.imageryLayers.addImageryProvider(
+        addArcgisLayer (url, name) {
+            var layer = global.viewer.imageryLayers.addImageryProvider(
                 new global.DC.Namespace.Cesium.ArcGisMapServerImageryProvider({
                     url: url
                 })
             )
+            special.push({
+                layer,
+                name
+            })
         },
 
-        removeArcgisLayer () {
-
+        removeArcgisLayer (name) {
+            special.forEach((item, index) => {
+                if (item.name == name) {
+                    global.viewer.imageryLayers.remove(
+                        item.layer
+                    )
+                    special.splice(index, 1)
+                }
+            })
         },
 
         getData () {
@@ -213,7 +233,7 @@
                         this.layerList.push({ flag: false, name: item, url: url[index] })
                     })
                     this.layerList[0].flag = true
-                    this.addArcgisLayer(this.layerList[0].url)
+                    this.addArcgisLayer(this.layerList[0].url, this.layerList[0].name)
                 }
 
                 var a = result.lx.split(';')
@@ -314,6 +334,15 @@
             }
         },
         closeModel () {
+            if (special.length > 0) {
+                special.forEach(item => {
+                    global.viewer.imageryLayers.remove(
+                        item.layer
+                    )
+                })
+            }
+            special = []
+
             global.viewer.removeLayer(pathLayer)
             global.viewer.removeLayer(pointLayer)
 

--
Gitblit v1.9.3