| | |
| | | * @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: 公用地图组件 |
| | | * |
| | |
| | | <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> |
| | |
| | | <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"> |
| | |
| | | // global.viewer.addTerrain(terrain) |
| | | |
| | | // 内网 |
| | | that.switchImg() |
| | | // that.switchImg() |
| | | |
| | | // that.highOrLightChange('light') |
| | | |
| | | // 外网 |
| | | global.viewer.imageryLayers.addImageryProvider( |
| | |
| | | |
| | | global.DC.ready(initViewer) |
| | | |
| | | |
| | | |
| | | // global.viewer.scene.morphTo2D(1) |
| | | |
| | | // 清除控制台 |
| | |
| | | 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) => { |
| | |
| | | } else { |
| | | global.viewer.setPitchRange(-90, 0) |
| | | } |
| | | |
| | | this.showImgBtn = false |
| | | }, |
| | | /** |
| | | * @description: 高精度模型和轻量模型切换 |
| | |
| | | */ |
| | | 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 = '' |
| | |
| | | |
| | | 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 |
| | | }, |
| | | |
| | | /** |
| | |
| | | // ) |
| | | |
| | | baseLayers.contrast = 0.8 |
| | | |
| | | this.showImgBtn = false |
| | | }, |
| | | |
| | | switchElec () { |
| | |
| | | ) |
| | | |
| | | baseLayers.contrast = 1.0 |
| | | |
| | | this.showImgBtn = false |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @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, { |
| | |
| | | |
| | | 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 = '' |
| | | }, |
| | | |
| | | /** |
| | |
| | | * @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 |
| | | } |