shuishen
2023-03-30 81b4bca516d37a36854181d60215e6ceaddc5e9c
src/components/map/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 17:00:30
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-28 23:57:07
 * @LastEditTime: 2023-03-30 11:06:04
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -13,22 +13,22 @@
        <slot ref="mainContent" name="mainContent"></slot>
        <slot name="showButton"></slot>
        <div class="over-look-btn">
            <el-tooltip content="一键俯视" placement="bottom" effect="dark">
            <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="isFullscreen" content="缩放" placement="bottom" effect="dark">
            <el-tooltip v-if="isFullscreen" content="缩放" placement="top" effect="dark">
                <i class="fa fa-compress" style="vertical-align: middle; cursor: pointer" @click="fullscreenchange"></i>
            </el-tooltip>
            <el-tooltip v-if="!isFullscreen" content="全屏" placement="bottom" effect="dark">
            <el-tooltip v-if="!isFullscreen" content="全屏" placement="top" effect="dark">
                <i class="fa fa-expand" style="vertical-align: middle; cursor: pointer" @click="fullscreenchange"></i>
            </el-tooltip>
        </div>
        <!-- 切换矢量图按钮 -->
        <div class="image-switch-icon-btn">
            <el-tooltip content="图层、模型、视角" placement="bottom" effect="dark">
            <el-tooltip content="图层、模型、视角" placement="top" effect="dark">
                <div class="icon-box" @click.stop="showImgBtn = !showImgBtn">
                    <img src="/img/base_map.png" alt />
                </div>
@@ -39,7 +39,8 @@
                <div class="layer-change-box">
                    <div class="title">
                        底图
                        <div class="close" @click.stop="showImgBtn = false" title="关闭"></div>
                        <div class="close" @click.stop="showImgBtn = false">
                        </div>
                    </div>
                    <div class="content">
@@ -325,7 +326,9 @@
            // global.viewer.addTerrain(terrain)
            // 内网
            that.switchImg()
            // that.switchImg()
            // that.highOrLightChange('light')
            // 外网
            global.viewer.imageryLayers.addImageryProvider(
@@ -429,6 +432,8 @@
        global.DC.ready(initViewer)
        // global.viewer.scene.morphTo2D(1)
        // 清除控制台
@@ -515,14 +520,29 @@
            that.toPosition(params.siteJd, params.siteWd, params.siteGd, params.siteHeading, params.sitePitch, params.siteRoll, params.time)
        })
        this.$EventBus.$on('highOrLightChange', (type) => {
            // eslint-disable-next-line no-unused-vars
            that.highOrLightChange(type)
        })
        this.$EventBus.$on('addMxTileset', (params) => {
            // eslint-disable-next-line no-unused-vars
            that.addMxTileset(params.titlesetName, params.titlesetUrl, params.incident)
            that.addMxTileset(params.titlesetName, params.titlesetUrl)
        })
        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, params.incident)
            that.removeMxTileset(params.titlesetName)
        })
        this.$EventBus.$on('activeControlRemoveTileset', () => {
            // eslint-disable-next-line no-unused-vars
            that.activeControlRemoveTileset()
        })
        this.$EventBus.$on('flytoLayer', (params) => {
@@ -590,8 +610,6 @@
            } else {
                global.viewer.setPitchRange(-90, 0)
            }
            this.showImgBtn = false
        },
        /**
         * @description: 高精度模型和轻量模型切换
@@ -600,11 +618,11 @@
         */
        highOrLightChange (type) {
            label.forEach(item => {
                this.removeMxTileset(`sdTilesetLayer${item}`, this.housingIndent)
                this.removeMxTileset(`sdTilesetLayer${item}`)
            })
            // this.addMxTileset('sdTilesetLayer', `${tile3DUrl}/sf3d/361102/model/wanda/tileset.json`, this.housingIndent)
            // this.addMxTileset('sdTilesetLayer', `/mx/01/tileset.json`, this.housingIndent)
            // this.addMxTileset('sdTilesetLayer', `${tile3DUrl}/sf3d/361102/model/wanda/tileset.json`)
            // this.addMxTileset('sdTilesetLayer', `/mx/01/tileset.json`)
            if (this.tilesetLayerType == type) {
                this.tilesetLayerType = ''
@@ -613,14 +631,12 @@
                type == 'light' ?
                    label.forEach(item => {
                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all/${item}/tileset.json`, this.housingIndent)
                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all/${item}/tileset.json`)
                    }) :
                    label.forEach(item => {
                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all1/${item}/tileset.json`, this.housingIndent)
                        this.addMxTileset(`sdTilesetLayer${item}`, `${tile3DUrl}/sf3d/361102/model/all1/${item}/tileset.json`)
                    })
            }
            this.showImgBtn = false
        },
        /**
@@ -668,8 +684,6 @@
            // )
            baseLayers.contrast = 0.8
            this.showImgBtn = false
        },
        switchElec () {
@@ -689,8 +703,6 @@
            )
            baseLayers.contrast = 1.0
            this.showImgBtn = false
        },
        /**
@@ -1047,7 +1059,7 @@
         * @param {*} titlesetUrl 模型地址
         * @param {*} incident 模型点击事件
         */
        addMxTileset (titlesetName, titlesetUrl, incident = (e) => { }) {
        addMxTileset (titlesetName, titlesetUrl) {
            if (!tilesetObject[titlesetName]) tilesetObject[titlesetName] = null
            tilesetObject[titlesetName] = new global.DC.Tileset(titlesetUrl, {
@@ -1060,11 +1072,45 @@
            tilesetObject[titlesetName].setHeight(-72)
            tilesetObject[titlesetName].on(global.DC.MouseEventType.CLICK, incident)
            tilesetObject[titlesetName].on(global.DC.MouseEventType.CLICK, this.housingIndent)
            tilesetLayer.addOverlay(tilesetObject[titlesetName])
            // global.viewer.flyTo(tilesetObject[titlesetName])
        },
        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)
        },
        activeControlRemoveTileset () {
            label.forEach(item => {
                this.removeMxTileset(`sdTilesetLayer${item}`)
            })
            this.tilesetLayerType = ''
        },
        /**
@@ -1072,9 +1118,9 @@
         * @param {*} titlesetName 图层名称
         * @param {*} incident 模型点击事件
         */
        removeMxTileset (titlesetName, incident = (e) => { }) {
        removeMxTileset (titlesetName) {
            if (tilesetObject[titlesetName] && tilesetObject[titlesetName] != null) {
                tilesetObject[titlesetName].off(global.DC.MouseEventType.CLICK, incident)
                tilesetObject[titlesetName].off(global.DC.MouseEventType.CLICK, this.housingIndent)
                tilesetLayer.removeOverlay(tilesetObject[titlesetName])
                tilesetObject[titlesetName] = null
            }