From 8afb1cbbeeccc488b43d33da8ca83f4e3ff1f2b4 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Wed, 08 Feb 2023 16:50:20 +0800
Subject: [PATCH] 视频监控树结构更改,地图添加影像服务

---
 src/components/map/index.vue |  215 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 156 insertions(+), 59 deletions(-)

diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 0cd4702..a5c89a5 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -2,7 +2,7 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2022-08-18 17:00:30
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2022-12-30 13:59:43
+ * @LastEditTime: 2023-02-08 16:49:29
  * @FilePath: \srs-police-affairs\src\components\map\index.vue
  * @Description: 公用地图组件
  * 
@@ -22,7 +22,8 @@
             </el-tooltip>
         </div>
         <!-- 切换矢量图按钮 -->
-        <div class="image-switch-icon-btn" title="切换影像" @mouseover="showImgBtn = true" @mouseleave="showImgBtn = false">
+        <div style="display: none !important;" class="image-switch-icon-btn" title="切换影像" @mouseover="showImgBtn = true"
+            @mouseleave="showImgBtn = false">
             <div class="icon-box">
                 <img src="/img/base_map.png" alt />
             </div>
@@ -62,6 +63,8 @@
 let tilesetObject = {
     sdTilesetLayer: null
 }
+
+let flootEntitysEntites = null
 
 import mapPopup from './components/mapPopup.vue'
 
@@ -138,23 +141,23 @@
             global.viewer.addLayer(tilesetLayer)
 
             // 加载围栏
-            let layer = new global.DC.VectorLayer('layer')
-            global.viewer.addLayer(layer)
+            // let layer = new global.DC.VectorLayer('layer')
+            // global.viewer.addLayer(layer)
 
-            let wall = new global.DC.Wall(
-                '116.018142,28.688089,100.0; 116.017756,28.684648,100.0; 116.019507,28.677570,100.0; 116.033653,28.675634,100.0; 116.034223,28.681389,100.0; 116.033483,28.687265,100.0; 116.018142,28.688089,100.0'
-            )
+            // let wall = new global.DC.Wall(
+            //     '116.018142,28.688089,100.0; 116.017756,28.684648,100.0; 116.019507,28.677570,100.0; 116.033653,28.675634,100.0; 116.034223,28.681389,100.0; 116.033483,28.687265,100.0; 116.018142,28.688089,100.0'
+            // )
 
-            wall.setStyle({
-                material: new global.DC.WallTrailMaterialProperty({
-                    color: global.DC.Namespace.Cesium.Color.fromBytes(
-                        33, 150, 243,
-                        200
-                    ),
-                    speed: 8
-                })
-            })
-            layer.addOverlay(wall)
+            // wall.setStyle({
+            //     material: new global.DC.WallTrailMaterialProperty({
+            //         color: global.DC.Namespace.Cesium.Color.fromBytes(
+            //             33, 150, 243,
+            //             200
+            //         ),
+            //         speed: 8
+            //     })
+            // })
+            // layer.addOverlay(wall)
 
 
 
@@ -171,27 +174,50 @@
             // global.viewer.addTerrain(terrain)
 
             // 天地图 影像
-            global.viewer.imageryLayers.addImageryProvider(
-                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
-                    url: 'http://t{s}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
-                    subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
-                    format: 'image/jpeg',
-                    show: true,
-                    maximumLevel: 18
-                })
-            )
+            // global.viewer.imageryLayers.addImageryProvider(
+            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+            //         url: 'http://t{s}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
+            //         subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
+            //         format: 'image/jpeg',
+            //         show: true,
+            //         maximumLevel: 18
+            //     })
+            // )
 
 
             // 上饶部署,内网使用的
-            // global.viewer.imageryLayers.addImageryProvider(
+            global.viewer.imageryLayers.addImageryProvider(
+                new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
+                    url: "http://10.141.11.11:8090/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326",
+                    layer: "wmts_4326_361100",
+                    style: "default",
+                    format: "image/png",
+                    tileMatrixSetID: "c",
+                    tileMatrixLabels: new Array(18).fill(0).map((v, i) => i + 1),
+                    tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
+                })
+            )
+
+            global.viewer.imageryLayers.addImageryProvider(
+                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+                    url: 'http://10.141.11.11:80/ysapi/geoserver/gwc/service/wmts/{z}/{y}/{x}.png',
+                })
+            )
+
+            // 影像图层
+            // const ysWmts = global.viewer.imageryLayers.addImageryProvider(
             //     new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
-            //         url: "http://10.141.11.11:8090/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326",
-            //         layer: "wmts_4326_361100",
-            //         style: "default",
+            //         url: "http://10.141.11.11:80/ysapi/geoserver/gwc/service/wmts",
+            //         layer: "test",
+            //         style: "",
             //         format: "image/png",
-            //         tileMatrixSetID: "c",
-            //         tileMatrixLabels: new Array(18).fill(0).map((v, i) => i + 1),
-            //         tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
+            //         tileMatrixSetID: gridsetName,
+            //         tileMatrixLabels: gridNames.map(item => {
+            //             let arr = item.split(':')
+            //             arr[2] = arr[2] - 1
+            //             return arr.join(':')
+            //         }),
+            //         // tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
             //     })
             // )
 
@@ -200,7 +226,7 @@
                 // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                 // fromDegrees()方法,将经纬度和高程转换为世界坐标
                 destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
-                    117.951478782, 28.447896798, 5000
+                    117.951478782, 28.447896798, 20000
                 ),
                 orientation: {
                     // 指向
@@ -214,17 +240,21 @@
             let sqTitleLayer = new global.DC.TilesetLayer('sqTitleLayer')
             global.viewer.addLayer(sqTitleLayer)
             let sqTileset = new global.DC.Tileset(
-                'http://10.141.11.11:18080/sf3d/361102/model/wanda/tileset.json'
+                // 'http://10.141.11.11:18080/sf3d/361102/model/wanda/tileset.json'
+                'http://192.168.0.112:18080/sf3d/361102/model/wanda/tileset.json'
             )
-            sqTileset.setHeight(12)
+
+            sqTileset.setHeight(-72)
             sqTitleLayer.addOverlay(sqTileset)
 
-            // sqTileset.on(global.DC.MouseEventType.CLICK, (e) => {
-            //     console.log(e)
-            // })
+            sqTileset.on(global.DC.MouseEventType.CLICK, (e) => {
+                console.log(e, 989999)
+            })
 
+            // let positions = [[117.9514788, 28.4478968, 0], [117.9514698, 28.4478947, 0], [117.9513974, 28.4476981, 0], [117.9515047, 28.4476748, 0], [117.9515289, 28.4476939, 0], [117.9515508, 28.447755, 0], [117.9516278, 28.4477353, 0], [117.9516623, 28.4478497, 0], [117.9514788, 28.4478968, 0]]
+
+            // let positions = [[117.951478782, 28.447896798, 0], [117.951469798, 28.447894686, 0], [117.951397357, 28.447698099, 0], [117.951505114, 28.447674695, 0], [117.951485465, 28.447619271, 0], [117.951706955, 28.447558541, 0], [117.951722755, 28.447611995, 0], [117.951834021, 28.447588427, 0], [117.951896863, 28.447789523, 0], [117.951478782, 28.447896798, 0]]
             let positions = [[117.951478782, 28.447896798, 0], [117.951469798, 28.447894686, 0], [117.951397357, 28.447698099, 0], [117.951505114, 28.447674695, 0], [117.951485465, 28.447619271, 0], [117.951706955, 28.447558541, 0], [117.951722755, 28.447611995, 0], [117.951834021, 28.447588427, 0], [117.951896863, 28.447789523, 0], [117.951478782, 28.447896798, 0]]
-
             let MIN_F_H = positions.map(item => {
                 item[2] = 70
                 return item
@@ -238,25 +268,29 @@
             // 原生Cesium加载多边体
             let floorEntitysLayers = new global.DC.Namespace.Cesium.CustomDataSource("floorEntitysLayers")
             global.viewer.dataSources.add(floorEntitysLayers)
-            let flootEntitysEntites = floorEntitysLayers.entities
+            flootEntitysEntites = floorEntitysLayers.entities
 
-            let floorPositions = positions.reduce((prev, curr, index, arr) => {
-                curr.forEach(item => {
-                    prev.push(item)
-                })
-                return prev
-            }, [])
+            // let floorPositions = positions.reduce((prev, curr, index, arr) => {
+            //     curr.forEach(item => {
+            //         prev.push(item)
+            //     })
+            //     return prev
+            // }, [])
 
-            flootEntitysEntites.add({
-                polygon: {
-                    hierarchy: global.DC.Namespace.Cesium.Cartesian3.fromDegreesArrayHeights(floorPositions),
-                    heightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
-                    extrudedHeightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
-                    height: 70,
-                    extrudedHeight: 80,
-                    material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
-                }
-            })
+            // flootEntitysEntites.add({
+            //     polygon: {
+            //         hierarchy: global.DC.Namespace.Cesium.Cartesian3.fromDegreesArrayHeights(floorPositions),
+            //         heightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
+            //         extrudedHeightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
+            //         height: 70,
+            //         extrudedHeight: 80,
+            //         material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
+            //     }
+            // })
+
+
+
+
 
             // console.log(floorPositions)
 
@@ -291,6 +325,11 @@
             // 比例尺
             // global.viewer.distanceLegend.enable = true
 
+            // let arr1 = [[117.9552436, 28.44500025], [117.9557116, 28.44429919], [117.9574856, 28.44444285]]
+
+            // arr1.forEach(item => {
+            //     console.log(global.DC.CoordTransform.GCJ02ToWGS84(item[0], item[1]), 2222)
+            // })
         }
 
         global.DC.ready(initViewer)
@@ -379,6 +418,28 @@
             that.flytoLayer(params.polygonName, params.duration)
         })
 
+        this.$EventBus.$on('showHouse3D', (params) => {
+            that.showHouse3D(params.positions, params.minHeight, params.maxHeight)
+        })
+
+        this.$EventBus.$on('clearHouse3D', () => {
+            that.clearHouse3D()
+        })
+
+        // 重写定位方法
+        const homeCenter = [117.99311892441567, 28.46938164123123]
+        this.$nextTick(() => {
+            document.querySelector('.dc-zoom-controller').children[1].onclick =
+                function () {
+                    that.$EventBus.$emit('toPosition', {
+                        siteJd: homeCenter[0] + 0.046,
+                        siteWd: homeCenter[1] - 0.36,
+                        siteGd: 36000,
+                        siteHeading: -3,
+                        sitePitch: -45
+                    })
+                }
+        })
     },
 
     methods: {
@@ -388,6 +449,7 @@
                 this.$router.push({ path: '/layout/house', query: { searchName: 'xxx小区' } })
             }
         },
+
         switchImg () {
             // 天地图 影像
             this.imgtype = 0
@@ -403,6 +465,7 @@
             )
             this.showImgBtn = false
         },
+
         switchElec () {
             // 天地图 矢量
             this.imgtype = 1
@@ -418,6 +481,7 @@
             )
             this.showImgBtn = false
         },
+
         /**
          * @description: 全屏控制
          * @return {*} 无返回值
@@ -450,6 +514,7 @@
                 this.isFullscreen = true
             }
         },
+
         /**
          * 在图层中添加实体(点)
          * @param {*} item 图标
@@ -547,7 +612,7 @@
                     outlineColor: global.DC.Color.WHITE, // 边框颜色
                     outlineWidth: 4, // 边框大小,
                     font: '16px sans-serif',
-                    pixelOffset: { x: 0, y: -24 },
+                    pixelOffset: { x: 0, y: -30 },
                     distanceDisplayCondition: distanceDisplayCondition
                 })
                 pointElement.attrParams = params
@@ -556,7 +621,6 @@
             } else if (type == 'HeatPoint') {
                 layersObjcect[layerName].setPositions(params.positions)
             }
-
 
         },
 
@@ -697,6 +761,39 @@
                 tilesetObject[titlesetName] = null
             }
         },
+
+        /**
+        * 建筑高亮显示
+        * @param {*} positions 建筑范围坐标
+        * @param {*} 
+        */
+        showHouse3D (positions, minHeight, maxHeight) {
+            flootEntitysEntites.removeAll()
+            let housePositions = JSON.parse(positions).coordinates[0]
+
+            let floorPositions = housePositions.reduce((prev, curr) => {
+                curr.forEach(item => {
+                    prev.push(item)
+                })
+                return prev
+            }, [])
+
+            flootEntitysEntites.add({
+                polygon: {
+                    hierarchy: global.DC.Namespace.Cesium.Cartesian3.fromDegreesArrayHeights(floorPositions),
+                    heightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
+                    extrudedHeightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
+                    height: minHeight,
+                    extrudedHeight: maxHeight,
+                    material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
+                }
+            })
+        },
+
+        // 清除建筑3D
+        clearHouse3D () {
+            flootEntitysEntites.removeAll()
+        },
     },
 
 }

--
Gitblit v1.9.3