From 81f54040c2cb65537c6c6e1db8358a39a57dea0d Mon Sep 17 00:00:00 2001
From: mayisheng <admin>
Date: Mon, 15 Aug 2022 16:14:01 +0800
Subject: [PATCH] 1

---
 src/components/campusNav/index.vue |  200 +++++++++++++++++++++++++++-----------------------
 1 files changed, 108 insertions(+), 92 deletions(-)

diff --git a/src/components/campusNav/index.vue b/src/components/campusNav/index.vue
index ee06236..c6e43a2 100644
--- a/src/components/campusNav/index.vue
+++ b/src/components/campusNav/index.vue
@@ -5,7 +5,7 @@
                 <img class="icon deblurring" src="/img/icon/xndh.png" alt />
                 <span>校区内导航</span>
             </div>
-            <img class="close" src="/img/navicon/close.png" alt @click="closeModel" />
+            <img class="close deblurring" src="/img/navicon/close.png" alt @click="closeModel" />
         </template>
         <template slot="public-box-content">
             <div class="tab">
@@ -73,15 +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,
-            DC: null,
             navigationWay: '步行',
-            routeLayer: null,
             toNameText: '',
             comeNameText: '',
             toNameList: [],
@@ -91,8 +97,6 @@
 
             overChouse: false,
             butChouse: '',
-            startLayer: null,
-            endLayer: null,
 
             pathBoxShow: false,
             pathBoxList: [],
@@ -102,7 +106,6 @@
     },
     computed: {
         ...mapGetters([
-            'viewer',
             'twoOrThree',
             // 起点
             'startingPoint',
@@ -142,7 +145,6 @@
         }
     },
     created () {
-        this.DC = global.DC
     },
     mounted () {
         const leftBut = document.querySelectorAll('.el-input-group__prepend')
@@ -162,42 +164,42 @@
                 // 若是已经有导航,恢复未点击图标
                 if (val == 'start') {
                     // 初始化图标图层
-                    if (this.endLayer == null) {
-                        this.endLayer = new this.DC.VectorLayer('endLayer')
-                        this.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', [])
-                    const endEntity = new that.DC.Billboard(
-                        new that.DC.Position(
+                    const endEntity = new global.DC.Billboard(
+                        new global.DC.Position(
                             Number(this.terminus[0]),
                             Number(this.terminus[1]),
                             Number(this.terminus[2])
                         ),
                         '/img/navicon/end.png'
                     )
-                    that.endLayer.addOverlay(endEntity)
+                    CamPusNavLayer.campusEndLayer.addOverlay(endEntity)
                 } else if (val == 'end') {
                     // 初始化图标图层
-                    if (this.startLayer == null) {
-                        this.startLayer = new this.DC.VectorLayer('startLayer')
-                        this.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', [])
-                    const startEntity = new that.DC.Billboard(
-                        new that.DC.Position(
+                    const startEntity = new global.DC.Billboard(
+                        new global.DC.Position(
                             Number(this.startingPoint[0]),
                             Number(this.startingPoint[1]),
                             Number(this.startingPoint[2])
                         ),
                         '/img/navicon/start.png'
                     )
-                    that.startLayer.addOverlay(startEntity)
+                    CamPusNavLayer.campusStartLayer.addOverlay(startEntity)
                 }
             }
 
@@ -206,31 +208,31 @@
             // 关闭其他地图事件
             that.$store.commit('set_closeMapClick', true)
             // 添加标记
-            const tooltip = that.viewer.tooltip
+            const tooltip = global.viewer.tooltip
             tooltip.enable = true
             let title = ''
             if (val == 'start') {
                 title = '点击选择起点'
                 // 初始化图标图层
-                if (this.startLayer == null) {
-                    this.startLayer = new this.DC.VectorLayer('startLayer')
-                    this.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 this.DC.VectorLayer('endLayer')
-                    this.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 // 开启事件
             // 地图选点
-            that.clicks = that.viewer.on(that.DC.MouseEventType.CLICK, (e) => {
+            that.clicks = global.viewer.on(global.DC.MouseEventType.CLICK, (e) => {
                 if (that.overChouse) {
                     return
                 }
@@ -243,29 +245,29 @@
                     // 传输坐标数据
                     that.$store.commit('SET_STARTINGPOINT', [...lnglat, 0])
                     // 起点
-                    const startEntity = new that.DC.Billboard(
-                        new that.DC.Position(
+                    const startEntity = new global.DC.Billboard(
+                        new global.DC.Position(
                             Number(lnglat[0]),
                             Number(lnglat[1]),
                             Number(0)
                         ),
                         '/img/navicon/start.png'
                     )
-                    that.startLayer.addOverlay(startEntity)
+                    CamPusNavLayer.campusStartLayer.addOverlay(startEntity)
                 } else if (that.butChouse == 'end') {
                     that.comeNameText = '自定义终点'
                     // 传输坐标数据
                     that.$store.commit('SET_TERMINUS', [...lnglat, 0])
                     // 终点
-                    const endEntity = new that.DC.Billboard(
-                        new that.DC.Position(
+                    const endEntity = new global.DC.Billboard(
+                        new global.DC.Position(
                             Number(lnglat[0]),
                             Number(lnglat[1]),
                             Number(0)
                         ),
                         '/img/navicon/end.png'
                     )
-                    that.endLayer.addOverlay(endEntity)
+                    CamPusNavLayer.campusEndLayer.addOverlay(endEntity)
                 }
                 title = ''
                 tooltip.enable = false
@@ -273,7 +275,7 @@
                 // 开启其他地图事件
                 that.$store.commit('set_closeMapClick', false)
             })
-            that.moves = that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => {
+            that.moves = global.viewer.on(global.DC.MouseEventType.MOUSE_MOVE, (e) => {
                 if (that.overChouse) {
                     return
                 }
@@ -281,6 +283,7 @@
                 tooltip.showAt(e.windowPosition, title)
             })
         },
+
         closeModel () {
             if (this.$route.path.indexOf('/campusnavi') != -1) {
                 this.$store.dispatch('delVisitedViews', this.$route)
@@ -293,18 +296,21 @@
             this.comeNameText = ''
             this.comeNameList = []
             this.comeNameShow = false
-            if (this.routeLayer != null) {
-                this.routeLayer.clear()
+            this.pathBoxList = []
+            this.pathBoxShow = false
+
+            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)
@@ -322,20 +328,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 this.DC.VectorLayer('navigation')
-                this.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('请输入起点!!!')
@@ -344,26 +350,26 @@
                 this.$message('请输入终点!!!')
             }
 
-            // var start = this.DC.Transform.transformWGS84ToCartesian()
-            const startEntity = new this.DC.Billboard(
-                new this.DC.Position(
+            // var start = global.DC.Transform.transformWGS84ToCartesian()
+            const startEntity = new global.DC.Billboard(
+                new global.DC.Position(
                     Number(this.startingPoint[0]),
                     Number(this.startingPoint[1]),
                     Number(this.startingPoint[2])
                 ),
                 '/img/navicon/start.png'
             )
-            this.routeLayer.addOverlay(startEntity)
-            // var end = this.DC.Transform.transformWGS84ToCartesian()
-            const endEntity = new this.DC.Billboard(
-                new this.DC.Position(
+            CamPusNavLayer.campusRouteLayer.addOverlay(startEntity)
+            // var end = global.DC.Transform.transformWGS84ToCartesian()
+            const endEntity = new global.DC.Billboard(
+                new global.DC.Position(
                     Number(this.terminus[0]),
                     Number(this.terminus[1]),
                     Number(this.terminus[2])
                 ),
                 '/img/navicon/end.png'
             )
-            this.routeLayer.addOverlay(endEntity)
+            CamPusNavLayer.campusRouteLayer.addOverlay(endEntity)
 
             var routes = ''
 
@@ -372,8 +378,8 @@
             var endLog = Number(this.terminus[0]).toFixed(6)
             var endLat = Number(this.terminus[1]).toFixed(6)
 
-            var origin = this.DC.CoordTransform.WGS84ToGCJ02(startLog, startLat)
-            var destination = this.DC.CoordTransform.WGS84ToGCJ02(endLog, endLat)
+            var origin = global.DC.CoordTransform.WGS84ToGCJ02(startLog, startLat)
+            var destination = global.DC.CoordTransform.WGS84ToGCJ02(endLog, endLat)
 
             if (this.navigationWay == '步行') {
                 axios
@@ -407,7 +413,7 @@
                             item.polyline.forEach((it) => {
                                 it = it.split(',')
                                 lineArr.push(
-                                    this.DC.CoordTransform.GCJ02ToWGS84(it[0], it[1]).join(',')
+                                    global.DC.CoordTransform.GCJ02ToWGS84(it[0], it[1]).join(',')
                                 )
                             })
 
@@ -423,18 +429,22 @@
                         routes =
                             startLog + ',' + startLat + ';' + routes + endLog + ',' + endLat
 
-                        const polyline = new this.DC.Polyline(routes)
+                        const polyline = new global.DC.Polyline(routes)
                         polyline.setStyle({
-                            width: 3,
-                            material: new this.DC.PolylineTrailMaterialProperty({
-                                color: this.DC.Color.RED,
-                                speed: 10
+                            width: 6,
+                            arcType: true,
+                            material: new global.DC.PolylineImageTrailMaterialProperty({
+                                color: global.DC.Namespace.Cesium.Color.fromBytes(10, 255, 10),
+                                speed: 60,
+                                image: '/img/icon/right.png',
+                                repeat: { x: 320, y: 1 }
                             }),
                             clampToGround: true
                         })
-                        this.routeLayer.addOverlay(polyline)
+
+                        CamPusNavLayer.campusRouteLayer.addOverlay(polyline)
                         if (this.twoOrThree == '真三维') {
-                            this.viewer.flyTo(this.routeLayer)
+                            global.viewer.flyTo(CamPusNavLayer.campusRouteLayer)
                         } else {
                             var longitude = null
                             var latitude = null
@@ -453,19 +463,19 @@
                                 latitude = (endLat - startLat) / 2 + startLat
                             }
                             that.isOverRouter = true
-                            this.viewer.camera.setView({
+                            global.viewer.camera.setView({
                                 // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                                 // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                                destination: this.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+                                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                                     longitude,
                                     latitude,
                                     600
                                 ),
                                 orientation: {
                                     // 指向
-                                    heading: this.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                    heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                                     // 视角
-                                    pitch: this.DC.Namespace.Cesium.Math.toRadians(-90),
+                                    pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                                     roll: 0.0
                                 }
                             })
@@ -493,7 +503,7 @@
                             item.polyline.forEach((it) => {
                                 it = it.split(',')
                                 lineArr.push(
-                                    this.DC.CoordTransform.GCJ02ToWGS84(it[0], it[1]).join(',')
+                                    global.DC.CoordTransform.GCJ02ToWGS84(it[0], it[1]).join(',')
                                 )
                             })
 
@@ -507,19 +517,23 @@
                         routes =
                             startLog + ',' + startLat + ';' + routes + endLog + ',' + endLat
 
-                        const polyline = new this.DC.Polyline(routes)
+                        const polyline = new global.DC.Polyline(routes)
                         polyline.setStyle({
-                            width: 3,
-                            material: new this.DC.PolylineTrailMaterialProperty({
-                                color: this.DC.Color.RED,
-                                speed: 10
+                            width: 6,
+                            arcType: true,
+                            material: new global.DC.PolylineImageTrailMaterialProperty({
+                                color: global.DC.Namespace.Cesium.Color.fromBytes(10, 255, 10),
+                                speed: 60,
+                                image: '/img/icon/right.png',
+                                repeat: { x: 320, y: 1 }
                             }),
                             clampToGround: true
                         })
-                        this.routeLayer.addOverlay(polyline)
+
+                        CamPusNavLayer.campusRouteLayer.addOverlay(polyline)
 
                         if (this.twoOrThree == '真三维') {
-                            this.viewer.flyTo(this.routeLayer)
+                            global.viewer.flyTo(CamPusNavLayer.campusRouteLayer)
                         } else {
                             var longitude = null
                             var latitude = null
@@ -538,19 +552,19 @@
                                 latitude = (endLat - startLat) / 2 + startLat
                             }
                             that.isOverRouter = true
-                            this.viewer.camera.setView({
+                            global.viewer.camera.setView({
                                 // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                                 // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                                destination: this.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+                                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                                     longitude,
                                     latitude,
                                     600
                                 ),
                                 orientation: {
                                     // 指向
-                                    heading: this.DC.Namespace.Cesium.Math.toRadians(0, 0),
+                                    heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
                                     // 视角
-                                    pitch: this.DC.Namespace.Cesium.Math.toRadians(-90),
+                                    pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
                                     roll: 0.0
                                 }
                             })
@@ -560,8 +574,10 @@
         },
 
         clearLayer () {
-            if (this.routeLayer != null) {
-                this.routeLayer.clear()
+            if (CamPusNavLayer.campusRouteLayer != null) {
+                CamPusNavLayer.campusRouteLayer.clear()
+                this.pathBoxList = []
+                this.pathBoxShow = false
             }
         },
 

--
Gitblit v1.9.3