From e40ee62d3e9b71ffe3432d32a53a00c4097b5708 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Fri, 31 Dec 2021 09:03:28 +0800
Subject: [PATCH] +3d  2.5d

---
 src/components/leftNav/index.vue |  254 +++++++++++++++++++++++++++++---------------------
 1 files changed, 145 insertions(+), 109 deletions(-)

diff --git a/src/components/leftNav/index.vue b/src/components/leftNav/index.vue
index 493e3c6..4d134e8 100644
--- a/src/components/leftNav/index.vue
+++ b/src/components/leftNav/index.vue
@@ -14,6 +14,8 @@
 
 <script>
 
+import { getLifeList, getMonitorList, getSceneList, getWayList, getTagList } from '@/api/pc/leftNav/index'
+
 export default {
     name: 'leftNav',
     computed: {},
@@ -46,12 +48,20 @@
                 },
                 {
                     flag: false,
-                    label: '活动',
-                    img: '/img/leftnav/activity.png',
-                    normal: '/img/leftnav/activity.png',
-                    checked: '/img/leftnav/activity-checked.png',
-                    layer: 'activityLayer'
+                    label: '监控',
+                    img: '/img/leftnav/monitor.png',
+                    normal: '/img/leftnav/monitor.png',
+                    checked: '/img/leftnav/monitor-checked.png',
+                    layer: 'monitorLayer'
                 },
+                // {
+                //     flag: false,
+                //     label: '活动',
+                //     img: '/img/leftnav/activity.png',
+                //     normal: '/img/leftnav/activity.png',
+                //     checked: '/img/leftnav/activity-checked.png',
+                //     layer: 'activityLayer'
+                // },
                 {
                     flag: false,
                     label: 'AED',
@@ -82,6 +92,7 @@
             tagLayer: null,
             wayLayer: null,
             sceneLayer: null,
+            monitorLayer: null,
             activityLayer: null,
             aedLayer: null,
             parkLayer: null,
@@ -98,8 +109,8 @@
         generatePosition (num) {
             const list = []
             for (let i = 0; i < num; i++) {
-                const lng = 121.44405783 + Math.random() * 0.5
-                const lat = 31.19480456 + Math.random() * 0.5
+                const lng = 115.86271917 + Math.random() * 0.01
+                const lat = 28.73615593 + Math.random() * 0.02
                 list.push(new this.DC.Position(lng, lat, 0))
             }
             return list
@@ -115,6 +126,7 @@
             }
         },
         initialize (viewer) {
+            var that = this
             viewer.scene.globe.depthTestAgainstTerrain = false
             this.viewer = viewer
             this.tagLayer = new this.DC.HtmlLayer('tagLayer')
@@ -123,85 +135,105 @@
             viewer.addLayer(this.wayLayer)
             this.sceneLayer = new this.DC.VectorLayer('sceneLayer')
             viewer.addLayer(this.sceneLayer)
-
+            this.monitorLayer = new this.DC.VectorLayer('monitorLayer')
+            viewer.addLayer(this.monitorLayer)
             this.aedLayer = new this.DC.VectorLayer('aedLayer')
             viewer.addLayer(this.aedLayer)
-
             this.parkLayer = new this.DC.HtmlLayer('parkLayer')
             viewer.addLayer(this.parkLayer)
             this.comeLayer = new this.DC.VectorLayer('comeLayer')
             viewer.addLayer(this.comeLayer)
 
-            const positions1 = this.generatePosition(50)
-            positions1.forEach((item, index) => {
-                const divIcon = new this.DC.DivIcon(
-                    item,
-                    `
+            getTagList().then(res => {
+                res.data.data.forEach(item => {
+                    const divIcon = new this.DC.DivIcon(
+                        new that.DC.Position(Number(item.jd), Number(item.wd), 0),
+                        `
                         <div class="tag-entitys-box">
                             <div class="tag-content">
-                                南门口
+                                ${item.mechanismname}
                             </div>
                             <div class="tag-angle-content">
                                 <img src="https://map.hit.edu.cn/images/tarrow_xq.png">
                             </div>
                         </div>
                     `
-                )
-                this.tagLayer.addOverlay(divIcon)
+                    )
+                    this.tagLayer.addOverlay(divIcon)
+                })
+                this.tagLayer.show = false
             })
 
-            const positions2 = this.generatePosition(50)
-            positions2.forEach((item, index) => {
-                const divIcon = new this.DC.DivIcon(
-                    item,
-                    `
+            getWayList().then(res => {
+                res.data.data.forEach(item => {
+                    const divIcon = new this.DC.DivIcon(
+                        new that.DC.Position(Number(item.jd), Number(item.wd), 0),
+                        `
                         <div  class="way-entitys-box">
                             <div  class="way-title" style="border: white 1px solid; padding-left: 2px;font-size: 12px; background: #0066ff;  width: 12px;line-height: 13px; padding:2px 1px 2px 1px; color:white;">
-                                工建街
+                                 ${item.roadname}
                             </div>
                             <div  class="way-sign-box">
                                 <img src="https://map.hit.edu.cn/images/roadsign3.png">
                             </div>
                         </div>
                     `
-                )
-                this.wayLayer.addOverlay(divIcon)
-            })
-
-            const positions3 = this.generatePosition(50)
-            positions3.forEach(item => {
-                const billboard = new this.DC.Billboard(item, '/img/leftnav/map-panorama.png')
-                billboard.size = [16, 16]
-                this.sceneLayer.addOverlay(billboard)
-            })
-
-            const positions4 = this.generatePosition(10)
-            positions4.forEach((item, index) => {
-                const label = new this.DC.Label(item, '建筑AED')
-                label.setStyle({
-                    fillColor: this.DC.Color.ORANGERED,
-                    font: '10px sans-serif',
-                    pixelOffset: { x: 0, y: -16 }
+                    )
+                    this.wayLayer.addOverlay(divIcon)
                 })
-                this.aedLayer.addOverlay(label)
-
-                const billboard = new this.DC.Billboard(item, '/img/leftnav/map-aed.png')
-                billboard.size = [16, 16]
-
-                this.aedLayer.addOverlay(billboard)
+                this.wayLayer.show = false
             })
 
-            const positions5 = this.generatePosition(120)
-            positions5.forEach((item, index) => {
-                const divIcon = new this.DC.DivIcon(
-                    item,
-                    `
+            getMonitorList().then(res => {
+                res.data.data.forEach(item => {
+                    const billboard = new this.DC.Billboard(new that.DC.Position(Number(item.jd), Number(item.wd), 0), '/img/leftnav/map-monitor.png')
+                    billboard.size = [20, 20]
+                    this.monitorLayer.addOverlay(billboard)
+                })
+                this.monitorLayer.show = false
+            })
+
+            getSceneList().then(res => {
+                res.data.data.forEach(item => {
+                    const billboard = new this.DC.Billboard(new that.DC.Position(Number(item.jd), Number(item.wd), 0), '/img/leftnav/map-panorama.png')
+                    billboard.size = [20, 20]
+                    this.sceneLayer.addOverlay(billboard)
+                })
+                this.sceneLayer.show = false
+            })
+
+            getLifeList({ lifetype: 9 }).then(res => {
+                res.data.data.forEach(item => {
+                    const label = new this.DC.Label(new that.DC.Position(Number(item.jd), Number(item.wd), 0), item.mechanismname)
+                    label.setStyle({
+                        fillColor: this.DC.Color.CRIMSON,
+                        style: that.DC.Namespace.Cesium.LabelStyle.FILL_AND_OUTLINE,
+                        outlineColor: that.DC.Color.WHITE, // 边框颜色
+                        outlineWidth: 8, // 边框大小,
+                        font: '14px sans-serif',
+                        pixelOffset: { x: 0, y: -24 }
+                    })
+                    this.aedLayer.addOverlay(label)
+
+                    const billboard = new this.DC.Billboard(new that.DC.Position(Number(item.jd), Number(item.wd), 0), '/img/leftnav/map-aed.png')
+                    billboard.size = [20, 20]
+
+                    this.aedLayer.addOverlay(billboard)
+                })
+                this.aedLayer.show = false
+            })
+
+            getLifeList({ lifetype: 11 }).then(res => {
+                res.data.data.forEach(item => {
+                    const divIcon = new this.DC.DivIcon(
+                        new that.DC.Position(Number(item.jd), Number(item.wd), 0),
+                        `
                         <div class="park-entitys-box">
-                            <div class="park-title" alt="校外街路侧停车场">
+                            <div class="park-title" alt="${item.mechanismname}">
                             </div>
                             <div class="park-sign-box">
                                 <div>
-                                    <img src="https://map.hit.edu.cn/images/p-biao.png" width="14" height="14" alt="校外街路侧停车场" title="校外街路侧停车场">
+                                    <img src="https://map.hit.edu.cn/images/p-biao.png" width="14" height="14" alt="${item.mechanismname}" title="${item.mechanismname}">
                                 </div>
                                 <div>
                                     <img src="https://map.hit.edu.cn/images/roadsign.png" width="5" height="21">
@@ -209,34 +241,32 @@
                             </div>
                         </div>
                     `
-                )
-                this.parkLayer.addOverlay(divIcon)
-            })
-
-            const positions6 = this.generatePosition(10)
-            positions6.forEach((item, index) => {
-                const label = new this.DC.Label(item, '数字视觉')
-                label.setStyle({
-                    fillColor: this.DC.Color.PURPLE,
-                    outlineColor: this.DC.Color.WHITE, // 边框颜色
-                    outlineWidth: 2, // 边框大小,
-                    font: '10px sans-serif',
-                    pixelOffset: { x: 0, y: -16 }
+                    )
+                    this.parkLayer.addOverlay(divIcon)
                 })
-                this.comeLayer.addOverlay(label)
-
-                const billboard = new this.DC.Billboard(item, '/img/leftnav/map-activity.png')
-                billboard.size = [16, 16]
-
-                this.comeLayer.addOverlay(billboard)
+                this.parkLayer.show = false
             })
 
-            this.tagLayer.show = false
-            this.wayLayer.show = false
-            this.sceneLayer.show = false
-            this.aedLayer.show = false
-            this.parkLayer.show = false
-            this.comeLayer.show = false
+            getLifeList({ lifetype: 12 }).then(res => {
+                res.data.data.forEach(item => {
+                    const label = new that.DC.Label(new that.DC.Position(Number(item.jd), Number(item.wd), 0), item.mechanismname)
+                    label.setStyle({
+                        fillColor: that.DC.Color.FUCHSIA,
+                        style: that.DC.Namespace.Cesium.LabelStyle.FILL_AND_OUTLINE,
+                        outlineColor: that.DC.Color.WHITE, // 边框颜色
+                        outlineWidth: 8, // 边框大小,
+                        font: '14px sans-serif',
+                        pixelOffset: { x: 0, y: -24 }
+                    })
+                    that.comeLayer.addOverlay(label)
+
+                    const billboard = new that.DC.Billboard(new that.DC.Position(Number(item.jd), Number(item.wd), 0), '/img/leftnav/map-activity.png')
+                    billboard.size = [20, 20]
+
+                    that.comeLayer.addOverlay(billboard)
+                })
+                this.comeLayer.show = false
+            })
         }
     }
 }
@@ -245,39 +275,45 @@
 <style scoped lang='scss'>
 .left-nav {
     position: fixed;
-    top: 15%;
-    right: 6%;
+    top: 100px;
+    right: 20px;
+    // bottom: 20px;
+    // left: 0;
     z-index: 1;
-    li {
-        margin-bottom: 8px;
-        font-weight: 400;
-        display: block;
-        width: 98px;
-        height: 33px;
-        line-height: 33px;
-        background-color: #fff;
-        border-radius: 17px;
-        text-align: center;
-        font-size: 0;
-        cursor: pointer;
+    ul {
+        // display: flex;
+        li {
+            // margin: 0 8px;
+            margin-bottom: 12px;
+            font-weight: 400;
+            display: block;
+            width: 98px;
+            height: 33px;
+            line-height: 33px;
+            background-color: #fff;
+            border-radius: 17px;
+            text-align: center;
+            font-size: 0;
+            cursor: pointer;
 
-        img {
-            width: 24px;
-            height: 24px;
-            vertical-align: middle;
-            margin-right: 10px;
-            image-rendering: -moz-crisp-edges;
-            image-rendering: -o-crisp-edges;
-            image-rendering: -webkit-optimize-contrast;
-            image-rendering: crisp-edges;
-            -ms-interpolation-mode: nearest-neighbor;
-        }
+            img {
+                width: 24px;
+                height: 24px;
+                vertical-align: middle;
+                margin-right: 10px;
+                image-rendering: -moz-crisp-edges;
+                image-rendering: -o-crisp-edges;
+                image-rendering: -webkit-optimize-contrast;
+                image-rendering: crisp-edges;
+                -ms-interpolation-mode: nearest-neighbor;
+            }
 
-        span {
-            display: inline-block;
-            vertical-align: middle;
-            font-size: 14px;
-            color: #2f2f2f;
+            span {
+                display: inline-block;
+                vertical-align: middle;
+                font-size: 14px;
+                color: #2f2f2f;
+            }
         }
     }
 }

--
Gitblit v1.9.3