From b4732fd737dec0e17aaec559168e6377de1e0347 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 28 Mar 2022 15:25:08 +0800
Subject: [PATCH] 404跳转问题,活动加载删除问题

---
 src/router/page/index.js                    |    6 
 src/components/map/components/dimension.vue |  436 ++++++++++++++++++++++---------------------
 src/pcviews/specialmap/welcome.vue          |   47 +++
 src/components/map/index.vue                |    5 
 src/components/error-page/404.vue           |   32 +-
 src/components/map/components/mapPopup.vue  |   22 +
 src/App.vue                                 |   15 +
 7 files changed, 316 insertions(+), 247 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index 4dfe049..76a0761 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,6 +1,6 @@
 <template>
     <div id="app" :class="{ cantdoit: cantdoits }">
-        <router-view></router-view>
+        <router-view v-if="isRouterActive"></router-view>
     </div>
 </template>
 
@@ -8,9 +8,13 @@
 import AMapLoader from '@amap/amap-jsapi-loader'
 export default {
     name: 'App',
+    provide () {
+        return { reload: this.reload }
+    },
     data () {
         return {
-            cantdoits: false
+            cantdoits: false,
+            isRouterActive: true
         }
     },
     mounted () {
@@ -82,6 +86,13 @@
         }
     },
     methods: {
+        reload () {
+            this.isRouterActive = false
+            this.$nextTick(() => {
+                this.isRouterActive = true
+                this.$store.commit('SET_VIEWEREXIST', false)
+            })
+        },
         getQueryString (name) {
             const inlength =
                 window.location.href.indexOf('?' + name + '=') + name.length + 2
diff --git a/src/components/error-page/404.vue b/src/components/error-page/404.vue
index b69e54e..1081499 100644
--- a/src/components/error-page/404.vue
+++ b/src/components/error-page/404.vue
@@ -1,24 +1,28 @@
 <template>
-  <div class="error-page">
-    <div class="img"
-         style=" background-image: url('/img/bg/404.svg');"></div>
-    <div class="content">
-      <h1>404</h1>
-      <div class="desc">抱歉,你访问的页面不存在</div>
-      <div class="actions">
-        <router-link :to="{path:'/'}">
-          <el-button type="primary">返回首页</el-button>
-        </router-link>
-      </div>
+    <div class="error-page">
+        <div class="img" style=" background-image: url('/img/bg/404.svg');"></div>
+        <div class="content">
+            <h1>404</h1>
+            <div class="desc">抱歉,你访问的页面不存在</div>
+            <div class="actions">
+                <el-button @click="goHome" type="primary">返回首页</el-button>
+            </div>
+        </div>
     </div>
-  </div>
 </template>
 
 <script>
 export default {
-  name: 'error-404'
+    name: 'error-404',
+    inject: ['reload'],
+    methods: {
+        goHome () {
+            this.$router.push({ path: '/pcLayout/default' })
+            this.reload()
+        }
+    }
 }
 </script>
 <style lang="scss" scoped>
-@import "./style.scss";
+@import './style.scss';
 </style>
diff --git a/src/components/map/components/dimension.vue b/src/components/map/components/dimension.vue
index 6d7d2e4..03bb72a 100644
--- a/src/components/map/components/dimension.vue
+++ b/src/components/map/components/dimension.vue
@@ -59,6 +59,13 @@
 let viewerHeight = 950
 let smallViewerHeight = 1950
 
+const mixVH = 500
+const maxVH = 950
+const oneVH = 500
+const twoVH = 650
+const fourVH = 800
+const fiveVH = 950
+
 // const wallLayer = null
 
 export default {
@@ -207,16 +214,17 @@
 
                     videoLayer.addOverlay(cameraVideo)
 
-                    baseMapLayer =
-                        global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
-                            url: '/wp/{z}/{x}/{y}.png',
-                            fileExtension: 'png'
-                            // minimumLevel: 19
-                        }))
+                    // baseMapLayer =
+                    //     global.viewer.imageryLayers.addImageryProvider(new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+                    //         url: '/wp/{z}/{x}/{y}.png',
+                    //         fileExtension: 'png'
+                    //         // minimumLevel: 19
+                    //     }))
 
                     global.viewer.imageryLayers.addImageryProvider(
                         new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
                             url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/FZ25DMap/MapServer/WMTS',
+                            // url: 'http://arcgis.jxpskj.com:6080/arcgis/rest/services/PX25DMap/Pingxiang25DMap18000/MapServer/WMTS',
                             layer: 'fzsw2019',
                             style: 'default',
                             tileMatrixSetID: 'default028mm',
@@ -325,11 +333,11 @@
                     })
 
                     // 最小
-                    global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 500
-                    global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1500
+                    global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH
+                    global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH + 1000
                     // 最大
-                    global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 950
-                    global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1950
+                    global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH
+                    global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH + 1000
 
                     // 设置相机缩小时的速率
                     global.viewer.scene.screenSpaceCameraController._minimumZoomRate = 2000
@@ -436,178 +444,180 @@
                         }
                     })
 
-                    document.querySelector('.dc-zoom-controller').children[1].onclick =
-                        function () {
-                            if (that.dimensionValue == '真三维') {
-                                global.viewer.camera.setView({
-                                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
-                                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
-                                        that.mapCenter[0],
-                                        that.mapCenter[1],
-                                        220.0
-                                    ),
-                                    orientation: {
-                                        // 指向
-                                        heading: global.DC.Namespace.Cesium.Math.toRadians(-9),
-                                        // 视角
-                                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54),
-                                        roll: 0.0
+                    this.$nextTick(() => {
+                        document.querySelector('.dc-zoom-controller').children[1].onclick =
+                            function () {
+                                if (that.dimensionValue == '真三维') {
+                                    global.viewer.camera.setView({
+                                        // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+                                        // fromDegrees()方法,将经纬度和高程转换为世界坐标
+                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+                                            that.mapCenter[0],
+                                            that.mapCenter[1],
+                                            220.0
+                                        ),
+                                        orientation: {
+                                            // 指向
+                                            heading: global.DC.Namespace.Cesium.Math.toRadians(-9),
+                                            // 视角
+                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-34.54),
+                                            roll: 0.0
+                                        }
+                                    })
+                                } else {
+                                    global.viewer.camera.setView({
+                                        // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+                                        // fromDegrees()方法,将经纬度和高程转换为世界坐标
+                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+                                            that.mapCenter[0],
+                                            that.mapCenter[1],
+                                            that.mapCenter[2]
+                                        ),
+                                        orientation: {
+                                            // 指向
+                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                            // 视角
+                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+                                            roll: 0.0
+                                        }
+                                    })
+                                }
+                            }
+
+                        document.querySelector('.dc-zoom-controller').children[2].onclick =
+                            function () {
+                                if (
+                                    that.dimensionValue != undefined &&
+                                    that.dimensionValue != '真三维'
+                                ) {
+                                    if (viewerHeight == oneVH) {
+                                        global.viewer.camera.setView({
+                                            destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+                                                global.viewer.camera.positionCartographic.longitude,
+                                                global.viewer.camera.positionCartographic.latitude,
+                                                twoVH
+                                            ),
+                                            orientation: {
+                                                // 指向
+                                                heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                                // 视角
+                                                pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+                                                roll: 0.0
+                                            }
+                                        })
+                                        viewerHeight = twoVH
+                                        this.$emit('change-wheel', false, 'startWheel')
+                                        return
                                     }
-                                })
-                            } else {
-                                global.viewer.camera.setView({
-                                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
-                                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                                    destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
-                                        that.mapCenter[0],
-                                        that.mapCenter[1],
-                                        that.mapCenter[2]
-                                    ),
-                                    orientation: {
-                                        // 指向
-                                        heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                                        // 视角
-                                        pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                                        roll: 0.0
+
+                                    if (viewerHeight == twoVH) {
+                                        global.viewer.camera.setView({
+                                            destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+                                                global.viewer.camera.positionCartographic.longitude,
+                                                global.viewer.camera.positionCartographic.latitude,
+                                                fourVH
+                                            ),
+                                            orientation: {
+                                                // 指向
+                                                heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                                // 视角
+                                                pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+                                                roll: 0.0
+                                            }
+                                        })
+                                        viewerHeight = fourVH
+                                        this.$emit('change-wheel', false, 'startWheel')
+                                        return
                                     }
-                                })
-                            }
-                        }
 
-                    document.querySelector('.dc-zoom-controller').children[2].onclick =
-                        function () {
-                            if (
-                                that.dimensionValue != undefined &&
-                                that.dimensionValue != '真三维'
-                            ) {
-                                if (viewerHeight == 500) {
-                                    global.viewer.camera.setView({
-                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                                            global.viewer.camera.positionCartographic.longitude,
-                                            global.viewer.camera.positionCartographic.latitude,
-                                            650
-                                        ),
-                                        orientation: {
-                                            // 指向
-                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                                            // 视角
-                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                                            roll: 0.0
-                                        }
-                                    })
-                                    viewerHeight = 650
-                                    this.$emit('change-wheel', false, 'startWheel')
-                                    return
-                                }
-
-                                if (viewerHeight == 650) {
-                                    global.viewer.camera.setView({
-                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                                            global.viewer.camera.positionCartographic.longitude,
-                                            global.viewer.camera.positionCartographic.latitude,
-                                            800
-                                        ),
-                                        orientation: {
-                                            // 指向
-                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                                            // 视角
-                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                                            roll: 0.0
-                                        }
-                                    })
-                                    viewerHeight = 800
-                                    this.$emit('change-wheel', false, 'startWheel')
-                                    return
-                                }
-
-                                if (viewerHeight == 800) {
-                                    global.viewer.camera.setView({
-                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                                            global.viewer.camera.positionCartographic.longitude,
-                                            global.viewer.camera.positionCartographic.latitude,
-                                            950
-                                        ),
-                                        orientation: {
-                                            // 指向
-                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                                            // 视角
-                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                                            roll: 0.0
-                                        }
-                                    })
-                                    viewerHeight = 950
-                                    this.$emit('change-wheel', false, 'startWheel')
+                                    if (viewerHeight == fourVH) {
+                                        global.viewer.camera.setView({
+                                            destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+                                                global.viewer.camera.positionCartographic.longitude,
+                                                global.viewer.camera.positionCartographic.latitude,
+                                                fiveVH
+                                            ),
+                                            orientation: {
+                                                // 指向
+                                                heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                                // 视角
+                                                pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+                                                roll: 0.0
+                                            }
+                                        })
+                                        viewerHeight = fiveVH
+                                        this.$emit('change-wheel', false, 'startWheel')
+                                    }
                                 }
                             }
-                        }
 
-                    document.querySelector('.dc-zoom-controller').children[0].onclick =
-                        function () {
-                            if (
-                                that.dimensionValue != undefined &&
-                                that.dimensionValue != '真三维'
-                            ) {
-                                if (viewerHeight == 950) {
-                                    global.viewer.camera.setView({
-                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                                            global.viewer.camera.positionCartographic.longitude,
-                                            global.viewer.camera.positionCartographic.latitude,
-                                            800
-                                        ),
-                                        orientation: {
-                                            // 指向
-                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                                            // 视角
-                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                                            roll: 0.0
-                                        }
-                                    })
-                                    viewerHeight = 800
-                                    this.$emit('change-wheel', false, 'startWheel')
-                                    return
-                                }
+                        document.querySelector('.dc-zoom-controller').children[0].onclick =
+                            function () {
+                                if (
+                                    that.dimensionValue != undefined &&
+                                    that.dimensionValue != '真三维'
+                                ) {
+                                    if (viewerHeight == fiveVH) {
+                                        global.viewer.camera.setView({
+                                            destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+                                                global.viewer.camera.positionCartographic.longitude,
+                                                global.viewer.camera.positionCartographic.latitude,
+                                                fourVH
+                                            ),
+                                            orientation: {
+                                                // 指向
+                                                heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                                // 视角
+                                                pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+                                                roll: 0.0
+                                            }
+                                        })
+                                        viewerHeight = fourVH
+                                        this.$emit('change-wheel', false, 'startWheel')
+                                        return
+                                    }
 
-                                if (viewerHeight == 800) {
-                                    global.viewer.camera.setView({
-                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                                            global.viewer.camera.positionCartographic.longitude,
-                                            global.viewer.camera.positionCartographic.latitude,
-                                            650
-                                        ),
-                                        orientation: {
-                                            // 指向
-                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                                            // 视角
-                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                                            roll: 0.0
-                                        }
-                                    })
-                                    viewerHeight = 650
-                                    this.$emit('change-wheel', false, 'startWheel')
-                                    return
-                                }
+                                    if (viewerHeight == fourVH) {
+                                        global.viewer.camera.setView({
+                                            destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+                                                global.viewer.camera.positionCartographic.longitude,
+                                                global.viewer.camera.positionCartographic.latitude,
+                                                twoVH
+                                            ),
+                                            orientation: {
+                                                // 指向
+                                                heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                                // 视角
+                                                pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+                                                roll: 0.0
+                                            }
+                                        })
+                                        viewerHeight = twoVH
+                                        this.$emit('change-wheel', false, 'startWheel')
+                                        return
+                                    }
 
-                                if (viewerHeight == 650) {
-                                    global.viewer.camera.setView({
-                                        destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
-                                            global.viewer.camera.positionCartographic.longitude,
-                                            global.viewer.camera.positionCartographic.latitude,
-                                            500
-                                        ),
-                                        orientation: {
-                                            // 指向
-                                            heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                                            // 视角
-                                            pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                                            roll: 0.0
-                                        }
-                                    })
-                                    viewerHeight = 500
-                                    this.$emit('change-wheel', false, 'startWheel')
+                                    if (viewerHeight == twoVH) {
+                                        global.viewer.camera.setView({
+                                            destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
+                                                global.viewer.camera.positionCartographic.longitude,
+                                                global.viewer.camera.positionCartographic.latitude,
+                                                oneVH
+                                            ),
+                                            orientation: {
+                                                // 指向
+                                                heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                                // 视角
+                                                pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+                                                roll: 0.0
+                                            }
+                                        })
+                                        viewerHeight = oneVH
+                                        this.$emit('change-wheel', false, 'startWheel')
+                                    }
                                 }
                             }
-                        }
+                    })
 
                     global.viewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.mapCameraEvent)
                     global.eagleViewer.on(global.DC.SceneEventType.CAMERA_CHANGED, that.smallMapCameraEvent)
@@ -693,12 +703,12 @@
             if (this.startWheel == false) return
 
             if (this.wheelFlag) { // 下
-                if (viewerHeight == 950) {
+                if (viewerHeight == fiveVH) {
                     global.viewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.viewer.camera.positionCartographic.longitude,
                             global.viewer.camera.positionCartographic.latitude,
-                            800
+                            fourVH
                         ),
                         orientation: {
                             // 指向
@@ -708,17 +718,17 @@
                             roll: 0.0
                         }
                     })
-                    viewerHeight = 800
+                    viewerHeight = fourVH
                     this.$emit('change-wheel', false, 'startWheel')
                     return
                 }
 
-                if (viewerHeight == 800) {
+                if (viewerHeight == fourVH) {
                     global.viewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.viewer.camera.positionCartographic.longitude,
                             global.viewer.camera.positionCartographic.latitude,
-                            650
+                            twoVH
                         ),
                         orientation: {
                             // 指向
@@ -728,17 +738,17 @@
                             roll: 0.0
                         }
                     })
-                    viewerHeight = 650
+                    viewerHeight = twoVH
                     this.$emit('change-wheel', false, 'startWheel')
                     return
                 }
 
-                if (viewerHeight == 650) {
+                if (viewerHeight == twoVH) {
                     global.viewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.viewer.camera.positionCartographic.longitude,
                             global.viewer.camera.positionCartographic.latitude,
-                            500
+                            oneVH
                         ),
                         orientation: {
                             // 指向
@@ -748,16 +758,16 @@
                             roll: 0.0
                         }
                     })
-                    viewerHeight = 500
+                    viewerHeight = oneVH
                     this.$emit('change-wheel', false, 'startWheel')
                 }
             } else { // 上
-                if (viewerHeight == 500) {
+                if (viewerHeight == oneVH) {
                     global.viewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.viewer.camera.positionCartographic.longitude,
                             global.viewer.camera.positionCartographic.latitude,
-                            650
+                            twoVH
                         ),
                         orientation: {
                             // 指向
@@ -767,17 +777,17 @@
                             roll: 0.0
                         }
                     })
-                    viewerHeight = 650
+                    viewerHeight = twoVH
                     this.$emit('change-wheel', false, 'startWheel')
                     return
                 }
 
-                if (viewerHeight == 650) {
+                if (viewerHeight == twoVH) {
                     global.viewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.viewer.camera.positionCartographic.longitude,
                             global.viewer.camera.positionCartographic.latitude,
-                            800
+                            fourVH
                         ),
                         orientation: {
                             // 指向
@@ -787,17 +797,17 @@
                             roll: 0.0
                         }
                     })
-                    viewerHeight = 800
+                    viewerHeight = fourVH
                     this.$emit('change-wheel', false, 'startWheel')
                     return
                 }
 
-                if (viewerHeight == 800) {
+                if (viewerHeight == fourVH) {
                     global.viewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.viewer.camera.positionCartographic.longitude,
                             global.viewer.camera.positionCartographic.latitude,
-                            950
+                            fiveVH
                         ),
                         orientation: {
                             // 指向
@@ -807,7 +817,7 @@
                             roll: 0.0
                         }
                     })
-                    viewerHeight = 950
+                    viewerHeight = fiveVH
                     this.$emit('change-wheel', false, 'startWheel')
                 }
             }
@@ -827,12 +837,12 @@
             if (this.startSmallWheel == false) return
 
             if (this.wheelFlag) { // 下
-                if (smallViewerHeight == 1950) {
+                if (smallViewerHeight == fiveVH + 1000) {
                     global.eagleViewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.eagleViewer.camera.positionCartographic.longitude,
                             global.eagleViewer.camera.positionCartographic.latitude,
-                            1800
+                            fourVH + 1000
                         ),
                         orientation: {
                             // 指向
@@ -842,17 +852,17 @@
                             roll: 0.0
                         }
                     })
-                    smallViewerHeight = 1800
+                    smallViewerHeight = fourVH + 1000
                     this.$emit('change-wheel', false, 'startSmallWheel')
                     return
                 }
 
-                if (smallViewerHeight == 1800) {
+                if (smallViewerHeight == fourVH + 1000) {
                     global.eagleViewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.eagleViewer.camera.positionCartographic.longitude,
                             global.eagleViewer.camera.positionCartographic.latitude,
-                            1650
+                            twoVH + 1000
                         ),
                         orientation: {
                             // 指向
@@ -862,17 +872,17 @@
                             roll: 0.0
                         }
                     })
-                    smallViewerHeight = 1650
+                    smallViewerHeight = twoVH + 1000
                     this.$emit('change-wheel', false, 'startSmallWheel')
                     return
                 }
 
-                if (smallViewerHeight == 1650) {
+                if (smallViewerHeight == twoVH + 1000) {
                     global.eagleViewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.eagleViewer.camera.positionCartographic.longitude,
                             global.eagleViewer.camera.positionCartographic.latitude,
-                            1500
+                            oneVH + 1000
                         ),
                         orientation: {
                             // 指向
@@ -882,16 +892,16 @@
                             roll: 0.0
                         }
                     })
-                    smallViewerHeight = 1500
+                    smallViewerHeight = oneVH + 1000
                     this.$emit('change-wheel', false, 'startSmallWheel')
                 }
             } else { // 上
-                if (smallViewerHeight == 1500) {
+                if (smallViewerHeight == oneVH + 1000) {
                     global.eagleViewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.eagleViewer.camera.positionCartographic.longitude,
                             global.eagleViewer.camera.positionCartographic.latitude,
-                            1650
+                            twoVH + 1000
                         ),
                         orientation: {
                             // 指向
@@ -901,17 +911,17 @@
                             roll: 0.0
                         }
                     })
-                    smallViewerHeight = 1650
+                    smallViewerHeight = twoVH + 1000
                     this.$emit('change-wheel', false, 'startSmallWheel')
                     return
                 }
 
-                if (smallViewerHeight == 1650) {
+                if (smallViewerHeight == twoVH + 1000) {
                     global.eagleViewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.eagleViewer.camera.positionCartographic.longitude,
                             global.eagleViewer.camera.positionCartographic.latitude,
-                            1800
+                            fourVH + 1000
                         ),
                         orientation: {
                             // 指向
@@ -921,17 +931,17 @@
                             roll: 0.0
                         }
                     })
-                    smallViewerHeight = 1800
+                    smallViewerHeight = fourVH + 1000
                     this.$emit('change-wheel', false, 'startSmallWheel')
                     return
                 }
 
-                if (smallViewerHeight == 1800) {
+                if (smallViewerHeight == fourVH + 1000) {
                     global.eagleViewer.camera.setView({
                         destination: global.DC.Namespace.Cesium.Cartesian3.fromRadians(
                             global.eagleViewer.camera.positionCartographic.longitude,
                             global.eagleViewer.camera.positionCartographic.latitude,
-                            1950
+                            fiveVH + 1000
                         ),
                         orientation: {
                             // 指向
@@ -941,7 +951,7 @@
                             roll: 0.0
                         }
                     })
-                    smallViewerHeight = 1950
+                    smallViewerHeight = fiveVH + 1000
                     this.$emit('change-wheel', false, 'startSmallWheel')
                 }
             }
@@ -1294,7 +1304,7 @@
                     destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                         that.mapCenter[0],
                         that.mapCenter[1],
-                        1950.0
+                        maxVH + 1000
                     ),
                     orientation: {
                         // 指向
@@ -1305,11 +1315,11 @@
                     }
                 })
                 // 最小
-                global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 500
-                global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = 1500
+                global.viewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH
+                global.eagleViewer.scene.screenSpaceCameraController.minimumZoomDistance = mixVH + 1000
                 // 最大
-                global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 950
-                global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = 1950
+                global.viewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH
+                global.eagleViewer.scene.screenSpaceCameraController.maximumZoomDistance = maxVH + 1000
                 // 视角旋转
                 global.viewer.scene.screenSpaceCameraController.enableTilt = false
                 global.eagleViewer.scene.screenSpaceCameraController.enableTilt = false
diff --git a/src/components/map/components/mapPopup.vue b/src/components/map/components/mapPopup.vue
index f9ae8a9..cd760a3 100644
--- a/src/components/map/components/mapPopup.vue
+++ b/src/components/map/components/mapPopup.vue
@@ -745,12 +745,14 @@
         this.audioSynth = window.speechSynthesis
         this.audioMsg = new window.SpeechSynthesisUtterance()
 
-        this.audioMsg.onend = function () {
-            that.audioSynth.cancel()
-            that.audioFlag = false
-            that.audioCourse = false
-            that.audioImgUrl = '/img/icon/close-video.png'
-        }
+        this.$nextTick(() => {
+            this.audioMsg.onend = function () {
+                that.audioSynth.cancel()
+                that.audioFlag = false
+                that.audioCourse = false
+                that.audioImgUrl = '/img/icon/close-video.png'
+            }
+        })
     },
     mounted () {
         global.viewer.scene.globe.depthTestAgainstTerrain = false
@@ -816,12 +818,16 @@
             immediate: true,
             handler (newCode, oldCode) {
                 if (newCode == false) {
-                    this.audioSynth.cancel()
+                    if (this.audioSynth != null) {
+                        this.audioSynth.cancel()
+                    }
                     this.audioFlag = false
                     this.audioCourse = false
                 } else {
                     if (this.audioFlag == true) {
-                        this.audioSynth.cancel()
+                        if (this.audioSynth != null) {
+                            this.audioSynth.cancel()
+                        }
                         this.audioFlag = false
                         this.audioCourse = false
                         this.audioImgUrl = '/img/icon/close-video.png'
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index da5d9ff..5421c65 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -227,6 +227,11 @@
             global.viewer.measure.deactivate()
         }
 
+        if (global.viewer != null) {
+            global.viewer = null
+            global.eagleViewer = null
+        }
+
         function initViewer () {
             global.viewer = new global.DC.Viewer('viewer-container', {
                 contextOptions: {
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)
 
diff --git a/src/router/page/index.js b/src/router/page/index.js
index f6ef179..f854bae 100644
--- a/src/router/page/index.js
+++ b/src/router/page/index.js
@@ -2,7 +2,7 @@
  * @Author: Morpheus
  * @Date: 2021-04-30 14:12:09
  * @Last Modified by: Morpheus
- * @Last Modified time: 2022-03-24 15:25:40
+ * @Last Modified time: 2022-03-28 14:34:15
  */
 
 import Vue from 'vue'
@@ -63,6 +63,10 @@
         },
         component: large
     },
+    {
+        path: '/',
+        redirect: '/pcLayout'
+    },
     // pc端
     {
         path: '/pcLayout',

--
Gitblit v1.9.3