From abd285e6d013128aa57c9e30e851b2aa76d60ec5 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 10 Feb 2026 16:45:17 +0800
Subject: [PATCH] feat:独栋显示调整

---
 src/components/map/index.vue | 3233 ++++++++++++++++++++++++++++++++---------------------------
 1 files changed, 1,745 insertions(+), 1,488 deletions(-)

diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 8bf0272..3acc1be 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -2,129 +2,130 @@
  * @Author: shuishen 1109946754@qq.com
  * @Date: 2024-06-21 16:37:19
  * @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2024-07-19 15:14:02
+ * @LastEditTime: 2025-01-08 15:02:26
  * @FilePath: \srs-police-affairs\src\components\map\index.vue
  * @Description: 
  * 
  * Copyright (c) 2024 by shuishen, All Rights Reserved. 
 -->
 <template>
-    <div class="viewer-box" id="viewer-container" @click="showImgBtn = false">
-        <slot ref="mainContent" name="mainContent"></slot>
+  <div class="viewer-box" id="viewer-container" @click="showImgBtn = false">
+    <slot ref="mainContent" name="mainContent"></slot>
 
-        <slot name="copyrightText"></slot>
+    <slot name="copyrightText"></slot>
 
-        <slot name="showButton"></slot>
+    <slot name="showButton"></slot>
 
-        <slot name="resetPopup"></slot>
+    <slot name="resetPopup"></slot>
 
-        <div class="compass-btn">
-            <el-tooltip content="指北针" placement="top" effect="dark">
-                <i id="COMPASSBTN" class="el-icon-compass-btn" style="vertical-align: middle; cursor: pointer"
-                    :style="{ transform: compassBtnTranslate }" @click="compassBtnClick"></i>
-            </el-tooltip>
-        </div>
-
-        <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>
-            </el-tooltip>
-        </div>
-        <!-- 全屏控制按钮 -->
-        <div class="screen-full-btn">
-            <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="!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>
-        <!-- 切换矢量图按钮 -->
-        <div class="image-switch-icon-btn">
-            <el-tooltip content="图层、模型、视角" placement="top" effect="dark">
-                <div class="icon-box" @click.stop="showImgBtn = !showImgBtn">
-                    <img src="/img/base_map.png" alt />
-                </div>
-            </el-tooltip>
-
-            <div class="image-switch-img-btn" v-show="showImgBtn" @click.stop>
-                <div class="layer-change-box">
-                    <div class="title">
-                        底图
-                        <div class="close" @click.stop="showImgBtn = false">
-                            <img src="/img/icon/close.png" alt />
-                        </div>
-                    </div>
-
-                    <div class="content">
-                        <div class="img" @click.stop="switchImg">
-                            <span :class="{ on: imgtype == 0 }">影像</span>
-                        </div>
-                        <div class="elec" @click.stop="switchElec">
-                            <span :class="{ on: imgtype == 1 }">矢量</span>
-                        </div>
-                    </div>
-                </div>
-                <div class="layer-change-box">
-                    <div class="title">模型</div>
-                    <div class="content">
-                        <div class="img light" @click.stop="highOrLightChange('light')">
-                            <span :class="{ on: tilesetLayerType == 'light' }">轻量</span>
-                        </div>
-                        <div class="elec high" @click.stop="highOrLightChange('high')">
-                            <span :class="{ on: tilesetLayerType == 'high' }">高精</span>
-                        </div>
-                    </div>
-                </div>
-                <div class="angle-btn">
-                    是否锁定视角:
-                    <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>
-
-        <multip-map-popup></multip-map-popup>
-
-        <video-list-popup></video-list-popup>
-
-        <map-search-popup></map-search-popup>
-
-        <house-deep-data-popup></house-deep-data-popup>
-
-        <business-data-popup></business-data-popup>
-
-        <dialog-detail-popup></dialog-detail-popup>
-
-        <hotel-popup></hotel-popup>
-
-        <y-tool-tip></y-tool-tip>
-
-        <assemble-box></assemble-box>
-
-        <video-row-click-popup></video-row-click-popup>
+    <div class="compass-btn">
+      <el-tooltip content="指北针" placement="top" effect="dark">
+        <i id="COMPASSBTN" class="el-icon-compass-btn" style="vertical-align: middle; cursor: pointer"
+          :style="{ transform: compassBtnTranslate }" @click="compassBtnClick"></i>
+      </el-tooltip>
     </div>
+
+    <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>
+      </el-tooltip>
+    </div>
+    <!-- 全屏控制按钮 -->
+    <div class="screen-full-btn">
+      <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="!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>
+    <!-- 切换矢量图按钮 -->
+    <div class="image-switch-icon-btn">
+      <el-tooltip content="图层、模型、视角" placement="top" effect="dark">
+        <div class="icon-box" @click.stop="showImgBtn = !showImgBtn">
+          <img src="/img/base_map.png" alt />
+        </div>
+      </el-tooltip>
+
+      <div class="image-switch-img-btn" v-show="showImgBtn" @click.stop>
+        <div class="layer-change-box">
+          <div class="title">
+            底图
+            <div class="close" @click.stop="showImgBtn = false">
+              <img src="/img/icon/close.png" alt />
+            </div>
+          </div>
+
+          <div class="content">
+            <div class="img" @click.stop="switchImg">
+              <span :class="{ on: imgtype == 0 }">影像</span>
+            </div>
+            <div class="elec" @click.stop="switchElec">
+              <span :class="{ on: imgtype == 1 }">矢量</span>
+            </div>
+          </div>
+        </div>
+        <div class="layer-change-box">
+          <div class="title">模型</div>
+          <div class="content">
+            <div class="img light" @click.stop="highOrLightChange('light')">
+              <span :class="{ on: tilesetLayerType == 'light' }">轻量</span>
+            </div>
+            <div class="elec high" @click.stop="highOrLightChange('high')">
+              <span :class="{ on: tilesetLayerType == 'high' }">高精</span>
+            </div>
+          </div>
+        </div>
+        <div class="angle-btn">
+          是否锁定视角:
+          <el-checkbox v-model="angleCheck" @change="angleChange"></el-checkbox>
+        </div>
+      </div>
+    </div>
+
+    <map-popup></map-popup>
+
+    <architecture-popup></architecture-popup>
+
+    <place-base-popup></place-base-popup>
+
+    <activity-police-popup></activity-police-popup>
+
+    <multip-map-popup></multip-map-popup>
+
+    <video-list-popup></video-list-popup>
+
+    <map-search-popup></map-search-popup>
+
+    <house-deep-data-popup></house-deep-data-popup>
+
+    <business-data-popup></business-data-popup>
+
+    <dialog-detail-popup></dialog-detail-popup>
+
+    <hotel-popup></hotel-popup>
+
+    <y-tool-tip></y-tool-tip>
+
+    <assemble-box></assemble-box>
+
+    <video-row-click-popup></video-row-click-popup>
+  </div>
 </template>
 
 <script>
-let tile3DUrl = ''
+let tile3DUrl = ""
 
-if (process.env.NODE_ENV == 'development') {
-    // 开发
-    tile3DUrl = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_TILEURL
+if (process.env.NODE_ENV == "development") {
+  // 开发
+  tile3DUrl = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_TILEURL
 } else {
-    // 部署
-    tile3DUrl = window.BASE_URL_CONFIG.VUE_APP_INTRANET_TILEURL
+  // 部署
+  tile3DUrl = window.BASE_URL_CONFIG.VUE_APP_INTRANET_TILEURL
 }
 
 let projectTerrain = null
@@ -132,11 +133,11 @@
 var siteEntitylayers = null
 
 let layersObjcect = {
-    housingEstateLayer: null,
-    patrolWagonLayer: null,
-    handMachineLayer: null,
-    monitoringLayer: null,
-    panoramaLayer: null
+  housingEstateLayer: null,
+  patrolWagonLayer: null,
+  handMachineLayer: null,
+  monitoringLayer: null,
+  panoramaLayer: null,
 }
 let polygonObj = {}
 
@@ -145,1398 +146,1654 @@
 let baseLayers = []
 
 let tilesetObject = {
-    sdTilesetLayer: null
+  sdTilesetLayer: null,
 }
 
 let curPolygon = null
 
 const ysLabels = [
-    'EPSG:4490_test:0',
-    'EPSG:4490_test:1',
-    'EPSG:4490_test:2',
-    'EPSG:4490_test:3',
-    'EPSG:4490_test:4',
-    'EPSG:4490_test:5',
-    'EPSG:4490_test:6',
-    'EPSG:4490_test:7',
-    'EPSG:4490_test:8',
-    'EPSG:4490_test:9',
-    'EPSG:4490_test:10',
-    'EPSG:4490_test:11',
-    'EPSG:4490_test:12',
-    'EPSG:4490_test:13',
-    'EPSG:4490_test:14',
-    'EPSG:4490_test:15',
-    'EPSG:4490_test:16',
-    'EPSG:4490_test:17',
-    'EPSG:4490_test:18',
-    'EPSG:4490_test:19',
-    'EPSG:4490_test:20',
-    'EPSG:4490_test:21',
-    'EPSG:4490_test:22',
+  "EPSG:4490_test:0",
+  "EPSG:4490_test:1",
+  "EPSG:4490_test:2",
+  "EPSG:4490_test:3",
+  "EPSG:4490_test:4",
+  "EPSG:4490_test:5",
+  "EPSG:4490_test:6",
+  "EPSG:4490_test:7",
+  "EPSG:4490_test:8",
+  "EPSG:4490_test:9",
+  "EPSG:4490_test:10",
+  "EPSG:4490_test:11",
+  "EPSG:4490_test:12",
+  "EPSG:4490_test:13",
+  "EPSG:4490_test:14",
+  "EPSG:4490_test:15",
+  "EPSG:4490_test:16",
+  "EPSG:4490_test:17",
+  "EPSG:4490_test:18",
+  "EPSG:4490_test:19",
+  "EPSG:4490_test:20",
+  "EPSG:4490_test:21",
+  "EPSG:4490_test:22",
 ]
 
-import mapPopup from './components/mapPopup.vue'
-import architecturePopup from './components/architecturePopup.vue'
-import activityPolicePopup from './components/activityPolicePopup.vue'
-import multipMapPopup from './components/multipMapPopup.vue'
-import videoListPopup from './components/videoListPopup.vue'
-import videoRowClickPopup from './components/videoRowClickPopup.vue'
-import mapSearchPopup from './components/mapSearchPopup.vue'
-import houseDeepDataPopup from './components/houseDeepDataPopup.vue'
-import hotelPopup from './components/hotelPopup.vue'
-import businessDataPopup from './components/businessDataPopup.vue'
-import dialogDetailPopup from './components/dialogDetailPopup.vue'
-import yToolTip from './components/yToolTip.vue'
-import createTools from '@/utils/tools/index'
-import { mapGetters } from 'vuex'
-import { getLineSpeed } from '@/utils/turfPolygon'
+import mapPopup from "./components/mapPopup.vue"
+import architecturePopup from "./components/architecturePopup.vue"
+import activityPolicePopup from "./components/activityPolicePopup.vue"
+import placeBasePopup from "./components/placeBasePopup.vue"
+import multipMapPopup from "./components/multipMapPopup.vue"
+import videoListPopup from "./components/videoListPopup.vue"
+import videoRowClickPopup from "./components/videoRowClickPopup.vue"
+import mapSearchPopup from "./components/mapSearchPopup.vue"
+import houseDeepDataPopup from "./components/houseDeepDataPopup.vue"
+import hotelPopup from "./components/hotelPopup.vue"
+import businessDataPopup from "./components/businessDataPopup.vue"
+import dialogDetailPopup from "./components/dialogDetailPopup.vue"
+import yToolTip from "./components/yToolTip.vue"
+import createTools from "@/utils/tools/index"
+import { mapGetters } from "vuex"
+import { getLineSpeed } from "@/utils/turfPolygon"
 
 export default {
-    name: 'mapBox',
+  name: "mapBox",
 
-    components: { mapPopup, architecturePopup, activityPolicePopup, multipMapPopup, videoListPopup, mapSearchPopup, houseDeepDataPopup, hotelPopup, businessDataPopup, dialogDetailPopup, yToolTip, videoRowClickPopup },
+  components: {
+    mapPopup,
+    architecturePopup,
+    activityPolicePopup,
+    placeBasePopup,
+    multipMapPopup,
+    videoListPopup,
+    mapSearchPopup,
+    houseDeepDataPopup,
+    hotelPopup,
+    businessDataPopup,
+    dialogDetailPopup,
+    yToolTip,
+    videoRowClickPopup,
+  },
 
-    data () {
-        return {
-            fullscreen: false,
-            isFullscreen: false,
-            dialogVisible: false,
-            dialogTitle: "",
-            searchInput: '',
-            loading: false,
-            searchDetailsShow: false,
-            videoExist: true,
-            videoTotal: 0,
-            carTotal: 0,
-            showImgBtn: false,
-            imgtype: 0,
-            tilesetLayerType: '',
-            angleCheck: true,
-            compassBtnTranslate: 'rotate(0deg)'
-        }
-    },
-
-    computed: {
-        ...mapGetters([
-            'isShowHomeContentBtn'
-        ]),
-    },
-
-    mounted () {
-        if (global.viewer != null) {
-            global.viewer = null
-        }
-        const that = this
-
-        // 初始化地图
-        function initViewer () {
-            // new Viewer(new 地图)
-            global.viewer = new global.DC.Viewer('viewer-container', {
-                contextOptions: {
-                    webgl: {
-                        alpha: true,
-                        stencil: true,
-                        preserveDrawingBuffer: true
-                    }
-                }
-            })
-
-            global.viewer.scene.postRender.addEventListener(function () {
-                var heading = global.viewer.scene.camera.heading
-                var x = -global.DC.Namespace.Cesium.Math.toDegrees(heading)
-                that.compassBtnTranslate = "rotate(" + x + "deg)"
-            })
-
-            const curTools = createTools()
-
-            Object.keys(curTools).forEach(key => {
-                curTools[key].install(global.viewer)
-            })
-
-            // let curTilesetLayer = new global.DC.TilesetLayer('curTilesetLayer')
-            // global.viewer.addLayer(curTilesetLayer)
-            // let curTileset = new global.DC.Tileset(
-            //     '/mx/tileset.json'
-            // )
-            // // curTileset.setHeight(20)
-            // curTileset.setHeight(0)
-            // curTilesetLayer.addOverlay(curTileset)
-
-            global.viewer.setPitchRange(-90, -45)
-
-            global.viewer.scene.globe.depthTestAgainstTerrain = false
-
-            // 去除logo
-            let primitiveArr = global.viewer.scene.primitives._primitives
-            global.viewer.scene.primitives.remove(primitiveArr[0])
-
-
-            // 已声明的图层添加到地图上
-            siteEntitylayers = new global.DC.VectorLayer('siteEntitylayers')
-            global.viewer.addLayer(siteEntitylayers)
-
-            // 图层加入地图
-            layersObjcect.housingEstateLayer = new global.DC.VectorLayer('housingEstateLayer')
-            global.viewer.addLayer(layersObjcect.housingEstateLayer)
-            layersObjcect.patrolWagonLayer = new global.DC.VectorLayer('patrolWagonLayer')
-            global.viewer.addLayer(layersObjcect.patrolWagonLayer)
-            layersObjcect.handMachineLayer = new global.DC.VectorLayer('handMachineLayer')
-            global.viewer.addLayer(layersObjcect.handMachineLayer)
-            layersObjcect.monitoringLayer = new global.DC.VectorLayer('monitoringLayer')
-            global.viewer.addLayer(layersObjcect.monitoringLayer)
-            layersObjcect.panoramaLayer = new global.DC.VectorLayer('panoramaLayer')
-            global.viewer.addLayer(layersObjcect.panoramaLayer)
-
-            // 模型图层添加
-            tilesetLayer = new global.DC.TilesetLayer('tilesetLayer')
-            global.viewer.addLayer(tilesetLayer)
-
-            // 加载围栏
-            // 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'
-            // )
-
-            // wall.setStyle({
-            //     material: new global.DC.WallTrailMaterialProperty({
-            //         color: global.DC.Namespace.Cesium.Color.fromBytes(
-            //             33, 150, 243,
-            //             200
-            //         ),
-            //         speed: 8
-            //     })
-            // })
-            // layer.addOverlay(wall)
-
-            // 判断是否支持图像渲染像素化处理
-            if (global.DC.Namespace.Cesium.FeatureDetection.supportsImageRenderingPixelated()) {
-                global.viewer.setOptions({
-                    resolutionScale: window.devicePixelRatio
-                })
-            }
-
-            // let terrain = global.DC.TerrainFactory.createUrlTerrain({
-            //     url: 'http://data.marsgis.cn/terrain'
-            // })
-            // global.viewer.addTerrain(terrain)
-
-            // 内网
-            that.switchImg()
-
-            // 地形数据添加
-            // 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({
-                // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
-                // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
-                    117.951478782, 28.447896798, 20000
-                ),
-                orientation: {
-                    // 指向
-                    heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: 0.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
-            })
-
-            let MAN_F_H = positions.map(item => {
-                item[2] = 80
-                return item
-            })
-
-            // 原生Cesium加载多边体
-            // 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),
-            //     }
-            // })
-
-
-            // console.log(floorPositions)
-
-            // let floorPositions = MIN_F_H.concat(MAN_F_H)
-
-            // let floorPolygonlayer = new global.DC.VectorLayer('floorPolygonlayer')
-            // global.viewer.addLayer(floorPolygonlayer)
-
-            // let floorPolygon = new global.DC.Polygon(
-            //     floorPositions
-            // )
-
-            // floorPolygon.setStyle({
-            //     height: 70,
-            //     extrudedHeight: 80,
-            //     material: global.DC.Color.GREEN.withAlpha(0.5),
-            //     heightReference: 2,
-            //     perPositionHeight: true
-            // })
-
-            // floorPolygonlayer.addOverlay(floorPolygon)
-
-            // global.viewer.flyTo(floorPolygonlayer)
-
-            // global.viewer.flyTo(sqTileset)
-
-            global.viewer.use(new global.DC.Measure())
-
-            // global.viewer.locationBar.enable = true
-            // 缩放
-            global.viewer.zoomController.enable = true
-            // 比例尺
-            // 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)
-
-
-
-        // global.viewer.scene.morphTo2D(1)
-
-        // 清除控制台
-        console.clear()
-
-        function isEleFullScreen () {
-            const fullScreenEle =
-                document.fullscreenElement ||
-                document.msFullscreenElement ||
-                document.mozFullScreenElement ||
-                document.webkitFullscreenElement
-            if (fullScreenEle === null) {
-
-                that.isFullscreen = false
-                return false
-            } else {
-                return true
-            }
-        }
-
-        window.onresize = function () {
-            console.log(isEleFullScreen())
-        }
-
-        // 注册事件
-
-        // 使用示例
-        // this.$EventBus.$emit('mapAddLayer', {
-        //     layerName: 'housingEstateLayer',
-        //     type: 'VectorLayer'
-        // })
-
-
-        this.$EventBus.$on('mapAddLayer', (params) => {
-            that.mapAddLayer(params.layerName, params.type)
-        })
-
-        this.$EventBus.$on('mapRemoveLayer', (params) => {
-            that.mapRemoveLayer(params.layerName, params.type)
-        })
-
-        this.$EventBus.$on('mapRemoveSiteLayer', (params) => {
-            that.mapRemoveSiteLayer(params.layerName, params.siteId)
-        })
-
-        this.$EventBus.$on('mapRemovePolygonLayer', (params) => {
-            that.mapRemovePolygonLayer(params.layerName, params.polygonName, params.type)
-        })
-
-        this.$EventBus.$on('mapRemovePolygon', (params) => {
-            that.mapRemovePolygon(params.layerName, params.overlay, params.type)
-        })
-
-        this.$EventBus.$on('mapClearLayer', (params) => {
-            that.mapClearLayer(params.layerName, params.type)
-        })
-
-        this.$EventBus.$on('layerPointAdd', (params) => {
-            // eslint-disable-next-line no-unused-vars
-            that.layerPointAdd(params.layerName, params.type, params.layerType, params.params, params.distanceDisplayCondition, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.pointMouseMove)
-        })
-
-        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.mouseOverIncident, params.mouseOutIncident, params.setStyle)
-            } else {
-                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, 'polygon', params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
-            }
-        })
-
-        this.$EventBus.$on('layerPolygonArrowsAdd', (params) => {
-            that.layerPolygonArrowsAdd(params.layerName, params.positions, params.material, params.polygonName, params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
-        })
-
-        this.$EventBus.$on('layerPolylineAdd', (params) => {
-            that.layerPolylineAdd(params.layerName, params.positions, params.material, params.width, params.params, params.incident)
-        })
-
-        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) => {
-            that.getOverLayerID(params.layerName, params.ids, params.cb)
-        })
-
-        this.$EventBus.$on('layerShow', (params) => {
-            that.layerShow(params.layerName, params.flag)
-        })
-
-        this.$EventBus.$on('toPosition', (params) => {
-            that.toPosition(params.siteJd, params.siteWd, params.siteGd, params.siteHeading, params.sitePitch, params.siteRoll, params.time)
-        })
-
-        this.$EventBus.$on('highOrLightChange', (type, status) => {
-            // eslint-disable-next-line no-unused-vars
-            that.highOrLightChange(type, status)
-        })
-
-        this.$EventBus.$on('addMxTileset', (params) => {
-            // eslint-disable-next-line no-unused-vars
-            that.addMxTileset(params.titlesetName, params.titlesetUrl)
-        })
-
-        this.$EventBus.$on('closeMxTileset', () => {
-            // eslint-disable-next-line no-unused-vars
-            that.closeMxTileset()
-        })
-
-        this.$EventBus.$on('tilesetLayerFlag', (type, cb) => {
-            // eslint-disable-next-line no-unused-vars
-            that.tilesetLayerFlag(type, cb)
-        })
-
-        this.$EventBus.$on('removeMxTileset', (params) => {
-            // eslint-disable-next-line no-unused-vars
-            that.removeMxTileset(params.titlesetName)
-        })
-
-        this.$EventBus.$on('flytoLayer', (params) => {
-            that.flytoLayer(params.polygonName, params.duration)
-        })
-
-        this.$EventBus.$on('showThreeDimensions', (params) => {
-            that.showThreeDimensions(params.positions, params.minHeight, params.maxHeight)
-        })
-
-        this.$EventBus.$on('switchThreeDimensions', (params) => {
-            that.switchThreeDimensions(params)
-        })
-
-        this.$EventBus.$on('clearHouse3D', () => {
-            that.clearHouse3D()
-        })
-
-        this.$EventBus.$on('registerMxClick', (event) => {
-            that.registerMxClick(event)
-        })
-
-
-        this.$EventBus.$on('unbindMxClick', (event) => {
-            that.unbindMxClick(event)
-        })
-
-
-        // 重写定位方法
-        const homeCenter = [117.99311892441567, 28.46938164123123]
-        this.$nextTick(() => {
-            // 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 = '初始化位置'
-        })
-    },
-
-    methods: {
-        // 获取当前地图中心的经纬度
-        getSceneCenterPosition (viewer) {
-            let centerResult = viewer.camera.pickEllipsoid(
-                new global.DC.Namespace.Cesium.Cartesian2(
-                    viewer.canvas.clientWidth / 2,
-                    viewer.canvas.clientHeight / 2,
-                ),
-            )
-            let curPosition = global.DC.Namespace.Cesium.Ellipsoid.WGS84.cartesianToCartographic(centerResult)
-            let curLongitude = (curPosition.longitude * 180) / Math.PI
-            let curLatitude = (curPosition.latitude * 180) / Math.PI
-            return {
-                lon: curLongitude,
-                lat: curLatitude,
-            }
-        },
-        compassBtnClick () {
-            const degrees = global.viewer.camera.heading * (180 / Math.PI)
-            if (degrees == 360) {
-                return
-            }
-            const position = global.DC.Transform.transformCartesianToWGS84(global.viewer.camera.position)
-
-
-            global.viewer.camera.flyTo({
-                // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
-                // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                destination: global.DC.Transform.transformWGS84ToCartesian(new global.DC.Position(position.lng, position.lat, position.alt + 1000)),
-
-                orientation: {
-                    // 指向
-                    heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
-                    // 视角
-                    pitch: global.viewer.camera.pitch,
-                    roll: global.viewer.camera.roll
-                },
-                duration: 3
-            })
-        },
-
-        overLookClick () {
-            const degrees = global.viewer.camera.pitch * (180 / Math.PI)
-
-            if (degrees == -90) {
-                return
-            }
-
-            const position = this.getSceneCenterPosition(global.viewer)
-
-            global.viewer.camera.flyTo({
-                // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
-                // fromDegrees()方法,将经纬度和高程转换为世界坐标
-                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
-                    position.lon, position.lat, global.viewer.camera.positionCartographic.height * 1.5
-                ),
-                orientation: {
-                    // 指向
-                    heading: global.viewer.camera.heading,
-                    // 视角
-                    pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
-                    roll: global.viewer.camera.roll
-                },
-                duration: 3
-            })
-        },
-
-        angleChange (e) {
-            if (e) {
-                global.viewer.camera.flyTo({
-                    destination: global.viewer.camera.position,
-                    orientation: {
-                        heading: global.viewer.camera.heading,
-                        pitch: -45,
-                        roll: global.viewer.camera.roll
-                    },
-                    duration: 0.0
-                })
-
-                global.viewer.setPitchRange(-90, -45)
-            } else {
-                global.viewer.setPitchRange(-90, 0)
-            }
-        },
-
-        closeMxTileset () {
-            window.TILESET_LABEL.forEach(item => {
-                this.removeMxTileset(`sdTilesetLayer${item}`)
-            })
-
-            this.tilesetLayerType = ''
-        },
-
-        /**
-         * @description: 高精度模型和轻量模型切换
-         * @param {*} type
-         * @return {*}
-         */
-        highOrLightChange (type, status = '') {
-            this.$EventBus.$emit('showHouseingTileset', {
-                type: 'remove'
-            })
-
-            window.TILESET_LABEL.forEach(item => {
-                this.removeMxTileset(`sdTilesetLayer${item}`)
-            })
-
-            // this.addMxTileset('sdTilesetLayer', `${tile3DUrl}/sf3d/361102/model/wanda/tileset.json`)
-            // this.addMxTileset('sdTilesetLayer02', `https://tuan-gis.sit.fengtu.com.cn/361102/wanda/tileset.json`)
-            // this.addMxTileset('sdTilesetLayer', `/mx/01/tileset.json`)
-
-            if (this.tilesetLayerType == type && status == '') {
-                this.tilesetLayerType = ''
-
-            } else {
-                this.tilesetLayerType = type
-
-                type == 'light' ?
-                    window.TILESET_LABEL.forEach(item => {
-                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all/${item}/tileset.json`)
-                    }) :
-                    window.TILESET_LABEL.forEach(item => {
-                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all1/${item}/tileset.json`)
-                    })
-
-                if (this.$route.path == "/layout/house") {
-                    this.$EventBus.$emit('showHouseingTileset', {
-                        type: 'add'
-                    })
-                }
-            }
-        },
-
-        // 模型的点击事件
-        tilesetClick (e) {
-            if (this.$route.path != "/layout/house") {
-                this.$router.push({ path: '/layout/house', query: { searchName: 'xxx小区' } })
-            }
-        },
-
-        switchImg () {
-            // 天地图 影像
-            this.imgtype = 0
-            baseLayers.length && baseLayers.forEach(item => {
-                item && global.viewer.imageryLayers.remove(item)
-            })
-
-            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: `/qp/{AZ}/{y}/{x}.png`,
-                    customTags: {
-                        AZ (imageryProvider, x, y, level) {
-                            return 'Z' + level
-                        },
-                    },
-                    minimumLevel: 0,
-                    maximumLevel: 25,
-                })
-            )
-
-            qp.contrast = 0.8
-
-            baseLayers.push(qp)
-
-            window.YX_LAYER_CONFIG.forEach(item => {
-                let rectangle = {}
-
-                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)
-            })
-
-            if (window.ADD_NEW_YX_LAYER_CONFIG.length > 0) {
-                window.ADD_NEW_YX_LAYER_CONFIG.forEach(item => {
-                    const layer = global.viewer.imageryLayers.addImageryProvider(
-                        new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
-                            url: `/addlayer/${item.name}/{AZ}/{y}/{x}.png`,
-                            customTags: {
-                                AZ (imageryProvider, x, y, level) {
-                                    return 'Z' + level
-                                },
-                            },
-                            minimumLevel: 0,
-                            maximumLevel: 25,
-                        })
-                    )
-
-                    layer.contrast = 0.8
-
-                    baseLayers.push(layer)
-                })
-            }
-
-            // baseLayers = global.viewer.imageryLayers.addImageryProvider(
-            //     new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
-            //         url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/geoserver/gwc/service/wmts`,
-            //         layer: "test",
-            //         style: "",
-            //         format: "image/png",
-            //         tileMatrixSetID: "EPSG:4490_test",
-            //         tileMatrixLabels: ysLabels,
-            //         tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
-            //     })
-            // )
-
-        },
-
-        switchElec () {
-            // 天地图 矢量
-            this.imgtype = 1
-
-            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)
-        },
-
-        /**
-         * @description: 全屏控制
-         * @return {*} 无返回值
-         */
-        fullscreenchange () {
-            // 最新写法
-            const isFullScreen = document.fullscreenElement
-            if (isFullScreen) {
-                if (document.exitFullscreen) {
-                    document.exitFullscreen()
-                } else if (document.msExitFullscreen) {
-                    document.msExitFullscreen()
-                } else if (document.mozCancelFullScreen) {
-                    document.mozCancelFullScreen()
-                } else if (document.webkitCancelFullScreen) {
-                    document.webkitCancelFullScreen()
-                }
-                this.isFullscreen = false
-            } else {
-                var fullscreen = document.body   // 需要全屏的元素
-                if (fullscreen.requestFullscreen) {
-                    fullscreen.requestFullscreen()
-                } else if (fullscreen.mozRequestFullScreen) {
-                    fullscreen.mozRequestFullScreen()
-                } else if (fullscreen.webkitRequestFullscreen) {
-                    fullscreen.webkitRequestFullscreen()
-                } else if (fullscreen.msRequestFullscreen) {
-                    fullscreen.msRequestFullscreen()
-                }
-                this.isFullscreen = true
-            }
-        },
-
-        // 切换首页显示隐藏
-        switchShowHomeContent () {
-            this.$store.commit('SET_ISSHOWHOMECONTENT', !this.$store.state.popupParams.isShowHomeContent)
-            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('.compass-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('.compass-btn').classList.remove('homebottom')
-                document.querySelector('.image-switch-icon-btn').classList.remove('iconbottom')
-            }
-
-        },
-
-        /**
-         * 在图层中添加实体(点)
-         * @param {*} item 图标
-         * @param {*} url 图标地址
-         */
-        addSiteEntity (item, url) {
-            const billboard = new global.DC.Billboard(new global.DC.Position(Number(item.lng), Number(item.lat)), url)
-            billboard.size = [20, 28]
-            billboard.attrParams = item
-            siteEntitylayers.addOverlay(billboard)
-        },
-
-        /**
-         * 添加图层
-         * @param {*} layerName 图层名称
-         * @param {*} type 图层类型
-         */
-        mapAddLayer (layerName, type, ClusterLayerType) {
-            if (!layersObjcect[layerName]) {
-                this.mapRemoveLayer(layerName, type)
-                layersObjcect[layerName] = null
-            }
-
-            if (type == 'VectorLayer') {
-                layersObjcect[layerName] = new global.DC.VectorLayer(layerName)
-            } else if (type == 'ClusterLayer') {
-                layersObjcect[layerName] = new global.DC.ClusterLayer(layerName, {
-                    pixelRange: 40, style: ClusterLayerType
-                })
-            } else if (type == 'HeatLayer') {
-                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])
-        },
-
-        /**
-         * 删除图层
-         * @param {*} layerName 图层名称
-         * @param {*} type 图层类型
-         */
-        mapRemoveLayer (layerName, type) {
-            if (type == 'VectorLayer' || type == 'ClusterLayer' || type == 'HeatLayer') {
-                if (layersObjcect[layerName] && layersObjcect[layerName] != null) {
-                    layersObjcect[layerName].remove()
-                    layersObjcect[layerName] = null
-                }
-            }
-        },
-
-        /**
-         * 删除图层指定面
-         * @param {*} layerName 图层名称
-         * @param {*} polygonName 面名称
-         * @param {*} type 图层类型
-         */
-        mapRemovePolygonLayer (layerName, polygonName, type) {
-            if (type == 'VectorLayer' || type == 'ClusterLayer' || type == 'HeatLayer') {
-                if (layersObjcect[layerName] && layersObjcect[layerName] != null && polygonObj[polygonName] && polygonObj[polygonName] != null) {
-                    layersObjcect[layerName].removeOverlay(polygonObj[polygonName])
-                }
-            }
-        },
-
-        mapRemovePolygon (layerName, overlay, type) {
-            if (type == 'VectorLayer') {
-                if (layersObjcect[layerName] && layersObjcect[layerName] != null) {
-                    layersObjcect[layerName].removeOverlay(overlay)
-                }
-            }
-        },
-
-        /**
-         * 清空图层
-         * @param {*} layerName 图层名称
-         * @param {*} type 图层类型
-         */
-        mapClearLayer (layerName, type) {
-            if (type == 'VectorLayer' || type == 'ClusterLayer' || type == 'HeatLayer') {
-                if (layersObjcect[layerName] && layersObjcect[layerName] != null)
-                    layersObjcect[layerName].clear()
-            }
-        },
-
-        /**
-         * 图层点添加
-         * @param {*} layerName 图层名称
-         * @param {*} type 添加的点位类型
-         * @param {*} params 添加的点位参数(内容、详情)
-         * @param {*} incident 添加的点位事件
-         */
-
-        layerPointAdd (layerName, type, layerType = 'VectorLayer', params, distanceDisplayCondition = {
-            near: 0, //最近距离
-            far: Number.MAX_VALUE //最远距离
-        }, incident = (e) => { }, mouseOverIncident = (e) => { }, mouseOutIncident = (e) => { }, pointMouseMove = (e) => { }) {
-            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
-                this.mapAddLayer(layerName, layerType, params.ClusterLayerType)
-            }
-
-            let pointElement
-            let labelElement
-
-            if (type == "billboard") {
-                // pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.url)
-                pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), 0), params.url)
-                pointElement.setStyle(params.setStyle)
-                pointElement.size = params.size || [32, 32]
-                pointElement.style = "clustering"
-                pointElement.attrParams = params
-                layersObjcect[layerName].addOverlay(pointElement)
-                pointElement.on(global.DC.MouseEventType.CLICK, incident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_MOVE, pointMouseMove)
-            } else if (type == "label") {
-                // labelElement = new global.DC.Label(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.text)
-                labelElement = new global.DC.Label(new global.DC.Position(Number(params.lng), Number(params.lat), 0), params.text)
-                let fontColor = 'fontColor' in params ? params.fontColor : global.DC.Color.CRIMSON
-                let style = 'fontColor' in params ? global.DC.Namespace.Cesium.LabelStyle.FILL : global.DC.Namespace.Cesium.LabelStyle.FILL_AND_OUTLINE
-                labelElement.setStyle({
-                    style: style,
-                    fillColor: fontColor,
-                    outlineColor: global.DC.Color.WHITE, // 边框颜色
-                    outlineWidth: params.outW || 4, // 边框大小,
-                    font: '16px sans-serif',
-                    pixelOffset: { x: 0, y: -30 },
-                    distanceDisplayCondition: distanceDisplayCondition,
-                })
-                labelElement.attrParams = params
-                layersObjcect[layerName].addOverlay(labelElement)
-                labelElement.on(global.DC.MouseEventType.CLICK, incident)
-            } else if (type == "billboardOrLabel") {
-                let allSite = layersObjcect[layerName].getOverlays()
-
-                let flag = allSite.filter(item => item.attrParams.id == params.id)
-
-                if (flag == true) {
-                    return
-                }
-
-                // pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.url)
-                pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), 0), params.url)
-                pointElement.setStyle(params.setStyle)
-                pointElement.size = params.size || [32, 32]
-                pointElement.style = "clustering"
-                pointElement.attrParams = params
-                layersObjcect[layerName].addOverlay(pointElement)
-                pointElement.on(global.DC.MouseEventType.CLICK, incident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_MOVE, pointMouseMove)
-
-                // labelElement = new global.DC.Label(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.text)
-                labelElement = new global.DC.Label(new global.DC.Position(Number(params.lng), Number(params.lat), 0), String(params.text))
-                let fontColor = 'fontColor' in params ? params.fontColor : global.DC.Color.CRIMSON
-                let style = 'fontColor' in params ? global.DC.Namespace.Cesium.LabelStyle.FILL : global.DC.Namespace.Cesium.LabelStyle.FILL_AND_OUTLINE
-                labelElement.setStyle({
-                    style: style,
-                    fillColor: fontColor,
-                    outlineColor: global.DC.Color.WHITE, // 边框颜色
-                    outlineWidth: params.outW || 4, // 边框大小,
-                    font: '16px sans-serif',
-                    pixelOffset: { x: 0, y: -30 },
-                    distanceDisplayCondition: distanceDisplayCondition,
-                    ...params.setStyle
-                })
-                labelElement.attrParams = params
-                layersObjcect[layerName].addOverlay(labelElement)
-                labelElement.on(global.DC.MouseEventType.CLICK, incident)
-            } else if (type == 'HeatPoint') {
-                layersObjcect[layerName].setPositions(params.positions)
-            } else if (type == "newBillboard") {
-                // pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.url)
-                pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), 0), params.url)
-                pointElement.setStyle(params.setStyle)
-                pointElement.size = params.size || [32, 32]
-                pointElement.style = "clustering"
-                pointElement.attrParams = params
-                layersObjcect[layerName].addOverlay(pointElement)
-                pointElement.on(global.DC.MouseEventType.CLICK, incident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
-                pointElement.on(global.DC.MouseEventType.MOUSE_MOVE, pointMouseMove)
-            }
-
-        },
-
-        /**
-         * 删除图层指定点
-         * @param {*} layerName 图层名称
-         * @param {*} siteId 点ID
-         */
-        mapRemoveSiteLayer (layerName, siteId) {
-            if (layersObjcect[layerName]) {
-                let allSite = layersObjcect[layerName].getOverlays()
-
-                allSite.filter(item => item.attrParams.id == siteId).forEach(item => layersObjcect[layerName].removeOverlay(item))
-            }
-        },
-
-
-        /**
-         * 图层面添加
-         * @param {*} layerName 图层名称
-         * @param {*} positions 图层位置数据
-         * @param {*} material 颜色
-         * @param {*} distanceDisplayCondition 可见距离
-         */
-        layerPolygonAdd (layerName, positions, material, distanceDisplayCondition, polygonName, params, incident = (e) => { }, mouseOverIncident = (e) => { },
-            mouseOutIncident = (e) => { }, setStyle = {}) {
-            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
-                this.mapAddLayer(layerName, 'VectorLayer')
-
-                layersObjcect[layerName].allowDrillPicking = true
-            }
-            // let polygon = new global.DC.Polygon(positions)
-            // let polygonObj = {}//要在全局定义
-            polygonObj[polygonName] = new global.DC.Polygon(positions)
-            // polygon.setStyle({
-            polygonObj[polygonName].setStyle({
-                material: material,
-                distanceDisplayCondition: distanceDisplayCondition,
-                perPositionHeight: true,
-                ...setStyle
-            })
-            // 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])
-        },
-
-        /**
-         * 图层面添加
-         * @param {*} layerName 图层名称
-         * @param {*} positions 图层位置数据
-         * @param {*} material 颜色
-         * @param {*} distanceDisplayCondition 可见距离
-         */
-        layerPolygonArrowsAdd (layerName, positions, material, polygonName = '', params, incident = (e) => { }, mouseOverIncident = (e) => { },
-            mouseOutIncident = (e) => { }, setStyle = {}) {
-            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
-                this.mapAddLayer(layerName, 'VectorLayer')
-
-                layersObjcect[layerName].allowDrillPicking = true
-            }
-
-            if (polygonName == '') {
-                polygonName = layerName + params.id
-            }
-
-            polygonObj[polygonName] = new global.DC.Polyline(positions)
-
-
-            let positionData = positions.split(';').map(item => {
-                return [Number(item.split(',')[0]), Number(item.split(',')[1])]
-            }).filter(item => {
-                return !item.some(it => it == 0)
-            })
-
-            console.log(params.width, 15)
-
-            polygonObj[polygonName].setStyle({
-                width: params.width,
-                material: new global.DC.PolylineImageTrailMaterialProperty({
-                    color: new global.DC.Color(255, 255, 255),
-                    speed: 20,
-                    image: '/images/arrows.png',
-                    repeat: {
-                        x: getLineSpeed(positionData) / 2, y: 1
-                    }
-                }),
-                distanceDisplayCondition: {
-                    near: 0, //最近距离
-                    far: 2000 //最远距离
-                },
-                clampToGround: false,
-                ...setStyle
-            })
-
-            polygonObj[polygonName].attrParams = params
-            layersObjcect[layerName].addOverlay(polygonObj[polygonName])
-        },
-
-        /**
-         * 图层线添加
-         * @param {*} layerName 图层名称
-         * @param {*} positions 图层位置数据
-         * @param {*} material 颜色
-         * @param {*} width 宽度
-         */
-        layerPolylineAdd (layerName, positions, material, width, params, incident = (e) => { }) {
-            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
-                this.mapAddLayer(layerName, 'VectorLayer')
-
-                layersObjcect[layerName].allowDrillPicking = true
-            }
-
-            let polyline = new global.DC.Polyline(positions)
-
-            polyline.setStyle({
-                width: width,
-                material: material,
-                clampToGround: false
-            })
-            polyline.attrParams = params
-            polyline.on(global.DC.MouseEventType.CLICK, incident)
-
-            layersObjcect[layerName].addOverlay(polyline)
-        },
-
-        layerWallAdd (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.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
-                })
-            })
-            layersObjcect[layerName].addOverlay(wall)
-        },
-
-        /**
-         * @description: 通过ID获取图层
-         * @return {*}
-         */
-        getOverLayerID (layerName, ids = [], cb) {
-
-            const data = ids.reduce((pre, cur) => {
-
-                if (
-                    layersObjcect[layerName].getOverlay(cur.overlayId)
-                    && layersObjcect[layerName].getOverlay(cur.overlayId) != undefined
-                    && layersObjcect[layerName].getOverlay(cur.overlayId) != null
-                    && layersObjcect[layerName].getOverlay(cur.overlayId) != ''
-                ) {
-                    pre.push(layersObjcect[layerName].getOverlay(cur.overlayId).attrParams)
-                } else {
-                    layersObjcect[layerName].eachOverlay(item => {
-                        if (item.overlayId == cur.overlayId)
-                            pre.push(item.attrParams)
-                    })
-                }
-
-                return pre
-
-            }, [])
-
-            cb(data)
-
-        },
-
-        /**
-         * 图层显示隐藏
-         * @param {*} layerName 图层名称
-         * @param {*} flag 显示隐藏
-         */
-        layerShow (layerName, flag) {
-            if (layersObjcect[layerName]) layersObjcect[layerName].show = flag
-        },
-
-        /**
-         * 飞到指定位置
-         * @param {*} siteJd 经度
-         * @param {*} siteWd 纬度
-         * @param {*} siteGd 高度,默认0
-         * @param {*} siteHeading 偏航角度,默认0
-         * @param {*} sitePitch 俯仰角度,默认0
-         * @param {*} siteRoll 翻转角度,默认0
-         * @param {*} time 飞行时间,默认3秒
-         */
-        toPosition (siteJd, siteWd, siteGd = 2000, siteHeading = 0, sitePitch = -90, siteRoll = 0, time = 3) {
-            global.viewer.flyToPosition(
-                new global.DC.Position(
-                    Number(siteJd),
-                    Number(siteWd),
-                    Number(siteGd),
-                    Number(siteHeading),
-                    Number(sitePitch),
-                    Number(siteRoll)
-                ),
-                function () { },
-                time
-            )
-        },
-        // sdTilesetLayer
-
-        /**
-        * 飞到指定范围
-        * @param {*} polygonName 范围名称
-        * @param {*} duration 时间
-        */
-        flytoLayer (polygonName, duration = 3) {
-            global.viewer.flyTo(polygonObj[polygonName], duration)
-        },
-
-        /**
-         * 添加模型
-         * @param {*} titlesetName 图层名称
-         * @param {*} titlesetUrl 模型地址
-         * @param {*} incident 模型点击事件
-         */
-        addMxTileset (titlesetName, titlesetUrl) {
-            if (!tilesetObject[titlesetName]) tilesetObject[titlesetName] = null
-
-            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(-73)
-
-            tilesetLayer.addOverlay(tilesetObject[titlesetName])
-
-            // global.viewer.flyTo(tilesetObject[titlesetName])removeMxTileset
-        },
-
-        tilesetLayerFlag (type, cb) {
-            if (type == 1) {
-                if (this.tilesetLayerType != '') {
-                    this.$message({
-                        message: '请关闭模型再开始绘制',
-                        type: 'warning'
-                    })
-
-                    cb(false)
-                    return
-                }
-            } else {
-                if (this.tilesetLayerType == '') {
-                    this.$message({
-                        message: '请打开模型再开始绘制',
-                        type: 'warning'
-                    })
-
-                    cb(false)
-                    return
-                }
-            }
-
-            cb(true)
-        },
-
-        /**
-         * 删除模型
-         * @param {*} titlesetName 图层名称
-         * @param {*} incident 模型点击事件
-         */
-        removeMxTileset (titlesetName) {
-            if (tilesetObject[titlesetName] && tilesetObject[titlesetName] != null) {
-                tilesetLayer.removeOverlay(tilesetObject[titlesetName])
-                tilesetObject[titlesetName] = null
-            }
-        },
-
-        /**
-        * 建筑高亮显示
-        * @param {*} positions 建筑范围坐标
-        * @param {*} 
-        */
-        showThreeDimensions (positions, minHeight, maxHeight) {
-            console.log('showThreeDimensions--map')
-            if (curPolygon != null) {
-                global.viewer.scene.primitives.remove(curPolygon)
-                curPolygon = null
-            }
-
-            let housePositions = JSON.parse(positions).coordinates[0]
-
-            let floorPositions = housePositions.reduce((prev, curr) => {
-                prev.push(curr[0])
-                prev.push(curr[1])
-
-                return prev
-            }, [])
-
-            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 - 73,//分层顶部海拔
-                        height: minHeight - 73,//分层底部海拔
-                    }),
-
-                    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)
-                    },
-                }),
-
-                classificationType: global.DC.Namespace.Cesium.ClassificationType.CESIUM_3D_TILE
-            })
-
-            global.viewer.scene.primitives.add(curPolygon)
-        },
-
-        // 建筑高亮切换显示隐藏
-        switchThreeDimensions (boolean) {
-            if (!curPolygon) return
-            curPolygon.show = boolean
-        },
-
-        // 清除建筑3D
-        clearHouse3D () {
-            global.viewer.scene.primitives.remove(curPolygon)
-
-            curPolygon = null
-        },
-
-        registerMxClick (event) {
-            this.unbindMxClick()
-            window.TILESET_LABEL.forEach(item => {
-                if (tilesetObject[`sdTilesetLayer${item}`] && tilesetObject[`sdTilesetLayer${item}`] != null) {
-                    tilesetObject[`sdTilesetLayer${item}`].on(global.DC.MouseEventType.CLICK, event)
-                }
-            })
-        },
-
-        unbindMxClick (event) {
-            window.TILESET_LABEL.forEach(item => {
-                if (tilesetObject[`sdTilesetLayer${item}`] && tilesetObject[`sdTilesetLayer${item}`] != null) {
-                    tilesetObject[`sdTilesetLayer${item}`].off(global.DC.MouseEventType.CLICK, event)
-                }
-            })
-        }
-    },
-
-    destroyed () {
-        this.$EventBus.$off('mapAddLayer')
-        this.$EventBus.$off('mapRemoveLayer')
-        this.$EventBus.$off('mapRemovePolygonLayer')
-        this.$EventBus.$off('mapRemoveSiteLayer')
-        this.$EventBus.$off('mapRemovePolygon')
-        this.$EventBus.$off('mapClearLayer')
-        this.$EventBus.$off('layerPointAdd')
-        this.$EventBus.$off('layerPolygonAdd')
-        this.$EventBus.$off('layerPolygonArrowsAdd')
-        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')
+  data () {
+    return {
+      fullscreen: false,
+      isFullscreen: false,
+      dialogVisible: false,
+      dialogTitle: "",
+      searchInput: "",
+      loading: false,
+      searchDetailsShow: false,
+      videoExist: true,
+      videoTotal: 0,
+      carTotal: 0,
+      showImgBtn: false,
+      imgtype: 0,
+      tilesetLayerType: "",
+      angleCheck: true,
+      compassBtnTranslate: "rotate(0deg)",
     }
+  },
+
+  computed: {
+    ...mapGetters(["isShowHomeContentBtn"]),
+  },
+
+  mounted () {
+    if (global.viewer != null) {
+      global.viewer = null
+    }
+    const that = this
+
+    // 初始化地图
+    function initViewer () {
+      // new Viewer(new 地图)
+      global.viewer = new global.DC.Viewer("viewer-container", {
+        contextOptions: {
+          webgl: {
+            alpha: true,
+            stencil: true,
+            preserveDrawingBuffer: true,
+          },
+        },
+      })
+
+      global.viewer.scene.postRender.addEventListener(function () {
+        var heading = global.viewer.scene.camera.heading
+        var x = -global.DC.Namespace.Cesium.Math.toDegrees(heading)
+        that.compassBtnTranslate = "rotate(" + x + "deg)"
+      })
+
+      const curTools = createTools()
+
+      Object.keys(curTools).forEach((key) => {
+        curTools[key].install(global.viewer)
+      })
+
+      // let curTilesetLayer = new global.DC.TilesetLayer('curTilesetLayer')
+      // global.viewer.addLayer(curTilesetLayer)
+      // let curTileset = new global.DC.Tileset(
+      //     '/mx/tileset.json'
+      // )
+      // // curTileset.setHeight(20)
+      // curTileset.setHeight(0)
+      // curTilesetLayer.addOverlay(curTileset)
+
+      global.viewer.setPitchRange(-90, -45)
+
+      global.viewer.scene.globe.depthTestAgainstTerrain = false
+
+      // 去除logo
+      let primitiveArr = global.viewer.scene.primitives._primitives
+      global.viewer.scene.primitives.remove(primitiveArr[0])
+
+      // 已声明的图层添加到地图上
+      siteEntitylayers = new global.DC.VectorLayer("siteEntitylayers")
+      global.viewer.addLayer(siteEntitylayers)
+
+      // 图层加入地图
+      layersObjcect.housingEstateLayer = new global.DC.VectorLayer(
+        "housingEstateLayer"
+      )
+      global.viewer.addLayer(layersObjcect.housingEstateLayer)
+      layersObjcect.patrolWagonLayer = new global.DC.VectorLayer(
+        "patrolWagonLayer"
+      )
+      global.viewer.addLayer(layersObjcect.patrolWagonLayer)
+      layersObjcect.handMachineLayer = new global.DC.VectorLayer(
+        "handMachineLayer"
+      )
+      global.viewer.addLayer(layersObjcect.handMachineLayer)
+      layersObjcect.monitoringLayer = new global.DC.VectorLayer(
+        "monitoringLayer"
+      )
+      global.viewer.addLayer(layersObjcect.monitoringLayer)
+      layersObjcect.panoramaLayer = new global.DC.VectorLayer("panoramaLayer")
+      global.viewer.addLayer(layersObjcect.panoramaLayer)
+
+      // 模型图层添加
+      tilesetLayer = new global.DC.TilesetLayer("tilesetLayer")
+      global.viewer.addLayer(tilesetLayer)
+
+      // 加载围栏
+      // 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'
+      // )
+
+      // wall.setStyle({
+      //     material: new global.DC.WallTrailMaterialProperty({
+      //         color: global.DC.Namespace.Cesium.Color.fromBytes(
+      //             33, 150, 243,
+      //             200
+      //         ),
+      //         speed: 8
+      //     })
+      // })
+      // layer.addOverlay(wall)
+
+      // 判断是否支持图像渲染像素化处理
+      if (
+        global.DC.Namespace.Cesium.FeatureDetection.supportsImageRenderingPixelated()
+      ) {
+        global.viewer.setOptions({
+          resolutionScale: window.devicePixelRatio,
+        })
+      }
+
+      // let terrain = global.DC.TerrainFactory.createUrlTerrain({
+      //     url: 'http://data.marsgis.cn/terrain'
+      // })
+      // global.viewer.addTerrain(terrain)
+
+      // 内网
+      that.switchImg()
+      // that.highOrLightChange('light')
+
+      // 地形数据添加
+      // 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({
+        // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+        // fromDegrees()方法,将经纬度和高程转换为世界坐标
+        destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+          117.951478782,
+          28.447896798,
+          20000
+        ),
+        orientation: {
+          // 指向
+          heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+          // 视角
+          pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+          roll: 0.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
+      })
+
+      let MAN_F_H = positions.map((item) => {
+        item[2] = 80
+        return item
+      })
+
+      // 原生Cesium加载多边体
+      // 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),
+      //     }
+      // })
+
+      // console.log(floorPositions)
+
+      // let floorPositions = MIN_F_H.concat(MAN_F_H)
+
+      // let floorPolygonlayer = new global.DC.VectorLayer('floorPolygonlayer')
+      // global.viewer.addLayer(floorPolygonlayer)
+
+      // let floorPolygon = new global.DC.Polygon(
+      //     floorPositions
+      // )
+
+      // floorPolygon.setStyle({
+      //     height: 70,
+      //     extrudedHeight: 80,
+      //     material: global.DC.Color.GREEN.withAlpha(0.5),
+      //     heightReference: 2,
+      //     perPositionHeight: true
+      // })
+
+      // floorPolygonlayer.addOverlay(floorPolygon)
+
+      // global.viewer.flyTo(floorPolygonlayer)
+
+      // global.viewer.flyTo(sqTileset)
+
+      global.viewer.use(new global.DC.Measure())
+
+      // global.viewer.locationBar.enable = true
+      // 缩放
+      global.viewer.zoomController.enable = true
+      // 比例尺
+      // 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)
+
+    // global.viewer.scene.morphTo2D(1)
+
+    // 清除控制台
+    console.clear()
+
+    function isEleFullScreen () {
+      const fullScreenEle =
+        document.fullscreenElement ||
+        document.msFullscreenElement ||
+        document.mozFullScreenElement ||
+        document.webkitFullscreenElement
+      if (fullScreenEle === null) {
+        that.isFullscreen = false
+        return false
+      } else {
+        return true
+      }
+    }
+
+    window.onresize = function () {
+      console.log(isEleFullScreen())
+    }
+
+    // 注册事件
+
+    // 使用示例
+    // this.$EventBus.$emit('mapAddLayer', {
+    //     layerName: 'housingEstateLayer',
+    //     type: 'VectorLayer'
+    // })
+
+    this.$EventBus.$on("mapAddLayer", (params) => {
+      that.mapAddLayer(params.layerName, params.type)
+    })
+
+    this.$EventBus.$on("mapRemoveLayer", (params) => {
+      that.mapRemoveLayer(params.layerName, params.type)
+    })
+
+    this.$EventBus.$on("mapRemoveSiteLayer", (params) => {
+      that.mapRemoveSiteLayer(params.layerName, params.siteId)
+    })
+
+    this.$EventBus.$on("mapRemovePolygonLayer", (params) => {
+      that.mapRemovePolygonLayer(
+        params.layerName,
+        params.polygonName,
+        params.type
+      )
+    })
+
+    this.$EventBus.$on("mapRemovePolygon", (params) => {
+      that.mapRemovePolygon(params.layerName, params.overlay, params.type)
+    })
+
+    this.$EventBus.$on("mapClearLayer", (params) => {
+      that.mapClearLayer(params.layerName, params.type)
+    })
+
+    this.$EventBus.$on("layerPointAdd", (params) => {
+      // eslint-disable-next-line no-unused-vars
+      that.layerPointAdd(
+        params.layerName,
+        params.type,
+        params.layerType,
+        params.params,
+        params.distanceDisplayCondition,
+        params.incident,
+        params.mouseOverIncident,
+        params.mouseOutIncident,
+        params.pointMouseMove
+      )
+    })
+
+    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.mouseOverIncident,
+          params.mouseOutIncident,
+          params.setStyle
+        )
+      } else {
+        that.layerPolygonAdd(
+          params.layerName,
+          params.positions,
+          params.material,
+          params.distanceDisplayCondition,
+          "polygon",
+          params.params,
+          params.incident,
+          params.mouseOverIncident,
+          params.mouseOutIncident,
+          params.setStyle
+        )
+      }
+    })
+
+    this.$EventBus.$on("layerPolygonArrowsAdd", (params) => {
+      that.layerPolygonArrowsAdd(
+        params.layerName,
+        params.positions,
+        params.material,
+        params.polygonName,
+        params.params,
+        params.incident,
+        params.mouseOverIncident,
+        params.mouseOutIncident,
+        params.setStyle
+      )
+    })
+
+    this.$EventBus.$on("layerPolylineAdd", (params) => {
+      that.layerPolylineAdd(
+        params.layerName,
+        params.positions,
+        params.material,
+        params.width,
+        params.params,
+        params.incident
+      )
+    })
+
+    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) => {
+      that.getOverLayerID(params.layerName, params.ids, params.cb)
+    })
+
+    this.$EventBus.$on("layerShow", (params) => {
+      that.layerShow(params.layerName, params.flag)
+    })
+
+    this.$EventBus.$on("toPosition", (params) => {
+      that.toPosition(
+        params.siteJd,
+        params.siteWd,
+        params.siteGd,
+        params.siteHeading,
+        params.sitePitch,
+        params.siteRoll,
+        params.time
+      )
+    })
+
+    this.$EventBus.$on("highOrLightChange", (type, status) => {
+      // eslint-disable-next-line no-unused-vars
+      that.highOrLightChange(type, status)
+    })
+
+    this.$EventBus.$on("addMxTileset", (params) => {
+      // eslint-disable-next-line no-unused-vars
+      that.addMxTileset(params.titlesetName, params.titlesetUrl, params)
+    })
+
+    this.$EventBus.$on("closeMxTileset", () => {
+      // eslint-disable-next-line no-unused-vars
+      that.closeMxTileset()
+    })
+
+    this.$EventBus.$on("tilesetLayerFlag", (type, cb) => {
+      // eslint-disable-next-line no-unused-vars
+      that.tilesetLayerFlag(type, cb)
+    })
+
+    this.$EventBus.$on("removeMxTileset", (params) => {
+      // eslint-disable-next-line no-unused-vars
+      that.removeMxTileset(params.titlesetName)
+    })
+
+    this.$EventBus.$on("flytoLayer", (params) => {
+      that.flytoLayer(params.polygonName, params.duration)
+    })
+
+    this.$EventBus.$on("showThreeDimensions", (params) => {
+      that.showThreeDimensions(
+        params.positions,
+        params.minHeight,
+        params.maxHeight
+      )
+    })
+
+    this.$EventBus.$on("switchThreeDimensions", (params) => {
+      that.switchThreeDimensions(params)
+    })
+
+    this.$EventBus.$on("clearHouse3D", () => {
+      that.clearHouse3D()
+    })
+
+    this.$EventBus.$on("registerMxClick", (event) => {
+      that.registerMxClick(event)
+    })
+
+    this.$EventBus.$on("unbindMxClick", (event) => {
+      that.unbindMxClick(event)
+    })
+
+    // 重写定位方法
+    const homeCenter = [117.99311892441567, 28.46938164123123]
+    this.$nextTick(() => {
+      // 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 = '初始化位置'
+    })
+  },
+
+  methods: {
+    // 获取当前地图中心的经纬度
+    getSceneCenterPosition (viewer) {
+      let centerResult = viewer.camera.pickEllipsoid(
+        new global.DC.Namespace.Cesium.Cartesian2(
+          viewer.canvas.clientWidth / 2,
+          viewer.canvas.clientHeight / 2
+        )
+      )
+      let curPosition =
+        global.DC.Namespace.Cesium.Ellipsoid.WGS84.cartesianToCartographic(
+          centerResult
+        )
+      let curLongitude = (curPosition.longitude * 180) / Math.PI
+      let curLatitude = (curPosition.latitude * 180) / Math.PI
+      return {
+        lon: curLongitude,
+        lat: curLatitude,
+      }
+    },
+    compassBtnClick () {
+      const degrees = global.viewer.camera.heading * (180 / Math.PI)
+      if (degrees == 360) {
+        return
+      }
+      const position = global.DC.Transform.transformCartesianToWGS84(
+        global.viewer.camera.position
+      )
+
+      global.viewer.camera.flyTo({
+        // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+        // fromDegrees()方法,将经纬度和高程转换为世界坐标
+        destination: global.DC.Transform.transformWGS84ToCartesian(
+          new global.DC.Position(
+            position.lng,
+            position.lat,
+            position.alt + 1000
+          )
+        ),
+
+        orientation: {
+          // 指向
+          heading: global.DC.Namespace.Cesium.Math.toRadians(0, 0),
+          // 视角
+          pitch: global.viewer.camera.pitch,
+          roll: global.viewer.camera.roll,
+        },
+        duration: 3,
+      })
+    },
+
+    overLookClick () {
+      const degrees = global.viewer.camera.pitch * (180 / Math.PI)
+
+      if (degrees == -90) {
+        return
+      }
+
+      const position = this.getSceneCenterPosition(global.viewer)
+
+      global.viewer.camera.flyTo({
+        // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
+        // fromDegrees()方法,将经纬度和高程转换为世界坐标
+        destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
+          position.lon,
+          position.lat,
+          global.viewer.camera.positionCartographic.height * 1.5
+        ),
+        orientation: {
+          // 指向
+          heading: global.viewer.camera.heading,
+          // 视角
+          pitch: global.DC.Namespace.Cesium.Math.toRadians(-90),
+          roll: global.viewer.camera.roll,
+        },
+        duration: 3,
+      })
+    },
+
+    angleChange (e) {
+      if (e) {
+        global.viewer.camera.flyTo({
+          destination: global.viewer.camera.position,
+          orientation: {
+            heading: global.viewer.camera.heading,
+            pitch: -45,
+            roll: global.viewer.camera.roll,
+          },
+          duration: 0.0,
+        })
+
+        global.viewer.setPitchRange(-90, -45)
+      } else {
+        global.viewer.setPitchRange(-90, 0)
+      }
+    },
+
+    closeMxTileset () {
+      window.TILESET_LABEL.forEach((item) => {
+        this.removeMxTileset(`sdTilesetLayer${item.name}`)
+      })
+
+      this.tilesetLayerType = ""
+    },
+
+    /**
+     * @description: 高精度模型和轻量模型切换
+     * @param {*} type
+     * @return {*}
+     */
+    highOrLightChange (type, status = "") {
+      this.$EventBus.$emit("showHouseingTileset", {
+        type: "remove",
+      })
+
+      window.TILESET_LABEL.forEach((item) => {
+        this.removeMxTileset(`sdTilesetLayer${item.name}`)
+      })
+
+      // this.addMxTileset('sdTilesetLayer', `${tile3DUrl}/sf3d/361102/model/wanda/tileset.json`)
+      // this.addMxTileset('sdTilesetLayer02', `https://tuan-gis.sit.fengtu.com.cn/361102/wanda/tileset.json`)
+      // this.addMxTileset('sdTilesetLayer', `/mx/01/tileset.json`)
+
+      if (this.tilesetLayerType == type && status == "") {
+        this.tilesetLayerType = ""
+      } else {
+        this.tilesetLayerType = type
+
+        type == "light"
+          ? window.TILESET_LABEL.forEach((item) => {
+            this.addMxTileset(
+              `sdTilesetLayer${item.name}`,
+              `${tile3DUrl}/sf3d/361102/model/all/${item.name}/tileset.json`,
+              item
+            )
+          })
+          : window.TILESET_LABEL.forEach((item) => {
+            this.addMxTileset(
+              `sdTilesetLayer${item.name}`,
+              `${tile3DUrl}/sf3d/361102/model/all1/${item.name}/tileset.json`,
+              item
+            )
+          })
+
+        if (this.$route.path == "/layout/house") {
+          this.$EventBus.$emit("showHouseingTileset", {
+            type: "add",
+          })
+        }
+      }
+    },
+
+    // 模型的点击事件
+    tilesetClick (e) {
+      if (this.$route.path != "/layout/house") {
+        this.$router.push({
+          path: "/layout/house",
+          query: { searchName: "xxx小区" },
+        })
+      }
+    },
+
+    switchImg () {
+      // 天地图 影像
+      this.imgtype = 0
+      baseLayers.length &&
+        baseLayers.forEach((item) => {
+          item && global.viewer.imageryLayers.remove(item)
+        })
+
+      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: `/qp/{AZ}/{y}/{x}.png`,
+          customTags: {
+            AZ (imageryProvider, x, y, level) {
+              return "Z" + level
+            },
+          },
+          minimumLevel: 0,
+          maximumLevel: 25,
+        })
+      )
+
+      qp.contrast = 0.8
+
+      baseLayers.push(qp)
+
+      window.YX_LAYER_CONFIG.forEach((item) => {
+        let rectangle = {}
+
+        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)
+      })
+
+      if (window.ADD_NEW_YX_LAYER_CONFIG.length > 0) {
+        window.ADD_NEW_YX_LAYER_CONFIG.forEach((item) => {
+          const layer = global.viewer.imageryLayers.addImageryProvider(
+            new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
+              url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/addlayer/${item.name}/{AZ}/{y}/{x}.png`,
+              customTags: {
+                AZ (imageryProvider, x, y, level) {
+                  return "Z" + level
+                },
+              },
+              minimumLevel: 0,
+              maximumLevel: 25,
+            })
+          )
+
+          layer.contrast = 0.8
+
+          baseLayers.push(layer)
+        })
+      }
+
+      // baseLayers = global.viewer.imageryLayers.addImageryProvider(
+      //     new global.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
+      //         url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/geoserver/gwc/service/wmts`,
+      //         layer: "test",
+      //         style: "",
+      //         format: "image/png",
+      //         tileMatrixSetID: "EPSG:4490_test",
+      //         tileMatrixLabels: ysLabels,
+      //         tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
+      //     })
+      // )
+    },
+
+    switchElec () {
+      // 天地图 矢量
+      this.imgtype = 1
+
+      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)
+    },
+
+    /**
+     * @description: 全屏控制
+     * @return {*} 无返回值
+     */
+    fullscreenchange () {
+      // 最新写法
+      const isFullScreen = document.fullscreenElement
+      if (isFullScreen) {
+        if (document.exitFullscreen) {
+          document.exitFullscreen()
+        } else if (document.msExitFullscreen) {
+          document.msExitFullscreen()
+        } else if (document.mozCancelFullScreen) {
+          document.mozCancelFullScreen()
+        } else if (document.webkitCancelFullScreen) {
+          document.webkitCancelFullScreen()
+        }
+        this.isFullscreen = false
+      } else {
+        var fullscreen = document.body // 需要全屏的元素
+        if (fullscreen.requestFullscreen) {
+          fullscreen.requestFullscreen()
+        } else if (fullscreen.mozRequestFullScreen) {
+          fullscreen.mozRequestFullScreen()
+        } else if (fullscreen.webkitRequestFullscreen) {
+          fullscreen.webkitRequestFullscreen()
+        } else if (fullscreen.msRequestFullscreen) {
+          fullscreen.msRequestFullscreen()
+        }
+        this.isFullscreen = true
+      }
+    },
+
+    // 切换首页显示隐藏
+    switchShowHomeContent () {
+      this.$store.commit(
+        "SET_ISSHOWHOMECONTENT",
+        !this.$store.state.popupParams.isShowHomeContent
+      )
+      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(".compass-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(".compass-btn").classList.remove("homebottom")
+        document
+          .querySelector(".image-switch-icon-btn")
+          .classList.remove("iconbottom")
+      }
+    },
+
+    /**
+     * 在图层中添加实体(点)
+     * @param {*} item 图标
+     * @param {*} url 图标地址
+     */
+    addSiteEntity (item, url) {
+      const billboard = new global.DC.Billboard(
+        new global.DC.Position(Number(item.lng), Number(item.lat)),
+        url
+      )
+      billboard.size = [20, 28]
+      billboard.attrParams = item
+      siteEntitylayers.addOverlay(billboard)
+    },
+
+    /**
+     * 添加图层
+     * @param {*} layerName 图层名称
+     * @param {*} type 图层类型
+     */
+    mapAddLayer (layerName, type, ClusterLayerType) {
+      if (!layersObjcect[layerName]) {
+        this.mapRemoveLayer(layerName, type)
+        layersObjcect[layerName] = null
+      }
+
+      if (type == "VectorLayer") {
+        layersObjcect[layerName] = new global.DC.VectorLayer(layerName)
+      } else if (type == "ClusterLayer") {
+        layersObjcect[layerName] = new global.DC.ClusterLayer(layerName, {
+          pixelRange: 40,
+          style: ClusterLayerType,
+        })
+      } else if (type == "HeatLayer") {
+        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])
+    },
+
+    /**
+     * 删除图层
+     * @param {*} layerName 图层名称
+     * @param {*} type 图层类型
+     */
+    mapRemoveLayer (layerName, type) {
+      if (
+        type == "VectorLayer" ||
+        type == "ClusterLayer" ||
+        type == "HeatLayer"
+      ) {
+        if (layersObjcect[layerName] && layersObjcect[layerName] != null) {
+          layersObjcect[layerName].remove()
+          layersObjcect[layerName] = null
+        }
+      }
+    },
+
+    /**
+     * 删除图层指定面
+     * @param {*} layerName 图层名称
+     * @param {*} polygonName 面名称
+     * @param {*} type 图层类型
+     */
+    mapRemovePolygonLayer (layerName, polygonName, type) {
+      if (
+        type == "VectorLayer" ||
+        type == "ClusterLayer" ||
+        type == "HeatLayer"
+      ) {
+        if (
+          layersObjcect[layerName] &&
+          layersObjcect[layerName] != null &&
+          polygonObj[polygonName] &&
+          polygonObj[polygonName] != null
+        ) {
+          layersObjcect[layerName].removeOverlay(polygonObj[polygonName])
+        }
+      }
+    },
+
+    mapRemovePolygon (layerName, overlay, type) {
+      if (type == "VectorLayer") {
+        if (layersObjcect[layerName] && layersObjcect[layerName] != null) {
+          layersObjcect[layerName].removeOverlay(overlay)
+        }
+      }
+    },
+
+    /**
+     * 清空图层
+     * @param {*} layerName 图层名称
+     * @param {*} type 图层类型
+     */
+    mapClearLayer (layerName, type) {
+      if (
+        type == "VectorLayer" ||
+        type == "ClusterLayer" ||
+        type == "HeatLayer"
+      ) {
+        if (layersObjcect[layerName] && layersObjcect[layerName] != null)
+          layersObjcect[layerName].clear()
+      }
+    },
+
+    /**
+     * 图层点添加
+     * @param {*} layerName 图层名称
+     * @param {*} type 添加的点位类型
+     * @param {*} params 添加的点位参数(内容、详情)
+     * @param {*} incident 添加的点位事件
+     */
+
+    layerPointAdd (
+      layerName,
+      type,
+      layerType = "VectorLayer",
+      params,
+      distanceDisplayCondition = {
+        near: 0, //最近距离
+        far: Number.MAX_VALUE, //最远距离
+      },
+      incident = (e) => { },
+      mouseOverIncident = (e) => { },
+      mouseOutIncident = (e) => { },
+      pointMouseMove = (e) => { }
+    ) {
+      if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
+        this.mapAddLayer(layerName, layerType, params.ClusterLayerType)
+      }
+
+      let pointElement
+      let labelElement
+
+      if (type == "billboard") {
+        // pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.url)
+        pointElement = new global.DC.Billboard(
+          new global.DC.Position(Number(params.lng), Number(params.lat), 0),
+          params.url
+        )
+        pointElement.setStyle(params.setStyle)
+        pointElement.size = params.size || [32, 32]
+        pointElement.style = "clustering"
+        pointElement.attrParams = params
+        layersObjcect[layerName].addOverlay(pointElement)
+        pointElement.on(global.DC.MouseEventType.CLICK, incident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_MOVE, pointMouseMove)
+      } else if (type == "label") {
+        // labelElement = new global.DC.Label(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.text)
+        labelElement = new global.DC.Label(
+          new global.DC.Position(Number(params.lng), Number(params.lat), 0),
+          params.text
+        )
+        let fontColor =
+          "fontColor" in params ? params.fontColor : global.DC.Color.CRIMSON
+        let style =
+          "fontColor" in params
+            ? global.DC.Namespace.Cesium.LabelStyle.FILL
+            : global.DC.Namespace.Cesium.LabelStyle.FILL_AND_OUTLINE
+        labelElement.setStyle({
+          style: style,
+          fillColor: fontColor,
+          outlineColor: global.DC.Color.WHITE, // 边框颜色
+          outlineWidth: params.outW || 4, // 边框大小,
+          font: "16px sans-serif",
+          pixelOffset: { x: 0, y: -30 },
+          distanceDisplayCondition: distanceDisplayCondition,
+        })
+        labelElement.attrParams = params
+        layersObjcect[layerName].addOverlay(labelElement)
+        labelElement.on(global.DC.MouseEventType.CLICK, incident)
+      } else if (type == "billboardOrLabel") {
+        let allSite = layersObjcect[layerName].getOverlays()
+
+        let flag = allSite.filter((item) => item.attrParams.id == params.id)
+
+        if (flag == true) {
+          return
+        }
+
+        // pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.url)
+        pointElement = new global.DC.Billboard(
+          new global.DC.Position(Number(params.lng), Number(params.lat), 0),
+          params.url
+        )
+        pointElement.setStyle(params.setStyle)
+        pointElement.size = params.size || [32, 32]
+        pointElement.style = "clustering"
+        pointElement.attrParams = params
+        layersObjcect[layerName].addOverlay(pointElement)
+        pointElement.on(global.DC.MouseEventType.CLICK, incident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_MOVE, pointMouseMove)
+
+        // labelElement = new global.DC.Label(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.text)
+        labelElement = new global.DC.Label(
+          new global.DC.Position(Number(params.lng), Number(params.lat), 0),
+          String(params.text)
+        )
+        let fontColor =
+          "fontColor" in params ? params.fontColor : global.DC.Color.CRIMSON
+        let style =
+          "fontColor" in params
+            ? global.DC.Namespace.Cesium.LabelStyle.FILL
+            : global.DC.Namespace.Cesium.LabelStyle.FILL_AND_OUTLINE
+        labelElement.setStyle({
+          style: style,
+          fillColor: fontColor,
+          outlineColor: global.DC.Color.WHITE, // 边框颜色
+          outlineWidth: params.outW || 4, // 边框大小,
+          font: "16px sans-serif",
+          pixelOffset: { x: 0, y: -30 },
+          distanceDisplayCondition: distanceDisplayCondition,
+          ...params.setStyle,
+        })
+        labelElement.attrParams = params
+        layersObjcect[layerName].addOverlay(labelElement)
+        labelElement.on(global.DC.MouseEventType.CLICK, incident)
+      } else if (type == "HeatPoint") {
+        layersObjcect[layerName].setPositions(params.positions)
+      } else if (type == "newBillboard") {
+        // pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.url)
+        pointElement = new global.DC.Billboard(
+          new global.DC.Position(Number(params.lng), Number(params.lat), 0),
+          params.url
+        )
+        pointElement.setStyle(params.setStyle)
+        pointElement.size = params.size || [32, 32]
+        pointElement.style = "clustering"
+        pointElement.attrParams = params
+        layersObjcect[layerName].addOverlay(pointElement)
+        pointElement.on(global.DC.MouseEventType.CLICK, incident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_OVER, mouseOverIncident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_OUT, mouseOutIncident)
+        pointElement.on(global.DC.MouseEventType.MOUSE_MOVE, pointMouseMove)
+      }
+    },
+
+    /**
+     * 删除图层指定点
+     * @param {*} layerName 图层名称
+     * @param {*} siteId 点ID
+     */
+    mapRemoveSiteLayer (layerName, siteId) {
+      if (layersObjcect[layerName]) {
+        let allSite = layersObjcect[layerName].getOverlays()
+
+        allSite
+          .filter((item) => item.attrParams.id == siteId)
+          .forEach((item) => layersObjcect[layerName].removeOverlay(item))
+      }
+    },
+
+    /**
+     * 图层面添加
+     * @param {*} layerName 图层名称
+     * @param {*} positions 图层位置数据
+     * @param {*} material 颜色
+     * @param {*} distanceDisplayCondition 可见距离
+     */
+    layerPolygonAdd (
+      layerName,
+      positions,
+      material,
+      distanceDisplayCondition,
+      polygonName,
+      params,
+      incident = (e) => { },
+      mouseOverIncident = (e) => { },
+      mouseOutIncident = (e) => { },
+      setStyle = {}
+    ) {
+      if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
+        this.mapAddLayer(layerName, "VectorLayer")
+
+        layersObjcect[layerName].allowDrillPicking = true
+      }
+      // let polygon = new global.DC.Polygon(positions)
+      // let polygonObj = {}//要在全局定义
+      polygonObj[polygonName] = new global.DC.Polygon(positions)
+      // polygon.setStyle({
+      polygonObj[polygonName].setStyle({
+        material: material,
+        distanceDisplayCondition: distanceDisplayCondition,
+        perPositionHeight: true,
+        ...setStyle,
+      })
+      // 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])
+    },
+
+    /**
+     * 图层面添加
+     * @param {*} layerName 图层名称
+     * @param {*} positions 图层位置数据
+     * @param {*} material 颜色
+     * @param {*} distanceDisplayCondition 可见距离
+     */
+    layerPolygonArrowsAdd (
+      layerName,
+      positions,
+      material,
+      polygonName = "",
+      params,
+      incident = (e) => { },
+      mouseOverIncident = (e) => { },
+      mouseOutIncident = (e) => { },
+      setStyle = {}
+    ) {
+      if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
+        this.mapAddLayer(layerName, "VectorLayer")
+
+        layersObjcect[layerName].allowDrillPicking = true
+      }
+
+      if (polygonName == "") {
+        polygonName = layerName + params.id
+      }
+
+      polygonObj[polygonName] = new global.DC.Polyline(positions)
+
+      let positionData = positions
+        .split(";")
+        .map((item) => {
+          return [Number(item.split(",")[0]), Number(item.split(",")[1])]
+        })
+        .filter((item) => {
+          return !item.some((it) => it == 0)
+        })
+
+      console.log(params.width, 15)
+
+      polygonObj[polygonName].setStyle({
+        width: params.width,
+        material: new global.DC.PolylineImageTrailMaterialProperty({
+          color: new global.DC.Color(255, 255, 255),
+          speed: 20,
+          image: "/images/arrows.png",
+          repeat: {
+            x: getLineSpeed(positionData) / 2,
+            y: 1,
+          },
+        }),
+        distanceDisplayCondition: {
+          near: 0, //最近距离
+          far: 2000, //最远距离
+        },
+        clampToGround: false,
+        ...setStyle,
+      })
+
+      polygonObj[polygonName].attrParams = params
+      layersObjcect[layerName].addOverlay(polygonObj[polygonName])
+    },
+
+    /**
+     * 图层线添加
+     * @param {*} layerName 图层名称
+     * @param {*} positions 图层位置数据
+     * @param {*} material 颜色
+     * @param {*} width 宽度
+     */
+    layerPolylineAdd (
+      layerName,
+      positions,
+      material,
+      width,
+      params,
+      incident = (e) => { }
+    ) {
+      if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
+        this.mapAddLayer(layerName, "VectorLayer")
+
+        layersObjcect[layerName].allowDrillPicking = true
+      }
+
+      let polyline = new global.DC.Polyline(positions)
+
+      polyline.setStyle({
+        width: width,
+        material: material,
+        clampToGround: false,
+      })
+      polyline.attrParams = params
+      polyline.on(global.DC.MouseEventType.CLICK, incident)
+
+      layersObjcect[layerName].addOverlay(polyline)
+    },
+
+    layerWallAdd (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.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,
+        }),
+      })
+      layersObjcect[layerName].addOverlay(wall)
+    },
+
+    /**
+     * @description: 通过ID获取图层
+     * @return {*}
+     */
+    getOverLayerID (layerName, ids = [], cb) {
+      const data = ids.reduce((pre, cur) => {
+        if (
+          layersObjcect[layerName].getOverlay(cur.overlayId) &&
+          layersObjcect[layerName].getOverlay(cur.overlayId) != undefined &&
+          layersObjcect[layerName].getOverlay(cur.overlayId) != null &&
+          layersObjcect[layerName].getOverlay(cur.overlayId) != ""
+        ) {
+          pre.push(
+            layersObjcect[layerName].getOverlay(cur.overlayId).attrParams
+          )
+        } else {
+          layersObjcect[layerName].eachOverlay((item) => {
+            if (item.overlayId == cur.overlayId) pre.push(item.attrParams)
+          })
+        }
+
+        return pre
+      }, [])
+
+      cb(data)
+    },
+
+    /**
+     * 图层显示隐藏
+     * @param {*} layerName 图层名称
+     * @param {*} flag 显示隐藏
+     */
+    layerShow (layerName, flag) {
+      if (layersObjcect[layerName]) layersObjcect[layerName].show = flag
+    },
+
+    /**
+     * 飞到指定位置
+     * @param {*} siteJd 经度
+     * @param {*} siteWd 纬度
+     * @param {*} siteGd 高度,默认0
+     * @param {*} siteHeading 偏航角度,默认0
+     * @param {*} sitePitch 俯仰角度,默认0
+     * @param {*} siteRoll 翻转角度,默认0
+     * @param {*} time 飞行时间,默认3秒
+     */
+    toPosition (
+      siteJd,
+      siteWd,
+      siteGd = 2000,
+      siteHeading = 0,
+      sitePitch = -90,
+      siteRoll = 0,
+      time = 3
+    ) {
+      global.viewer.flyToPosition(
+        new global.DC.Position(
+          Number(siteJd),
+          Number(siteWd),
+          Number(siteGd),
+          Number(siteHeading),
+          Number(sitePitch),
+          Number(siteRoll)
+        ),
+        function () { },
+        time
+      )
+    },
+    // sdTilesetLayer
+
+    /**
+     * 飞到指定范围
+     * @param {*} polygonName 范围名称
+     * @param {*} duration 时间
+     */
+    flytoLayer (polygonName, duration = 3) {
+      global.viewer.flyTo(polygonObj[polygonName], duration)
+    },
+
+    /**
+     * 添加模型
+     * @param {*} titlesetName 图层名称
+     * @param {*} titlesetUrl 模型地址
+     * @param {*} incident 模型点击事件
+     */
+    addMxTileset (titlesetName, titlesetUrl, conf) {
+      if (!tilesetObject[titlesetName]) tilesetObject[titlesetName] = null
+
+      tilesetObject[titlesetName] = new global.DC.Tileset(titlesetUrl, {
+        luminanceAtZenith: 0.4,
+        // cullWithChildrenBounds: false,
+        // cullRequestsWhileMoving: false,
+        // skipLevelOfDetail: false,
+        maximumScreenSpaceError: conf.maximumScreenSpaceError || 16,
+        shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED,
+      })
+
+      // 地形数据添加
+      tilesetObject[titlesetName].setHeight(-73)
+
+      tilesetLayer.addOverlay(tilesetObject[titlesetName])
+
+      // global.viewer.flyTo(tilesetObject[titlesetName])removeMxTileset
+    },
+
+    tilesetLayerFlag (type, cb) {
+      if (type == 1) {
+        if (this.tilesetLayerType != "") {
+          this.$message({
+            message: "请关闭模型再开始绘制",
+            type: "warning",
+          })
+
+          cb(false)
+          return
+        }
+      } else {
+        if (this.tilesetLayerType == "") {
+          this.$message({
+            message: "请打开模型再开始绘制",
+            type: "warning",
+          })
+
+          cb(false)
+          return
+        }
+      }
+
+      cb(true)
+    },
+
+    /**
+     * 删除模型
+     * @param {*} titlesetName 图层名称
+     * @param {*} incident 模型点击事件
+     */
+    removeMxTileset (titlesetName) {
+      if (tilesetObject[titlesetName] && tilesetObject[titlesetName] != null) {
+        tilesetLayer.removeOverlay(tilesetObject[titlesetName])
+        tilesetObject[titlesetName] = null
+      }
+    },
+
+    /**
+     * 建筑高亮显示
+     * @param {*} positions 建筑范围坐标
+     * @param {*}
+     */
+    showThreeDimensions (positions, minHeight, maxHeight) {
+      console.log("showThreeDimensions--map")
+      if (curPolygon != null) {
+        global.viewer.scene.primitives.remove(curPolygon)
+        curPolygon = null
+      }
+
+      let housePositions = JSON.parse(positions).coordinates[0]
+
+      let floorPositions = housePositions.reduce((prev, curr) => {
+        prev.push(curr[0])
+        prev.push(curr[1])
+
+        return prev
+      }, [])
+
+      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 - 73, //分层顶部海拔
+            height: minHeight - 73, //分层底部海拔
+          }),
+
+          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
+            ),
+          },
+        }),
+
+        classificationType:
+          global.DC.Namespace.Cesium.ClassificationType.CESIUM_3D_TILE,
+      })
+
+      global.viewer.scene.primitives.add(curPolygon)
+    },
+
+    // 建筑高亮切换显示隐藏
+    switchThreeDimensions (boolean) {
+      if (!curPolygon) return
+      curPolygon.show = boolean
+    },
+
+    // 清除建筑3D
+    clearHouse3D () {
+      global.viewer.scene.primitives.remove(curPolygon)
+
+      curPolygon = null
+    },
+
+    registerMxClick (event) {
+      this.unbindMxClick()
+      window.TILESET_LABEL.forEach((item) => {
+        if (
+          tilesetObject[`sdTilesetLayer${item.name}`] &&
+          tilesetObject[`sdTilesetLayer${item.name}`] != null
+        ) {
+          tilesetObject[`sdTilesetLayer${item.name}`].on(
+            global.DC.MouseEventType.CLICK,
+            event
+          )
+        }
+      })
+    },
+
+    unbindMxClick (event) {
+      window.TILESET_LABEL.forEach((item) => {
+        if (
+          tilesetObject[`sdTilesetLayer${item.name}`] &&
+          tilesetObject[`sdTilesetLayer${item.name}`] != null
+        ) {
+          tilesetObject[`sdTilesetLayer${item.name}`].off(
+            global.DC.MouseEventType.CLICK,
+            event
+          )
+        }
+      })
+    },
+  },
+
+  destroyed () {
+    this.$EventBus.$off("mapAddLayer")
+    this.$EventBus.$off("mapRemoveLayer")
+    this.$EventBus.$off("mapRemovePolygonLayer")
+    this.$EventBus.$off("mapRemoveSiteLayer")
+    this.$EventBus.$off("mapRemovePolygon")
+    this.$EventBus.$off("mapClearLayer")
+    this.$EventBus.$off("layerPointAdd")
+    this.$EventBus.$off("layerPolygonAdd")
+    this.$EventBus.$off("layerPolygonArrowsAdd")
+    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>
 
 <style lang="scss" scope>
 .viewer-box {
-    position: relative;
-    width: 100%;
-    height: 100%;
+  position: relative;
+  width: 100%;
+  height: 100%;
 }
 </style>

--
Gitblit v1.9.3