From aaf1f998766b27ac10094d29de552178418c0b14 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 14 Mar 2022 15:05:51 +0800
Subject: [PATCH] 处理内存泄漏的问题

---
 src/components/campusNav/index.vue |  103 +++++++++++++++++++++++++++------------------------
 1 files changed, 54 insertions(+), 49 deletions(-)

diff --git a/src/components/campusNav/index.vue b/src/components/campusNav/index.vue
index 242e268..f694b78 100644
--- a/src/components/campusNav/index.vue
+++ b/src/components/campusNav/index.vue
@@ -73,14 +73,21 @@
 import { mapGetters } from 'vuex'
 import { getSearchList } from '@/api/pc/public/search'
 import axios from 'axios'
+
+const CamPusNavLayer = {
+    campusStartLayer: null,
+    campusEndLayer: null,
+    campusRouteLayer: null
+}
+
 export default {
     name: 'campusNav',
     data () {
         return {
+
             tabOneFlag: true,
             tabTwoFlag: false,
             navigationWay: '步行',
-            routeLayer: null,
             toNameText: '',
             comeNameText: '',
             toNameList: [],
@@ -90,8 +97,6 @@
 
             overChouse: false,
             butChouse: '',
-            startLayer: null,
-            endLayer: null,
 
             pathBoxShow: false,
             pathBoxList: [],
@@ -159,11 +164,11 @@
                 // 若是已经有导航,恢复未点击图标
                 if (val == 'start') {
                     // 初始化图标图层
-                    if (this.endLayer == null) {
-                        this.endLayer = new global.DC.VectorLayer('endLayer')
-                        global.viewer.addLayer(this.endLayer)
+                    if (CamPusNavLayer.campusEndLayer == null) {
+                        CamPusNavLayer.campusEndLayer = new global.DC.VectorLayer('campusEndLayer')
+                        global.viewer.addLayer(CamPusNavLayer.campusEndLayer)
                     } else {
-                        this.endLayer.clear()
+                        CamPusNavLayer.campusEndLayer.clear()
                     }
                     // console.log("baoliuend", "see");
                     that.$store.commit('SET_STARTINGPOINT', [])
@@ -175,14 +180,14 @@
                         ),
                         '/img/navicon/end.png'
                     )
-                    that.endLayer.addOverlay(endEntity)
+                    CamPusNavLayer.campusEndLayer.addOverlay(endEntity)
                 } else if (val == 'end') {
                     // 初始化图标图层
-                    if (this.startLayer == null) {
-                        this.startLayer = new global.DC.VectorLayer('startLayer')
-                        global.viewer.addLayer(this.startLayer)
+                    if (CamPusNavLayer.campusStartLayer == null) {
+                        CamPusNavLayer.campusStartLayer = new global.DC.VectorLayer('campusStartLayer')
+                        global.viewer.addLayer(CamPusNavLayer.campusStartLayer)
                     } else {
-                        this.startLayer.clear()
+                        CamPusNavLayer.campusStartLayer.clear()
                     }
                     // console.log("baoliustart", "see");
                     that.$store.commit('SET_TERMINUS', [])
@@ -194,7 +199,7 @@
                         ),
                         '/img/navicon/start.png'
                     )
-                    that.startLayer.addOverlay(startEntity)
+                    CamPusNavLayer.campusStartLayer.addOverlay(startEntity)
                 }
             }
 
@@ -209,20 +214,20 @@
             if (val == 'start') {
                 title = '点击选择起点'
                 // 初始化图标图层
-                if (this.startLayer == null) {
-                    this.startLayer = new global.DC.VectorLayer('startLayer')
-                    global.viewer.addLayer(this.startLayer)
+                if (CamPusNavLayer.campusStartLayer == null) {
+                    CamPusNavLayer.campusStartLayer = new global.DC.VectorLayer('campusStartLayer')
+                    global.viewer.addLayer(CamPusNavLayer.campusStartLayer)
                 } else {
-                    this.startLayer.clear()
+                    CamPusNavLayer.campusStartLayer.clear()
                 }
             } else if (val == 'end') {
                 title = '点击选择终点'
                 // 初始化图标图层
-                if (this.endLayer == null) {
-                    this.endLayer = new global.DC.VectorLayer('endLayer')
-                    global.viewer.addLayer(this.endLayer)
+                if (CamPusNavLayer.campusEndLayer == null) {
+                    CamPusNavLayer.campusEndLayer = new global.DC.VectorLayer('campusEndLayer')
+                    global.viewer.addLayer(CamPusNavLayer.campusEndLayer)
                 } else {
-                    this.endLayer.clear()
+                    CamPusNavLayer.campusEndLayer.clear()
                 }
             }
             that.overChouse = false // 开启事件
@@ -248,7 +253,7 @@
                         ),
                         '/img/navicon/start.png'
                     )
-                    that.startLayer.addOverlay(startEntity)
+                    CamPusNavLayer.campusStartLayer.addOverlay(startEntity)
                 } else if (that.butChouse == 'end') {
                     that.comeNameText = '自定义终点'
                     // 传输坐标数据
@@ -262,7 +267,7 @@
                         ),
                         '/img/navicon/end.png'
                     )
-                    that.endLayer.addOverlay(endEntity)
+                    CamPusNavLayer.campusEndLayer.addOverlay(endEntity)
                 }
                 title = ''
                 tooltip.enable = false
@@ -290,18 +295,18 @@
             this.comeNameText = ''
             this.comeNameList = []
             this.comeNameShow = false
-            if (this.routeLayer != null) {
-                this.routeLayer.clear()
+            if (CamPusNavLayer.campusRouteLayer != null) {
+                CamPusNavLayer.campusRouteLayer.clear()
                 this.isOverRouter = false
             }
             // 清除自定义位置
-            if (this.startLayer != null) {
-                this.startLayer.clear()
-                // this.startLayer = null;
+            if (CamPusNavLayer.campusStartLayer != null) {
+                CamPusNavLayer.campusStartLayer.clear()
+                // CamPusNavLayer.campusStartLayer = null;
             }
-            if (this.endLayer != null) {
-                this.endLayer.clear()
-                // this.endLayer = null;
+            if (CamPusNavLayer.campusEndLayer != null) {
+                CamPusNavLayer.campusEndLayer.clear()
+                // CamPusNavLayer.campusEndLayer = null;
             }
             this.$store.commit('SET_COMENAME', '')
             this.$store.commit('SET_TERMINUS', null)
@@ -319,20 +324,20 @@
         startNavigation () {
             const that = this
             // 清除自定义位置
-            if (this.startLayer != null) {
-                this.startLayer.clear()
-                // this.startLayer = null;
+            if (CamPusNavLayer.campusStartLayer != null) {
+                CamPusNavLayer.campusStartLayer.clear()
+                // CamPusNavLayer.campusStartLayer = null;
             }
-            if (this.endLayer != null) {
-                this.endLayer.clear()
-                // this.endLayer = null;
+            if (CamPusNavLayer.campusEndLayer != null) {
+                CamPusNavLayer.campusEndLayer.clear()
+                // CamPusNavLayer.campusEndLayer = null;
             }
 
-            if (this.routeLayer == null) {
-                this.routeLayer = new global.DC.VectorLayer('navigation')
-                global.viewer.addLayer(this.routeLayer)
+            if (CamPusNavLayer.campusRouteLayer == null) {
+                CamPusNavLayer.campusRouteLayer = new global.DC.VectorLayer('campusRouteLayer')
+                global.viewer.addLayer(CamPusNavLayer.campusRouteLayer)
             } else {
-                this.routeLayer.clear()
+                CamPusNavLayer.campusRouteLayer.clear()
             }
             if (this.startingPoint == null) {
                 this.$message('请输入起点!!!')
@@ -350,7 +355,7 @@
                 ),
                 '/img/navicon/start.png'
             )
-            this.routeLayer.addOverlay(startEntity)
+            CamPusNavLayer.campusRouteLayer.addOverlay(startEntity)
             // var end = global.DC.Transform.transformWGS84ToCartesian()
             const endEntity = new global.DC.Billboard(
                 new global.DC.Position(
@@ -360,7 +365,7 @@
                 ),
                 '/img/navicon/end.png'
             )
-            this.routeLayer.addOverlay(endEntity)
+            CamPusNavLayer.campusRouteLayer.addOverlay(endEntity)
 
             var routes = ''
 
@@ -429,9 +434,9 @@
                             }),
                             clampToGround: true
                         })
-                        this.routeLayer.addOverlay(polyline)
+                        CamPusNavLayer.campusRouteLayer.addOverlay(polyline)
                         if (this.twoOrThree == '真三维') {
-                            global.viewer.flyTo(this.routeLayer)
+                            global.viewer.flyTo(CamPusNavLayer.campusRouteLayer)
                         } else {
                             var longitude = null
                             var latitude = null
@@ -513,10 +518,10 @@
                             }),
                             clampToGround: true
                         })
-                        this.routeLayer.addOverlay(polyline)
+                        CamPusNavLayer.campusRouteLayer.addOverlay(polyline)
 
                         if (this.twoOrThree == '真三维') {
-                            global.viewer.flyTo(this.routeLayer)
+                            global.viewer.flyTo(CamPusNavLayer.campusRouteLayer)
                         } else {
                             var longitude = null
                             var latitude = null
@@ -557,8 +562,8 @@
         },
 
         clearLayer () {
-            if (this.routeLayer != null) {
-                this.routeLayer.clear()
+            if (CamPusNavLayer.campusRouteLayer != null) {
+                CamPusNavLayer.campusRouteLayer.clear()
             }
         },
 

--
Gitblit v1.9.3