From e24f70ababdee2b4fdce71c6b80a9bc928fa0331 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 08 May 2023 14:45:08 +0800
Subject: [PATCH] 警情排行调整

---
 src/components/map/index.vue |  442 ++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 310 insertions(+), 132 deletions(-)

diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 755c42c..79c24a4 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: 2023-04-07 15:27:58
+ * @LastEditTime: 2023-05-08 14:03:31
  * @FilePath: \srs-police-affairs\src\components\map\index.vue
  * @Description: 公用地图组件
  * 
@@ -14,16 +14,46 @@
         <slot name="showButton"></slot>
         <div class="over-look-btn">
             <el-tooltip content="一键俯视" placement="top" effect="dark">
-                <i class="fa fa-eye" style="vertical-align: middle; cursor: pointer" @click="overLookClick"></i>
+                <i
+                    class="fa fa-eye"
+                    style="vertical-align: middle; cursor: pointer"
+                    @click="overLookClick"
+                ></i>
             </el-tooltip>
         </div>
         <!-- 全屏控制按钮 -->
         <div class="screen-full-btn">
-            <el-tooltip v-if="isFullscreen" content="缩放" placement="top" effect="dark">
-                <i class="fa fa-compress" style="vertical-align: middle; cursor: pointer" @click="fullscreenchange"></i>
+            <el-tooltip
+                v-if="!isShowHomeContentBtn && isFullscreen"
+                content="缩放"
+                placement="top"
+                effect="dark"
+            >
+                <i
+                    class="fa fa-compress"
+                    style="vertical-align: middle; cursor: pointer"
+                    @click="fullscreenchange"
+                ></i>
             </el-tooltip>
-            <el-tooltip v-if="!isFullscreen" content="全屏" placement="top" effect="dark">
-                <i class="fa fa-expand" style="vertical-align: middle; cursor: pointer" @click="fullscreenchange"></i>
+
+            <el-tooltip
+                v-if="!isShowHomeContentBtn && !isFullscreen"
+                content="全屏"
+                placement="top"
+                effect="dark"
+            >
+                <i
+                    class="fa fa-expand"
+                    style="vertical-align: middle; cursor: pointer"
+                    @click="fullscreenchange"
+                ></i>
+            </el-tooltip>
+            <el-tooltip v-if="isShowHomeContentBtn" content="显示/隐藏" placement="top" effect="dark">
+                <i
+                    class="fa fa-expand"
+                    style="vertical-align: middle; cursor: pointer"
+                    @click="switchShowHomeContent"
+                ></i>
             </el-tooltip>
         </div>
         <!-- 切换矢量图按钮 -->
@@ -34,12 +64,12 @@
                 </div>
             </el-tooltip>
 
-
             <div class="image-switch-img-btn" v-show="showImgBtn">
                 <div class="layer-change-box">
                     <div class="title">
                         底图
                         <div class="close" @click.stop="showImgBtn = false">
+                            <img src="/img/icon/close.png" alt />
                         </div>
                     </div>
 
@@ -53,9 +83,7 @@
                     </div>
                 </div>
                 <div class="layer-change-box">
-                    <div class="title">
-                        模型
-                    </div>
+                    <div class="title">模型</div>
                     <div class="content">
                         <div class="img light" @click="highOrLightChange('light')">
                             <span :class="{ on: tilesetLayerType == 'light' }">轻量</span>
@@ -66,12 +94,15 @@
                     </div>
                 </div>
                 <div class="angle-btn">
-                    是否锁定视角:<el-checkbox v-model="angleCheck" @change="angleChange"></el-checkbox>
+                    是否锁定视角:
+                    <el-checkbox v-model="angleCheck" @change="angleChange"></el-checkbox>
                 </div>
             </div>
         </div>
 
         <map-popup></map-popup>
+
+        <architecture-popup></architecture-popup>
 
         <activity-police-popup></activity-police-popup>
 
@@ -91,8 +122,6 @@
 
 <script>
 let tile3DUrl = ''
-let floorEntitysLayers = null
-let flootEntitysEntites = null
 
 if (process.env.NODE_ENV == 'development') {
     // 开发
@@ -103,6 +132,8 @@
 }
 
 import { label } from "./label"
+
+let projectTerrain = null
 
 var siteEntitylayers = null
 
@@ -117,12 +148,13 @@
 
 let tilesetLayer = null
 
-let baseLayers = null
+let baseLayers = []
 
 let tilesetObject = {
     sdTilesetLayer: null
 }
 
+let curPolygon = null
 
 const ysLabels = [
     'EPSG:4490_test:0',
@@ -151,6 +183,7 @@
 ]
 
 import mapPopup from './components/mapPopup.vue'
+import architecturePopup from './components/architecturePopup.vue'
 import activityPolicePopup from './components/activityPolicePopup.vue'
 import videoListPopup from './components/videoListPopup.vue'
 import videoRowClickPopup from './components/videoRowClickPopup.vue'
@@ -158,11 +191,14 @@
 import houseDeepDataPopup from './components/houseDeepDataPopup.vue'
 import yToolTip from './components/yToolTip.vue'
 import createTools from '@/utils/tools/index'
+import { mapGetters } from 'vuex'
+
+import yxLayerJson from './yxlayer'
 
 export default {
     name: 'mapBox',
 
-    components: { mapPopup, activityPolicePopup, videoListPopup, mapSearchPopup, houseDeepDataPopup, yToolTip, videoRowClickPopup },
+    components: { mapPopup, architecturePopup, activityPolicePopup, videoListPopup, mapSearchPopup, houseDeepDataPopup, yToolTip, videoRowClickPopup },
 
     data () {
         return {
@@ -184,14 +220,15 @@
     },
 
     computed: {
-
+        ...mapGetters([
+            'isShowHomeContentBtn'
+        ]),
     },
 
     mounted () {
         if (global.viewer != null) {
             global.viewer = null
         }
-
         const that = this
 
         // 初始化地图
@@ -216,8 +253,7 @@
             // let curTilesetLayer = new global.DC.TilesetLayer('curTilesetLayer')
             // global.viewer.addLayer(curTilesetLayer)
             // let curTileset = new global.DC.Tileset(
-            //     // '/mx/tileset.json'
-            //     'https://tuan-gis.sit.fengtu.com.cn/361102/wanda/tileset.json'
+            //     '/mx/tileset.json'
             // )
             // // curTileset.setHeight(20)
             // curTileset.setHeight(0)
@@ -247,9 +283,6 @@
             global.viewer.addLayer(layersObjcect.monitoringLayer)
             layersObjcect.panoramaLayer = new global.DC.VectorLayer('panoramaLayer')
             global.viewer.addLayer(layersObjcect.panoramaLayer)
-
-            floorEntitysLayers = new global.DC.VectorLayer('floorEntitysLayers')
-            global.viewer.addLayer(floorEntitysLayers)
 
             // 模型图层添加
             tilesetLayer = new global.DC.TilesetLayer('tilesetLayer')
@@ -289,16 +322,19 @@
             // 内网
             that.switchImg()
 
-            // 外网
-            global.viewer.imageryLayers.addImageryProvider(
-                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
-                    url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_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
-                })
-            )
+            // 地形数据添加
+            that.addTerrain()
+
+            // 外网 
+            // global.viewer.imageryLayers.addImageryProvider(
+            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+            //         url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=d083e4cf30bfc438ef93436c10c2c20a',
+            //         subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
+            //         format: 'image/jpeg',
+            //         show: true,
+            //         maximumLevel: 18
+            //     })
+            // )
 
             // 设置地图初始位置,角度等
             global.viewer.camera.setView({
@@ -394,7 +430,7 @@
         // global.viewer.scene.morphTo2D(1)
 
         // 清除控制台
-        // console.clear()
+        console.clear()
 
         function isEleFullScreen () {
             const fullScreenEle =
@@ -451,9 +487,9 @@
 
         this.$EventBus.$on('layerPolygonAdd', (params) => {
             if ('polygonName' in params) {
-                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, params.polygonName, params.params, params.incident, params.setStyle)
+                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, params.polygonName, params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
             } else {
-                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, 'polygon', params.params, params.incident, params.setStyle)
+                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, 'polygon', params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
             }
         })
 
@@ -463,6 +499,10 @@
 
         this.$EventBus.$on('layerWallAdd', (params) => {
             that.layerWallAdd(params.layerName, params.positions)
+        })
+
+        this.$EventBus.$on('rowLayerWallAdd', (params) => {
+            that.rowLayerWallAdd(params.layerName, params.positions)
         })
 
         this.$EventBus.$on('getOverLayerID', (params) => {
@@ -510,6 +550,10 @@
             that.showThreeDimensions(params.positions, params.minHeight, params.maxHeight)
         })
 
+        this.$EventBus.$on('switchThreeDimensions', (params) => {
+            that.switchThreeDimensions(params)
+        })
+
         this.$EventBus.$on('clearHouse3D', () => {
             that.clearHouse3D()
         })
@@ -527,19 +571,20 @@
         // 重写定位方法
         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
-                    })
-                }
+            // console.log('dc-zoom-controller', document.querySelector('.dc-zoom-controller'))
+            // if (document.querySelector('.dc-zoom-controller') == null) return
+            // 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
+            //         })
+            //     }
 
-            document.querySelector('.dc-zoom-controller .refresh svg title').innerHTML = '初始化位置'
-
+            // document.querySelector('.dc-zoom-controller .refresh svg title').innerHTML = '初始化位置'
         })
     },
 
@@ -627,7 +672,6 @@
             if (this.tilesetLayerType == type && status == '') {
                 this.tilesetLayerType = ''
 
-
             } else {
                 this.tilesetLayerType = type
 
@@ -639,9 +683,11 @@
                         this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all1/${item}/tileset.json`)
                     })
 
-                this.$EventBus.$emit('showHouseingTileset', {
-                    type: 'add'
-                })
+                if (this.$route.path == "/layout/house") {
+                    this.$EventBus.$emit('showHouseingTileset', {
+                        type: 'add'
+                    })
+                }
             }
         },
 
@@ -655,44 +701,69 @@
         switchImg () {
             // 天地图 影像
             this.imgtype = 0
-            baseLayers != null && global.viewer.imageryLayers.remove(baseLayers)
+            baseLayers.length && baseLayers.forEach(item => {
+                item && global.viewer.imageryLayers.remove(item)
+            })
 
-            baseLayers = global.viewer.imageryLayers.addImageryProvider(
+            baseLayers = []
+
+            // const layer = global.viewer.imageryLayers.addImageryProvider(
+            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+            //         url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/{z}/{x}/{reverseY}.png`,
+            //         minimumLevel: 0,
+            //         maximumLevel: 25,
+            //         tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
+            //     })
+            // )
+
+            // layer.contrast = 0.8
+
+            // baseLayers.push(layer)
+
+            const qp = global.viewer.imageryLayers.addImageryProvider(
                 new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
-                    url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/{z}/{x}/{reverseY}.png`,
+                    url: `/qp/{AZ}/{y}/{x}.png`,
+                    customTags: {
+                        AZ (imageryProvider, x, y, level) {
+                            return 'Z' + level
+                        },
+                    },
                     minimumLevel: 0,
                     maximumLevel: 25,
-                    tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
                 })
             )
 
-            // const fileArray = ['A', 'B', 'C', 'D', 'E', 'F']
-            // let subdomains = []
+            qp.contrast = 0.8
 
-            // fileArray.forEach(item => {
-            //     for (let i = 1; i < 6; i++) {
-            //         subdomains.push(`${item}${i}`)
-            //     }
-            // })
+            baseLayers.push(qp)
 
-            // baseLayers = global.viewer.imageryLayers.addImageryProvider(
-            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
-            //         url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/{fileName}/{AZ}/{y}/{x}.png`,
-            //         customTags: {
-            //             AZ (imageryProvider, x, y, level) {
-            //                 return 'Z' + level
-            //             },
+            yxLayerJson.forEach(item => {
+                let rectangle = {}
 
-            //             fileName (imageryProvider, x, y, level) {
-            //                 console.log(imageryProvider, x, y, level)
-            //             }
-            //         },
-            //         enablePickFeatures: false
-            //         // minimumLevel: 0,
-            //         // maximumLevel: 25,
-            //         // tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
-            //     })
-            // )
+                if (item.west != 0 && item.south != 0 && item.east != 0 && item.north != 0) {
+                    rectangle = { rectangle: global.DC.Namespace.Cesium.Rectangle.fromDegrees(Number(item.west), Number(item.south), Number(item.east), Number(item.north)) }
+                } else {
+                    return
+                }
+
+                const layer = global.viewer.imageryLayers.addImageryProvider(
+                    new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+                        url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/${item.name}/{AZ}/{y}/{x}.png`,
+                        customTags: {
+                            AZ (imageryProvider, x, y, level) {
+                                return 'Z' + level
+                            },
+                        },
+                        minimumLevel: 0,
+                        maximumLevel: 25,
+                        ...rectangle
+                    })
+                )
+
+                layer.contrast = 0.8
+
+                baseLayers.push(layer)
+            })
 
             // baseLayers = global.viewer.imageryLayers.addImageryProvider(
             //     new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
@@ -706,26 +777,46 @@
             //     })
             // )
 
-            baseLayers.contrast = 0.8
         },
 
         switchElec () {
             // 天地图 矢量
             this.imgtype = 1
-            baseLayers != null && global.viewer.imageryLayers.remove(baseLayers)
-            baseLayers = global.viewer.imageryLayers.addImageryProvider(
-                new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
-                    url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_SL}/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326`,
-                    layer: "wmts_4326_361100",
-                    style: "default",
-                    format: "image/png",
-                    tileMatrixSetID: "c",
-                    tileMatrixLabels: new Array(20).fill(0).map((v, i) => i + 1),
-                    tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
-                })
+
+            baseLayers.length && baseLayers.forEach(item => {
+                item && global.viewer.imageryLayers.remove(item)
+            })
+
+            baseLayers = []
+
+            baseLayers.push(
+                global.viewer.imageryLayers.addImageryProvider(
+                    new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
+                        url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_SL}/MapTileService/wmts?STORETYPE=merged-dat&PROJECTION=4326`,
+                        layer: "wmts_4326_361100",
+                        style: "default",
+                        format: "image/png",
+                        tileMatrixSetID: "c",
+                        tileMatrixLabels: new Array(20).fill(0).map((v, i) => i + 1),
+                        tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
+                    })
+                )
             )
 
             baseLayers.contrast = 1.0
+        },
+
+        addTerrain () {
+            projectTerrain = global.DC.TerrainFactory.createUrlTerrain({
+                // url: `http://data.marsgis.cn/terrain`
+                url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_DX}`
+            })
+
+            global.viewer.addTerrain(projectTerrain)
+        },
+
+        removeTerrain () {
+            global.viewer.removeTerrain(projectTerrain)
         },
 
         /**
@@ -761,6 +852,28 @@
             }
         },
 
+        // 切换首页显示隐藏
+        switchShowHomeContent () {
+            this.$store.commit('SET_ISSHOWHOMECONTENT', !this.$store.state.popupParams.isShowHomeContent)
+            console.log(document.querySelector('.screen-full-btn'), 1111222)
+            console.log(document.querySelector('.dc-container'), 3333444)
+            console.log(document.querySelector('.dc-zoom-controller'), 3333444)
+            if (this.$store.state.popupParams.isShowHomeContent) {
+                // if (document.querySelector('.dc-container .dc-zoom-controller').classList.contains('homebottom')) return
+                document.querySelector('.dc-container .dc-zoom-controller').classList.add('homebottom')
+                document.querySelector('.screen-full-btn').classList.add('homebottom')
+                document.querySelector('.over-look-btn').classList.add('homebottom')
+                document.querySelector('.image-switch-icon-btn').classList.add('iconbottom')
+            } else {
+                // if (!document.querySelector('.dc-container .dc-zoom-controller').classList.contains('homebottom')) return
+                document.querySelector('.dc-container .dc-zoom-controller').classList.remove('homebottom')
+                document.querySelector('.screen-full-btn').classList.remove('homebottom')
+                document.querySelector('.over-look-btn').classList.remove('homebottom')
+                document.querySelector('.image-switch-icon-btn').classList.remove('iconbottom')
+            }
+
+        },
+
         /**
          * 在图层中添加实体(点)
          * @param {*} item 图标
@@ -779,26 +892,32 @@
          * @param {*} type 图层类型
          */
         mapAddLayer (layerName, type, ClusterLayerType) {
+            if (!layersObjcect[layerName]) {
+                this.mapRemoveLayer(layerName, type)
+                layersObjcect[layerName] = null
+            }
+
             if (type == 'VectorLayer') {
-                if (!layersObjcect[layerName]) layersObjcect[layerName] = null
-
                 layersObjcect[layerName] = new global.DC.VectorLayer(layerName)
-
-                layersObjcect[layerName].addTo(global.viewer)
             } else if (type == 'ClusterLayer') {
-                if (!layersObjcect[layerName]) layersObjcect[layerName] = null
                 layersObjcect[layerName] = new global.DC.ClusterLayer(layerName, {
                     pixelRange: 40, style: ClusterLayerType
                 })
-
-                layersObjcect[layerName].addTo(global.viewer)
             } else if (type == 'HeatLayer') {
-                if (!layersObjcect[layerName]) layersObjcect[layerName] = null
-
-                layersObjcect[layerName] = new global.DC.HeatLayer(layerName)
-
-                layersObjcect[layerName].addTo(global.viewer)
+                layersObjcect[layerName] = new global.DC.HeatLayer(layerName, {
+                    gradient: {
+                        "0.5": "green",
+                        "0.6": "orange",
+                        "0.95": "red"
+                    }, //颜色设置
+                    height: 0, // 高度
+                    radius: 100, // 半径
+                    useGround: false, //是否使用贴地模式
+                    classificationType: 2 //分类 是否影响地形,3D切片或同时影响这两者。0:地形、1:3D切片、2:两者。贴地模式下生效
+                })
             }
+
+            global.viewer.addLayer(layersObjcect[layerName])
         },
 
         /**
@@ -933,7 +1052,8 @@
          * @param {*} material 颜色
          * @param {*} distanceDisplayCondition 可见距离
          */
-        layerPolygonAdd (layerName, positions, material, distanceDisplayCondition, polygonName, params, incident = (e) => { }, setStyle = {}) {
+        layerPolygonAdd (layerName, positions, material, distanceDisplayCondition, polygonName, params, incident = (e) => { }, mouseOverIncident = (e) => { },
+            mouseOutIncident = (e) => { }, setStyle = {}) {
             if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                 this.mapAddLayer(layerName, 'VectorLayer')
 
@@ -952,6 +1072,8 @@
             // layersObjcect[layerName].addOverlay(polygon)
             polygonObj[polygonName].attrParams = params
             polygonObj[polygonName].on(global.DC.MouseEventType.CLICK, incident)
+            polygonObj[polygonName].on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
+            polygonObj[polygonName].on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
             layersObjcect[layerName].addOverlay(polygonObj[polygonName])
         },
 
@@ -991,6 +1113,23 @@
             wall.setStyle({
                 material: new global.DC.WallTrailMaterialProperty({
                     color: global.DC.Namespace.Cesium.Color.fromBytes(255, 0, 0, 180),
+                    speed: 10
+                })
+            })
+            layersObjcect[layerName].addOverlay(wall)
+        },
+
+        rowLayerWallAdd (layerName, positions) {
+            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
+                this.mapAddLayer(layerName, 'VectorLayer')
+            }
+
+            let wall = new global.DC.Wall(positions)
+            wall.setStyle({
+                material: new global.DC.WallImageTrailMaterialProperty({
+                    image: '/images/jjx.png',
+                    color: global.DC.Namespace.Cesium.Color.fromBytes(255, 255, 0, 180),
+                    repeat: { x: 20, y: 1 },
                     speed: 10
                 })
             })
@@ -1080,17 +1219,16 @@
         addMxTileset (titlesetName, titlesetUrl) {
             if (!tilesetObject[titlesetName]) tilesetObject[titlesetName] = null
 
-            if (this.$route)
+            tilesetObject[titlesetName] = new global.DC.Tileset(titlesetUrl, {
+                luminanceAtZenith: 0.4,
+                // cullWithChildrenBounds: false,
+                // cullRequestsWhileMoving: false,
+                // skipLevelOfDetail: false,
+                shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED
+            })
 
-                tilesetObject[titlesetName] = new global.DC.Tileset(titlesetUrl, {
-                    luminanceAtZenith: 0.4,
-                    // cullWithChildrenBounds: false,
-                    // cullRequestsWhileMoving: false,
-                    // skipLevelOfDetail: false,
-                    shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED
-                })
-
-            tilesetObject[titlesetName].setHeight(-72)
+            // 地形数据添加
+            // tilesetObject[titlesetName].setHeight(-73)
 
             tilesetLayer.addOverlay(tilesetObject[titlesetName])
 
@@ -1141,45 +1279,58 @@
         * @param {*} 
         */
         showThreeDimensions (positions, minHeight, maxHeight) {
-            if (floorEntitysLayers != null) {
-                floorEntitysLayers.remove()
-                floorEntitysLayers = new global.DC.VectorLayer('floorEntitysLayers')
-                global.viewer.addLayer(floorEntitysLayers)
+            console.log('showThreeDimensions--map')
+            if (curPolygon != null) {
+                global.viewer.scene.primitives.remove(curPolygon)
+                curPolygon = null
             }
-
-            floorEntitysLayers.clear()
 
             let housePositions = JSON.parse(positions).coordinates[0]
 
             let floorPositions = housePositions.reduce((prev, curr) => {
-                prev.push([curr[0], curr[1]])
+                prev.push(curr[0])
+                prev.push(curr[1])
 
                 return prev
             }, [])
 
-            let polygonStr = floorPositions.join(';')
+            curPolygon = new global.DC.Namespace.Cesium.ClassificationPrimitive({
+                geometryInstances: new global.DC.Namespace.Cesium.GeometryInstance({
+                    geometry: new global.DC.Namespace.Cesium.PolygonGeometry({
+                        polygonHierarchy: new global.DC.Namespace.Cesium.PolygonHierarchy(
+                            global.DC.Namespace.Cesium.Cartesian3.fromDegreesArray(floorPositions),
+                        ),
+                        extrudedHeight: maxHeight,//分层顶部海拔
+                        height: minHeight,//分层底部海拔
+                    }),
 
-            let polygon = new global.DC.Polygon(polygonStr)
+                    attributes: {
+                        color: global.DC.Namespace.Cesium.ColorGeometryInstanceAttribute.fromColor(global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5)),
+                        show: new global.DC.Namespace.Cesium.ShowGeometryInstanceAttribute(true)
+                    },
+                }),
 
-            polygon.setStyle({
-                material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
-                extrudedHeight: maxHeight,
-                height: minHeight,
-                extrudedHeightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
-                heightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND
+                classificationType: global.DC.Namespace.Cesium.ClassificationType.CESIUM_3D_TILE
             })
 
-            floorEntitysLayers.addOverlay(polygon)
+            global.viewer.scene.primitives.add(curPolygon)
+        },
 
-            floorEntitysLayers.show = true
+        // 建筑高亮切换显示隐藏
+        switchThreeDimensions (boolean) {
+            if (!curPolygon) return
+            curPolygon.show = boolean
         },
 
         // 清除建筑3D
         clearHouse3D () {
-            floorEntitysLayers.clear()
+            global.viewer.scene.primitives.remove(curPolygon)
+
+            curPolygon = null
         },
 
         registerMxClick (event) {
+            this.unbindMxClick()
             label.forEach(item => {
                 if (tilesetObject[`sdTilesetLayer${item}`] && tilesetObject[`sdTilesetLayer${item}`] != null) {
                     tilesetObject[`sdTilesetLayer${item}`].on(global.DC.MouseEventType.CLICK, event)
@@ -1194,6 +1345,33 @@
                 }
             })
         }
+    },
+
+    destroyed () {
+        this.$EventBus.$off('mapAddLayer')
+        this.$EventBus.$off('mapRemoveLayer')
+        this.$EventBus.$off('mapRemovePolygonLayer')
+        this.$EventBus.$off('mapRemovePolygon')
+        this.$EventBus.$off('mapClearLayer')
+        this.$EventBus.$off('layerPointAdd')
+        this.$EventBus.$off('layerPolygonAdd')
+        this.$EventBus.$off('layerPolylineAdd')
+        this.$EventBus.$off('layerWallAdd')
+        this.$EventBus.$off('rowLayerWallAdd')
+        this.$EventBus.$off('getOverLayerID')
+        this.$EventBus.$off('layerShow')
+        this.$EventBus.$off('toPosition')
+        this.$EventBus.$off('highOrLightChange')
+        this.$EventBus.$off('addMxTileset')
+        this.$EventBus.$off('closeMxTileset')
+        this.$EventBus.$off('tilesetLayerFlag')
+        this.$EventBus.$off('removeMxTileset')
+        this.$EventBus.$off('flytoLayer')
+        this.$EventBus.$off('showThreeDimensions')
+        this.$EventBus.$off('switchThreeDimensions')
+        this.$EventBus.$off('clearHouse3D')
+        this.$EventBus.$off('registerMxClick')
+        this.$EventBus.$off('unbindMxClick')
     }
 }
 </script>

--
Gitblit v1.9.3