shuishen
2024-08-21 76876910826fe7baf059e25e67d0f4e955d1fa41
倾斜数据加载处理
1 files modified
1525 ■■■■■ changed files
src/components/map/index.vue 1525 ●●●●● patch | view | raw | blame | history
src/components/map/index.vue
@@ -2,15 +2,22 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-06-21 16:37:19
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-07-19 15:36:09
 * @LastEditTime: 2024-08-21 21:38:56
 * @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>
@@ -19,53 +26,122 @@
        <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
        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
        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
        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
        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
        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 />
      <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="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
              class="close"
              @click.stop="showImgBtn = false"
            >
              <img
                src="/img/icon/close.png"
                alt
              />
                        </div>
                    </div>
                    <div class="content">
                        <div class="img" @click.stop="switchImg">
            <div
              class="img"
              @click.stop="switchImg"
            >
                            <span :class="{ on: imgtype == 0 }">影像</span>
                        </div>
                        <div class="elec" @click.stop="switchElec">
            <div
              class="elec"
              @click.stop="switchElec"
            >
                            <span :class="{ on: imgtype == 1 }">矢量</span>
                        </div>
                    </div>
@@ -73,17 +149,26 @@
                <div class="layer-change-box">
                    <div class="title">模型</div>
                    <div class="content">
                        <div class="img light" @click.stop="highOrLightChange('light')">
            <div
              class="img light"
              @click.stop="highOrLightChange('light')"
            >
                            <span :class="{ on: tilesetLayerType == 'light' }">轻量</span>
                        </div>
                        <div class="elec high" @click.stop="highOrLightChange('high')">
            <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>
          <el-checkbox
            v-model="angleCheck"
            @change="angleChange"
          ></el-checkbox>
                </div>
            </div>
        </div>
@@ -117,85 +202,98 @@
</template>
<script>
let tile3DUrl = ''
let tile3DUrl = "";
if (process.env.NODE_ENV == 'development') {
if (process.env.NODE_ENV == "development") {
    // 开发
    tile3DUrl = window.BASE_URL_CONFIG.VUE_APP_OUTER_NET_TILEURL
  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
let projectTerrain = null;
var siteEntitylayers = null
var siteEntitylayers = null;
let layersObjcect = {
    housingEstateLayer: null,
    patrolWagonLayer: null,
    handMachineLayer: null,
    monitoringLayer: null,
    panoramaLayer: null
}
let polygonObj = {}
  panoramaLayer: null,
};
let polygonObj = {};
let tilesetLayer = null
let tilesetLayer = null;
let baseLayers = []
let baseLayers = [];
let tilesetObject = {
    sdTilesetLayer: null
}
  sdTilesetLayer: null,
};
let curPolygon = 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 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,
    multipMapPopup,
    videoListPopup,
    mapSearchPopup,
    houseDeepDataPopup,
    hotelPopup,
    businessDataPopup,
    dialogDetailPopup,
    yToolTip,
    videoRowClickPopup,
  },
    data () {
        return {
@@ -203,7 +301,7 @@
            isFullscreen: false,
            dialogVisible: false,
            dialogTitle: "",
            searchInput: '',
      searchInput: "",
            loading: false,
            searchDetailsShow: false,
            videoExist: true,
@@ -211,48 +309,46 @@
            carTotal: 0,
            showImgBtn: false,
            imgtype: 0,
            tilesetLayerType: '',
      tilesetLayerType: "",
            angleCheck: true,
            compassBtnTranslate: 'rotate(0deg)'
        }
      compassBtnTranslate: "rotate(0deg)",
    };
    },
    computed: {
        ...mapGetters([
            'isShowHomeContentBtn'
        ]),
    ...mapGetters(["isShowHomeContentBtn"]),
    },
    mounted () {
        if (global.viewer != null) {
            global.viewer = null
      global.viewer = null;
        }
        const that = this
    const that = this;
        // 初始化地图
        function initViewer () {
            // new Viewer(new 地图)
            global.viewer = new global.DC.Viewer('viewer-container', {
      global.viewer = new global.DC.Viewer("viewer-container", {
                contextOptions: {
                    webgl: {
                        alpha: true,
                        stencil: true,
                        preserveDrawingBuffer: 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)"
            })
        var heading = global.viewer.scene.camera.heading;
        var x = -global.DC.Namespace.Cesium.Math.toDegrees(heading);
        that.compassBtnTranslate = "rotate(" + x + "deg)";
      });
            const curTools = createTools()
      const curTools = createTools();
            Object.keys(curTools).forEach(key => {
                curTools[key].install(global.viewer)
            })
      Object.keys(curTools).forEach((key) => {
        curTools[key].install(global.viewer);
      });
            // let curTilesetLayer = new global.DC.TilesetLayer('curTilesetLayer')
            // global.viewer.addLayer(curTilesetLayer)
@@ -263,34 +359,41 @@
            // curTileset.setHeight(0)
            // curTilesetLayer.addOverlay(curTileset)
            global.viewer.setPitchRange(-90, -45)
      global.viewer.setPitchRange(-90, -45);
            global.viewer.scene.globe.depthTestAgainstTerrain = false
      global.viewer.scene.globe.depthTestAgainstTerrain = false;
            // 去除logo
            let primitiveArr = global.viewer.scene.primitives._primitives
            global.viewer.scene.primitives.remove(primitiveArr[0])
      let primitiveArr = global.viewer.scene.primitives._primitives;
      global.viewer.scene.primitives.remove(primitiveArr[0]);
            // 已声明的图层添加到地图上
            siteEntitylayers = new global.DC.VectorLayer('siteEntitylayers')
            global.viewer.addLayer(siteEntitylayers)
      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)
      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)
      tilesetLayer = new global.DC.TilesetLayer("tilesetLayer");
      global.viewer.addLayer(tilesetLayer);
            // 加载围栏
            // let layer = new global.DC.VectorLayer('layer')
@@ -312,10 +415,12 @@
            // layer.addOverlay(wall)
            // 判断是否支持图像渲染像素化处理
            if (global.DC.Namespace.Cesium.FeatureDetection.supportsImageRenderingPixelated()) {
      if (
        global.DC.Namespace.Cesium.FeatureDetection.supportsImageRenderingPixelated()
      ) {
                global.viewer.setOptions({
                    resolutionScale: window.devicePixelRatio
                })
          resolutionScale: window.devicePixelRatio,
        });
            }
            // let terrain = global.DC.TerrainFactory.createUrlTerrain({
@@ -324,7 +429,7 @@
            // global.viewer.addTerrain(terrain)
            // 内网
            that.switchImg()
      that.switchImg();
            // 地形数据添加
            // that.addTerrain()
@@ -345,27 +450,40 @@
                // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                // fromDegrees()方法,将经纬度和高程转换为世界坐标
                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                    117.951478782, 28.447896798, 20000
          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
                }
            })
          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 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
            })
      let MAN_F_H = positions.map((item) => {
        item[2] = 80;
        return item;
      });
            // 原生Cesium加载多边体
            // let floorPositions = positions.reduce((prev, curr, index, arr) => {
@@ -385,7 +503,6 @@
            //         material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
            //     }
            // })
            // console.log(floorPositions)
@@ -412,11 +529,11 @@
            // global.viewer.flyTo(sqTileset)
            global.viewer.use(new global.DC.Measure())
      global.viewer.use(new global.DC.Measure());
            // global.viewer.locationBar.enable = true
            // 缩放
            global.viewer.zoomController.enable = true
      global.viewer.zoomController.enable = true;
            // 比例尺
            // global.viewer.distanceLegend.enable = true
@@ -427,33 +544,30 @@
            // })
        }
        global.DC.ready(initViewer)
    global.DC.ready(initViewer);
        // global.viewer.scene.morphTo2D(1)
        // 清除控制台
        console.clear()
    console.clear();
        function isEleFullScreen () {
            const fullScreenEle =
                document.fullscreenElement ||
                document.msFullscreenElement ||
                document.mozFullScreenElement ||
                document.webkitFullscreenElement
        document.webkitFullscreenElement;
            if (fullScreenEle === null) {
                that.isFullscreen = false
                return false
        that.isFullscreen = false;
        return false;
            } else {
                return true
        return true;
            }
        }
        window.onresize = function () {
            console.log(isEleFullScreen())
        }
      console.log(isEleFullScreen());
    };
        // 注册事件
@@ -463,125 +577,187 @@
        //     type: 'VectorLayer'
        // })
    this.$EventBus.$on("mapAddLayer", (params) => {
      that.mapAddLayer(params.layerName, params.type);
    });
        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('mapRemoveLayer', (params) => {
            that.mapRemoveLayer(params.layerName, params.type)
        })
    this.$EventBus.$on("mapRemoveSiteLayer", (params) => {
      that.mapRemoveSiteLayer(params.layerName, params.siteId);
    });
        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('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('mapRemovePolygon', (params) => {
            that.mapRemovePolygon(params.layerName, params.overlay, params.type)
        })
    this.$EventBus.$on("mapClearLayer", (params) => {
      that.mapClearLayer(params.layerName, params.type);
    });
        this.$EventBus.$on('mapClearLayer', (params) => {
            that.mapClearLayer(params.layerName, params.type)
        })
        this.$EventBus.$on('layerPointAdd', (params) => {
    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)
        })
      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)
    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)
        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("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("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("layerWallAdd", (params) => {
      that.layerWallAdd(params.layerName, params.positions);
    });
        this.$EventBus.$on('rowLayerWallAdd', (params) => {
            that.rowLayerWallAdd(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("getOverLayerID", (params) => {
      that.getOverLayerID(params.layerName, params.ids, params.cb);
    });
        this.$EventBus.$on('layerShow', (params) => {
            that.layerShow(params.layerName, params.flag)
        })
    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("toPosition", (params) => {
      that.toPosition(
        params.siteJd,
        params.siteWd,
        params.siteGd,
        params.siteHeading,
        params.sitePitch,
        params.siteRoll,
        params.time
      );
    });
        this.$EventBus.$on('highOrLightChange', (type, status) => {
    this.$EventBus.$on("highOrLightChange", (type, status) => {
            // eslint-disable-next-line no-unused-vars
            that.highOrLightChange(type, status)
        })
      that.highOrLightChange(type, status);
    });
        this.$EventBus.$on('addMxTileset', (params) => {
    this.$EventBus.$on("addMxTileset", (params) => {
            // eslint-disable-next-line no-unused-vars
            that.addMxTileset(params.titlesetName, params.titlesetUrl, params)
        })
      that.addMxTileset(params.titlesetName, params.titlesetUrl, params);
    });
        this.$EventBus.$on('closeMxTileset', () => {
    this.$EventBus.$on("closeMxTileset", () => {
            // eslint-disable-next-line no-unused-vars
            that.closeMxTileset()
        })
      that.closeMxTileset();
    });
        this.$EventBus.$on('tilesetLayerFlag', (type, cb) => {
    this.$EventBus.$on("tilesetLayerFlag", (type, cb) => {
            // eslint-disable-next-line no-unused-vars
            that.tilesetLayerFlag(type, cb)
        })
      that.tilesetLayerFlag(type, cb);
    });
        this.$EventBus.$on('removeMxTileset', (params) => {
    this.$EventBus.$on("removeMxTileset", (params) => {
            // eslint-disable-next-line no-unused-vars
            that.removeMxTileset(params.titlesetName)
        })
      that.removeMxTileset(params.titlesetName);
    });
        this.$EventBus.$on('flytoLayer', (params) => {
            that.flytoLayer(params.polygonName, params.duration)
        })
    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("showThreeDimensions", (params) => {
      that.showThreeDimensions(
        params.positions,
        params.minHeight,
        params.maxHeight
      );
    });
        this.$EventBus.$on('switchThreeDimensions', (params) => {
            that.switchThreeDimensions(params)
        })
    this.$EventBus.$on("switchThreeDimensions", (params) => {
      that.switchThreeDimensions(params);
    });
        this.$EventBus.$on('clearHouse3D', () => {
            that.clearHouse3D()
        })
    this.$EventBus.$on("clearHouse3D", () => {
      that.clearHouse3D();
    });
        this.$EventBus.$on('registerMxClick', (event) => {
            that.registerMxClick(event)
        })
    this.$EventBus.$on("registerMxClick", (event) => {
      that.registerMxClick(event);
    });
        this.$EventBus.$on('unbindMxClick', (event) => {
            that.unbindMxClick(event)
        })
    this.$EventBus.$on("unbindMxClick", (event) => {
      that.unbindMxClick(event);
    });
        // 重写定位方法
        const homeCenter = [117.99311892441567, 28.46938164123123]
    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
@@ -595,9 +771,8 @@
            //             sitePitch: -45
            //         })
            //     }
            // document.querySelector('.dc-zoom-controller .refresh svg title').innerHTML = '初始化位置'
        })
    });
    },
    methods: {
@@ -606,65 +781,77 @@
            let centerResult = viewer.camera.pickEllipsoid(
                new global.DC.Namespace.Cesium.Cartesian2(
                    viewer.canvas.clientWidth / 2,
                    viewer.canvas.clientHeight / 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
      );
      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)
      const degrees = global.viewer.camera.heading * (180 / Math.PI);
            if (degrees == 360) {
                return
        return;
            }
            const position = global.DC.Transform.transformCartesianToWGS84(global.viewer.camera.position)
      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)),
        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
          roll: global.viewer.camera.roll,
                },
                duration: 3
            })
        duration: 3,
      });
        },
        overLookClick () {
            const degrees = global.viewer.camera.pitch * (180 / Math.PI)
      const degrees = global.viewer.camera.pitch * (180 / Math.PI);
            if (degrees == -90) {
                return
        return;
            }
            const position = this.getSceneCenterPosition(global.viewer)
      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
          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
          roll: global.viewer.camera.roll,
                },
                duration: 3
            })
        duration: 3,
      });
        },
        angleChange (e) {
@@ -674,23 +861,23 @@
                    orientation: {
                        heading: global.viewer.camera.heading,
                        pitch: -45,
                        roll: global.viewer.camera.roll
            roll: global.viewer.camera.roll,
                    },
                    duration: 0.0
                })
          duration: 0.0,
        });
                global.viewer.setPitchRange(-90, -45)
        global.viewer.setPitchRange(-90, -45);
            } else {
                global.viewer.setPitchRange(-90, 0)
        global.viewer.setPitchRange(-90, 0);
            }
        },
        closeMxTileset () {
            window.TILESET_LABEL.forEach(item => {
                this.removeMxTileset(`sdTilesetLayer${item}`)
            })
      window.TILESET_LABEL.forEach((item) => {
        this.removeMxTileset(`sdTilesetLayer${item.name}`);
      });
            this.tilesetLayerType = ''
      this.tilesetLayerType = "";
        },
        /**
@@ -698,37 +885,44 @@
         * @param {*} type
         * @return {*}
         */
        highOrLightChange (type, status = '') {
            this.$EventBus.$emit('showHouseingTileset', {
                type: 'remove'
            })
    highOrLightChange(type, status = "") {
      this.$EventBus.$emit("showHouseingTileset", {
        type: "remove",
      });
            window.TILESET_LABEL.forEach(item => {
                this.removeMxTileset(`sdTilesetLayer${item}`)
            })
      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 = ''
      if (this.tilesetLayerType == type && status == "") {
        this.tilesetLayerType = "";
            } else {
                this.tilesetLayerType = type
        this.tilesetLayerType = type;
                type == 'light' ?
                    window.TILESET_LABEL.forEach(item => {
                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all/${item.name}/tileset.json`, item)
                    }) :
                    window.TILESET_LABEL.forEach(item => {
                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all1/${item.name}/tileset.json`, item)
        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'
                    })
          this.$EventBus.$emit("showHouseingTileset", {
            type: "add",
          });
                }
            }
        },
@@ -736,18 +930,22 @@
        // 模型的点击事件
        tilesetClick (e) {
            if (this.$route.path != "/layout/house") {
                this.$router.push({ path: '/layout/house', query: { searchName: 'xxx小区' } })
        this.$router.push({
          path: "/layout/house",
          query: { searchName: "xxx小区" },
        });
            }
        },
        switchImg () {
            // 天地图 影像
            this.imgtype = 0
            baseLayers.length && baseLayers.forEach(item => {
                item && global.viewer.imageryLayers.remove(item)
            })
      this.imgtype = 0;
      baseLayers.length &&
        baseLayers.forEach((item) => {
          item && global.viewer.imageryLayers.remove(item);
        });
            baseLayers = []
      baseLayers = [];
            // const layer = global.viewer.imageryLayers.addImageryProvider(
            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
@@ -767,25 +965,37 @@
                    url: `/qp/{AZ}/{y}/{x}.png`,
                    customTags: {
                        AZ (imageryProvider, x, y, level) {
                            return 'Z' + level
              return "Z" + level;
                        },
                    },
                    minimumLevel: 0,
                    maximumLevel: 25,
                })
            )
      );
            qp.contrast = 0.8
      qp.contrast = 0.8;
            baseLayers.push(qp)
      baseLayers.push(qp);
            window.YX_LAYER_CONFIG.forEach(item => {
                let rectangle = {}
      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)) }
        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
          return;
                }
                const layer = global.viewer.imageryLayers.addImageryProvider(
@@ -793,39 +1003,39 @@
                        url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_YX}/${item.name}/{AZ}/{y}/{x}.png`,
                        customTags: {
                            AZ (imageryProvider, x, y, level) {
                                return 'Z' + level
                return "Z" + level;
                            },
                        },
                        minimumLevel: 0,
                        maximumLevel: 25,
                        ...rectangle
            ...rectangle,
                    })
                )
        );
                layer.contrast = 0.8
        layer.contrast = 0.8;
                baseLayers.push(layer)
            })
        baseLayers.push(layer);
      });
            if (window.ADD_NEW_YX_LAYER_CONFIG.length > 0) {
                window.ADD_NEW_YX_LAYER_CONFIG.forEach(item => {
        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
                  return "Z" + level;
                                },
                            },
                            minimumLevel: 0,
                            maximumLevel: 25,
                        })
                    )
          );
                    layer.contrast = 0.8
          layer.contrast = 0.8;
                    baseLayers.push(layer)
                })
          baseLayers.push(layer);
        });
            }
            // baseLayers = global.viewer.imageryLayers.addImageryProvider(
@@ -839,18 +1049,18 @@
            //         tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
            //     })
            // )
        },
        switchElec () {
            // 天地图 矢量
            this.imgtype = 1
      this.imgtype = 1;
            baseLayers.length && baseLayers.forEach(item => {
                item && global.viewer.imageryLayers.remove(item)
            })
      baseLayers.length &&
        baseLayers.forEach((item) => {
          item && global.viewer.imageryLayers.remove(item);
        });
            baseLayers = []
      baseLayers = [];
            baseLayers.push(
                global.viewer.imageryLayers.addImageryProvider(
@@ -861,25 +1071,26 @@
                        format: "image/png",
                        tileMatrixSetID: "c",
                        tileMatrixLabels: new Array(20).fill(0).map((v, i) => i + 1),
                        tilingScheme: new global.DC.Namespace.Cesium.GeographicTilingScheme(),
            tilingScheme:
              new global.DC.Namespace.Cesium.GeographicTilingScheme(),
                    })
                )
            )
      );
            baseLayers.contrast = 1.0
      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}`
            })
        url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_DX}`,
      });
            global.viewer.addTerrain(projectTerrain)
      global.viewer.addTerrain(projectTerrain);
        },
        removeTerrain () {
            global.viewer.removeTerrain(projectTerrain)
      global.viewer.removeTerrain(projectTerrain);
        },
        /**
@@ -888,52 +1099,64 @@
         */
        fullscreenchange () {
            // 最新写法
            const isFullScreen = document.fullscreenElement
      const isFullScreen = document.fullscreenElement;
            if (isFullScreen) {
                if (document.exitFullscreen) {
                    document.exitFullscreen()
          document.exitFullscreen();
                } else if (document.msExitFullscreen) {
                    document.msExitFullscreen()
          document.msExitFullscreen();
                } else if (document.mozCancelFullScreen) {
                    document.mozCancelFullScreen()
          document.mozCancelFullScreen();
                } else if (document.webkitCancelFullScreen) {
                    document.webkitCancelFullScreen()
          document.webkitCancelFullScreen();
                }
                this.isFullscreen = false
        this.isFullscreen = false;
            } else {
                var fullscreen = document.body   // 需要全屏的元素
        var fullscreen = document.body; // 需要全屏的元素
                if (fullscreen.requestFullscreen) {
                    fullscreen.requestFullscreen()
          fullscreen.requestFullscreen();
                } else if (fullscreen.mozRequestFullScreen) {
                    fullscreen.mozRequestFullScreen()
          fullscreen.mozRequestFullScreen();
                } else if (fullscreen.webkitRequestFullscreen) {
                    fullscreen.webkitRequestFullscreen()
          fullscreen.webkitRequestFullscreen();
                } else if (fullscreen.msRequestFullscreen) {
                    fullscreen.msRequestFullscreen()
          fullscreen.msRequestFullscreen();
                }
                this.isFullscreen = true
        this.isFullscreen = true;
            }
        },
        // 切换首页显示隐藏
        switchShowHomeContent () {
            this.$store.commit('SET_ISSHOWHOMECONTENT', !this.$store.state.popupParams.isShowHomeContent)
      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')
        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')
        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");
            }
        },
        /**
@@ -942,10 +1165,13 @@
         * @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)
      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);
        },
        /**
@@ -955,31 +1181,32 @@
         */
        mapAddLayer (layerName, type, ClusterLayerType) {
            if (!layersObjcect[layerName]) {
                this.mapRemoveLayer(layerName, type)
                layersObjcect[layerName] = null
        this.mapRemoveLayer(layerName, type);
        layersObjcect[layerName] = null;
            }
            if (type == 'VectorLayer') {
                layersObjcect[layerName] = new global.DC.VectorLayer(layerName)
            } else if (type == 'ClusterLayer') {
      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') {
          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"
            0.5: "green",
            0.6: "orange",
            0.95: "red",
                    }, //颜色设置
                    height: 0, // 高度
                    radius: 100, // 半径
                    useGround: false, //是否使用贴地模式
                    classificationType: 2 //分类 是否影响地形,3D切片或同时影响这两者。0:地形、1:3D切片、2:两者。贴地模式下生效
                })
          classificationType: 2, //分类 是否影响地形,3D切片或同时影响这两者。0:地形、1:3D切片、2:两者。贴地模式下生效
        });
            }
            global.viewer.addLayer(layersObjcect[layerName])
      global.viewer.addLayer(layersObjcect[layerName]);
        },
        /**
@@ -988,10 +1215,14 @@
         * @param {*} type 图层类型
         */
        mapRemoveLayer (layerName, type) {
            if (type == 'VectorLayer' || type == 'ClusterLayer' || type == 'HeatLayer') {
      if (
        type == "VectorLayer" ||
        type == "ClusterLayer" ||
        type == "HeatLayer"
      ) {
                if (layersObjcect[layerName] && layersObjcect[layerName] != null) {
                    layersObjcect[layerName].remove()
                    layersObjcect[layerName] = null
          layersObjcect[layerName].remove();
          layersObjcect[layerName] = null;
                }
            }
        },
@@ -1003,17 +1234,26 @@
         * @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])
      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 (type == "VectorLayer") {
                if (layersObjcect[layerName] && layersObjcect[layerName] != null) {
                    layersObjcect[layerName].removeOverlay(overlay)
          layersObjcect[layerName].removeOverlay(overlay);
                }
            }
        },
@@ -1024,9 +1264,13 @@
         * @param {*} type 图层类型
         */
        mapClearLayer (layerName, type) {
            if (type == 'VectorLayer' || type == 'ClusterLayer' || type == 'HeatLayer') {
      if (
        type == "VectorLayer" ||
        type == "ClusterLayer" ||
        type == "HeatLayer"
      ) {
                if (layersObjcect[layerName] && layersObjcect[layerName] != null)
                    layersObjcect[layerName].clear()
          layersObjcect[layerName].clear();
            }
        },
@@ -1038,100 +1282,132 @@
         * @param {*} incident 添加的点位事件
         */
        layerPointAdd (layerName, type, layerType = 'VectorLayer', params, distanceDisplayCondition = {
    layerPointAdd(
      layerName,
      type,
      layerType = "VectorLayer",
      params,
      distanceDisplayCondition = {
            near: 0, //最近距离
            far: Number.MAX_VALUE //最远距离
        }, incident = (e) => { }, mouseOverIncident = (e) => { }, mouseOutIncident = (e) => { }, pointMouseMove = (e) => { }) {
        far: Number.MAX_VALUE, //最远距离
      },
      incident = (e) => {},
      mouseOverIncident = (e) => {},
      mouseOutIncident = (e) => {},
      pointMouseMove = (e) => {}
    ) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, layerType, params.ClusterLayerType)
        this.mapAddLayer(layerName, layerType, params.ClusterLayerType);
            }
            let pointElement
            let labelElement
      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)
        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 = 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',
          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)
        });
        labelElement.attrParams = params;
        layersObjcect[layerName].addOverlay(labelElement);
        labelElement.on(global.DC.MouseEventType.CLICK, incident);
            } else if (type == "billboardOrLabel") {
                let allSite = layersObjcect[layerName].getOverlays()
        let allSite = layersObjcect[layerName].getOverlays();
                let flag = allSite.filter(item => item.attrParams.id == params.id)
        let flag = allSite.filter((item) => item.attrParams.id == params.id);
                if (flag == true) {
                    return
          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)
        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 = 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',
          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)
          ...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)
        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);
            }
        },
        /**
@@ -1141,12 +1417,13 @@
         */
        mapRemoveSiteLayer (layerName, siteId) {
            if (layersObjcect[layerName]) {
                let allSite = layersObjcect[layerName].getOverlays()
        let allSite = layersObjcect[layerName].getOverlays();
                allSite.filter(item => item.attrParams.id == siteId).forEach(item => layersObjcect[layerName].removeOverlay(item))
        allSite
          .filter((item) => item.attrParams.id == siteId)
          .forEach((item) => layersObjcect[layerName].removeOverlay(item));
            }
        },
        /**
         * 图层面添加
@@ -1155,29 +1432,45 @@
         * @param {*} material 颜色
         * @param {*} distanceDisplayCondition 可见距离
         */
        layerPolygonAdd (layerName, positions, material, distanceDisplayCondition, polygonName, params, incident = (e) => { }, mouseOverIncident = (e) => { },
            mouseOutIncident = (e) => { }, setStyle = {}) {
    layerPolygonAdd(
      layerName,
      positions,
      material,
      distanceDisplayCondition,
      polygonName,
      params,
      incident = (e) => {},
      mouseOverIncident = (e) => {},
      mouseOutIncident = (e) => {},
      setStyle = {}
    ) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, 'VectorLayer')
        this.mapAddLayer(layerName, "VectorLayer");
                layersObjcect[layerName].allowDrillPicking = true
        layersObjcect[layerName].allowDrillPicking = true;
            }
            // let polygon = new global.DC.Polygon(positions)
            // let polygonObj = {}//要在全局定义
            polygonObj[polygonName] = new global.DC.Polygon(positions)
      polygonObj[polygonName] = new global.DC.Polygon(positions);
            // polygon.setStyle({
            polygonObj[polygonName].setStyle({
                material: material,
                distanceDisplayCondition: distanceDisplayCondition,
                perPositionHeight: true,
                ...setStyle
            })
        ...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])
      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]);
        },
        /**
@@ -1187,49 +1480,61 @@
         * @param {*} material 颜色
         * @param {*} distanceDisplayCondition 可见距离
         */
        layerPolygonArrowsAdd (layerName, positions, material, polygonName = '', params, incident = (e) => { }, mouseOverIncident = (e) => { },
            mouseOutIncident = (e) => { }, setStyle = {}) {
    layerPolygonArrowsAdd(
      layerName,
      positions,
      material,
      polygonName = "",
      params,
      incident = (e) => {},
      mouseOverIncident = (e) => {},
      mouseOutIncident = (e) => {},
      setStyle = {}
    ) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, 'VectorLayer')
        this.mapAddLayer(layerName, "VectorLayer");
                layersObjcect[layerName].allowDrillPicking = true
        layersObjcect[layerName].allowDrillPicking = true;
            }
            if (polygonName == '') {
                polygonName = layerName + params.id
      if (polygonName == "") {
        polygonName = layerName + params.id;
            }
            polygonObj[polygonName] = new global.DC.Polyline(positions)
      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)
      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)
      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',
          image: "/images/arrows.png",
                    repeat: {
                        x: getLineSpeed(positionData) / 2, y: 1
                    }
            x: getLineSpeed(positionData) / 2,
            y: 1,
          },
                }),
                distanceDisplayCondition: {
                    near: 0, //最近距离
                    far: 2000 //最远距离
          far: 2000, //最远距离
                },
                clampToGround: false,
                ...setStyle
            })
        ...setStyle,
      });
            polygonObj[polygonName].attrParams = params
            layersObjcect[layerName].addOverlay(polygonObj[polygonName])
      polygonObj[polygonName].attrParams = params;
      layersObjcect[layerName].addOverlay(polygonObj[polygonName]);
        },
        /**
@@ -1239,56 +1544,63 @@
         * @param {*} material 颜色
         * @param {*} width 宽度
         */
        layerPolylineAdd (layerName, positions, material, width, params, incident = (e) => { }) {
    layerPolylineAdd(
      layerName,
      positions,
      material,
      width,
      params,
      incident = (e) => {}
    ) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, 'VectorLayer')
        this.mapAddLayer(layerName, "VectorLayer");
                layersObjcect[layerName].allowDrillPicking = true
        layersObjcect[layerName].allowDrillPicking = true;
            }
            let polyline = new global.DC.Polyline(positions)
      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)
        clampToGround: false,
      });
      polyline.attrParams = params;
      polyline.on(global.DC.MouseEventType.CLICK, incident);
            layersObjcect[layerName].addOverlay(polyline)
      layersObjcect[layerName].addOverlay(polyline);
        },
        layerWallAdd (layerName, positions) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, 'VectorLayer')
        this.mapAddLayer(layerName, "VectorLayer");
            }
            let wall = new global.DC.Wall(positions)
      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)
          speed: 10,
        }),
      });
      layersObjcect[layerName].addOverlay(wall);
        },
        rowLayerWallAdd (layerName, positions) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, 'VectorLayer')
        this.mapAddLayer(layerName, "VectorLayer");
            }
            let wall = new global.DC.Wall(positions)
      let wall = new global.DC.Wall(positions);
            wall.setStyle({
                material: new global.DC.WallImageTrailMaterialProperty({
                    image: '/images/jjx.png',
          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)
          speed: 10,
        }),
      });
      layersObjcect[layerName].addOverlay(wall);
        },
        /**
@@ -1296,29 +1608,26 @@
         * @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) != ''
          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)
          pre.push(
            layersObjcect[layerName].getOverlay(cur.overlayId).attrParams
          );
                } else {
                    layersObjcect[layerName].eachOverlay(item => {
                        if (item.overlayId == cur.overlayId)
                            pre.push(item.attrParams)
                    })
          layersObjcect[layerName].eachOverlay((item) => {
            if (item.overlayId == cur.overlayId) pre.push(item.attrParams);
          });
                }
                return pre
        return pre;
      }, []);
            }, [])
            cb(data)
      cb(data);
        },
        /**
@@ -1327,7 +1636,7 @@
         * @param {*} flag 显示隐藏
         */
        layerShow (layerName, flag) {
            if (layersObjcect[layerName]) layersObjcect[layerName].show = flag
      if (layersObjcect[layerName]) layersObjcect[layerName].show = flag;
        },
        /**
@@ -1340,7 +1649,15 @@
         * @param {*} siteRoll 翻转角度,默认0
         * @param {*} time 飞行时间,默认3秒
         */
        toPosition (siteJd, siteWd, siteGd = 2000, siteHeading = 0, sitePitch = -90, siteRoll = 0, time = 3) {
    toPosition(
      siteJd,
      siteWd,
      siteGd = 2000,
      siteHeading = 0,
      sitePitch = -90,
      siteRoll = 0,
      time = 3
    ) {
            global.viewer.flyToPosition(
                new global.DC.Position(
                    Number(siteJd),
@@ -1352,7 +1669,7 @@
                ),
                function () { },
                time
            )
      );
        },
        // sdTilesetLayer
@@ -1362,7 +1679,7 @@
        * @param {*} duration 时间
        */
        flytoLayer (polygonName, duration = 3) {
            global.viewer.flyTo(polygonObj[polygonName], duration)
      global.viewer.flyTo(polygonObj[polygonName], duration);
        },
        /**
@@ -1372,7 +1689,7 @@
         * @param {*} incident 模型点击事件
         */
        addMxTileset (titlesetName, titlesetUrl, conf) {
            if (!tilesetObject[titlesetName]) tilesetObject[titlesetName] = null
      if (!tilesetObject[titlesetName]) tilesetObject[titlesetName] = null;
            tilesetObject[titlesetName] = new global.DC.Tileset(titlesetUrl, {
                luminanceAtZenith: 0.4,
@@ -1380,41 +1697,41 @@
                // cullRequestsWhileMoving: false,
                // skipLevelOfDetail: false,
                maximumScreenSpaceError: conf.maximumScreenSpaceError || 16,
                shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED
            })
        shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED,
      });
            // 地形数据添加
            tilesetObject[titlesetName].setHeight(-73)
      tilesetObject[titlesetName].setHeight(-73);
            tilesetLayer.addOverlay(tilesetObject[titlesetName])
      tilesetLayer.addOverlay(tilesetObject[titlesetName]);
            // global.viewer.flyTo(tilesetObject[titlesetName])removeMxTileset
        },
        tilesetLayerFlag (type, cb) {
            if (type == 1) {
                if (this.tilesetLayerType != '') {
        if (this.tilesetLayerType != "") {
                    this.$message({
                        message: '请关闭模型再开始绘制',
                        type: 'warning'
                    })
            message: "请关闭模型再开始绘制",
            type: "warning",
          });
                    cb(false)
                    return
          cb(false);
          return;
                }
            } else {
                if (this.tilesetLayerType == '') {
        if (this.tilesetLayerType == "") {
                    this.$message({
                        message: '请打开模型再开始绘制',
                        type: 'warning'
                    })
            message: "请打开模型再开始绘制",
            type: "warning",
          });
                    cb(false)
                    return
          cb(false);
          return;
                }
            }
            cb(true)
      cb(true);
        },
        /**
@@ -1424,8 +1741,8 @@
         */
        removeMxTileset (titlesetName) {
            if (tilesetObject[titlesetName] && tilesetObject[titlesetName] != null) {
                tilesetLayer.removeOverlay(tilesetObject[titlesetName])
                tilesetObject[titlesetName] = null
        tilesetLayer.removeOverlay(tilesetObject[titlesetName]);
        tilesetObject[titlesetName] = null;
            }
        },
@@ -1435,103 +1752,123 @@
        * @param {*} 
        */
        showThreeDimensions (positions, minHeight, maxHeight) {
            console.log('showThreeDimensions--map')
      console.log("showThreeDimensions--map");
            if (curPolygon != null) {
                global.viewer.scene.primitives.remove(curPolygon)
                curPolygon = null
        global.viewer.scene.primitives.remove(curPolygon);
        curPolygon = null;
            }
            let housePositions = JSON.parse(positions).coordinates[0]
      let housePositions = JSON.parse(positions).coordinates[0];
            let floorPositions = housePositions.reduce((prev, curr) => {
                prev.push(curr[0])
                prev.push(curr[1])
        prev.push(curr[0]);
        prev.push(curr[1]);
                return prev
            }, [])
        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),
              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)
            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
            })
        classificationType:
          global.DC.Namespace.Cesium.ClassificationType.CESIUM_3D_TILE,
      });
            global.viewer.scene.primitives.add(curPolygon)
      global.viewer.scene.primitives.add(curPolygon);
        },
        // 建筑高亮切换显示隐藏
        switchThreeDimensions (boolean) {
            if (!curPolygon) return
            curPolygon.show = boolean
      if (!curPolygon) return;
      curPolygon.show = boolean;
        },
        // 清除建筑3D
        clearHouse3D () {
            global.viewer.scene.primitives.remove(curPolygon)
      global.viewer.scene.primitives.remove(curPolygon);
            curPolygon = null
      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)
      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}`] && tilesetObject[`sdTilesetLayer${item}`] != null) {
                    tilesetObject[`sdTilesetLayer${item}`].off(global.DC.MouseEventType.CLICK, 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')
    }
}
    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>