guanqb
2022-09-20 d057c8fdb1ed9db6cfcebacb146cd0ffbc1ad7fe
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: 2022-09-17 16:21:14
 * @LastEditTime: 2022-09-19 18:19:53
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -34,12 +34,18 @@
var siteEntitylayers = null
let layersObjce = {
let layersObjcect = {
    housingEstateLayer: null,
    patrolWagonLayer: null,
    handMachineLayer: null,
    monitoringLayer: null,
    panoramaLayer: null
}
let tilesetLayer = null
let tilesetObject = {
    sdTilesetLayer: null
}
export default {
@@ -187,17 +193,36 @@
            // 图层加入地图
            layersObjce.housingEstateLayer = new global.DC.VectorLayer('housingEstateLayer')
            global.viewer.addLayer(layersObjce.housingEstateLayer)
            layersObjce.patrolWagonLayer = new global.DC.VectorLayer('patrolWagonLayer')
            global.viewer.addLayer(layersObjce.patrolWagonLayer)
            layersObjce.handMachineLayer = new global.DC.VectorLayer('handMachineLayer')
            global.viewer.addLayer(layersObjce.handMachineLayer)
            layersObjce.monitoringLayer = new global.DC.VectorLayer('monitoringLayer')
            global.viewer.addLayer(layersObjce.monitoringLayer)
            layersObjce.panoramaLayer = new global.DC.VectorLayer('panoramaLayer')
            global.viewer.addLayer(layersObjce.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)
            // 加载围栏
            let layer = new global.DC.VectorLayer('layer')
            global.viewer.addLayer(layer)
            let wall = new global.DC.Wall(
                '116.018142,28.688089,100.0; 116.017756,28.684648,100.0; 116.019507,28.677570,100.0; 116.033653,28.675634,100.0; 116.034223,28.681389,100.0; 116.033483,28.687265,100.0; 116.018142,28.688089,100.0'
            )
            wall.setStyle({
                material: new global.DC.WallTrailMaterialProperty({
                    color: global.DC.Color.BLUE,
                    speed: 8
                })
            })
            layer.addOverlay(wall)
@@ -219,14 +244,7 @@
                })
            )
            let tilesLayer = new global.DC.TilesetLayer('tilesLayer')
            global.viewer.addLayer(tilesLayer)
            let tileset = new global.DC.Tileset(
                '/qx/tileset.json'
            )
            tilesLayer.addOverlay(tileset)
            global.viewer.flyTo(tileset)
            // 加载顺丰底图
@@ -242,7 +260,7 @@
                // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                // fromDegrees()方法,将经纬度和高程转换为世界坐标
                destination: global.DC.Namespace.Cesium.Cartesian3.fromDegrees(
                    117.971, 28.44444, 8000.0
                    116.027429, 28.681978, 8000.0
                ),
                orientation: {
                    // 指向
@@ -257,7 +275,7 @@
            global.viewer.use(new global.DC.Measure())
            // global.viewer.locationBar.enable = true
            global.viewer.locationBar.enable = true
            // 缩放
            global.viewer.zoomController.enable = true
            // 比例尺
@@ -300,29 +318,44 @@
        // })
        this.$EventBus.on('mapAddLayer', (params) => {
        this.$EventBus.$on('mapAddLayer', (params) => {
            that.mapAddLayer(params.layerName, params.type)
        })
        this.$EventBus.on('mapRemoveLayer', (params) => {
        this.$EventBus.$on('mapRemoveLayer', (params) => {
            that.mapRemoveLayer(params.layerName, params.type)
        })
        this.$EventBus.on('mapClearLayer', (params) => {
        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.params, params.incident = (e) => { })
        })
        this.$EventBus.on('layerShow', (params) => {
        this.$EventBus.$on('layerPolygonAdd', (params) => {
            that.layerPolygonAdd(params.layerName, params.positions, params.material)
        })
        this.$EventBus.$on('layerShow', (params) => {
            that.layerShow(params.layerName, params.flag)
        })
        this.$EventBus.on('flyToPosition', (params) => {
        this.$EventBus.$on('flyToPosition', (params) => {
            that.flyToPosition(params.siteJd, params.siteWd, params.siteGd = 0, params.siteHeading = 0, params.sitePitch = -90, params.siteRoll = 0, params.time = 3)
        })
        this.$EventBus.$on('addMxTileset', (params) => {
            // eslint-disable-next-line no-unused-vars
            that.addMxTileset(params.titlesetName, params.titlesetUrl, params.incident = (e) => { })
        })
        this.$EventBus.$on('removeMxTileset', (params) => {
            // eslint-disable-next-line no-unused-vars
            that.removeMxTileset(params.titlesetName, params.incident = (e) => { })
        })
    },
@@ -385,8 +418,9 @@
         */
        mapAddLayer (layerName, type) {
            if (type == 'VectorLayer') {
                layersObjce[layerName] = new global.DC.VectorLayer('layerName')
                global.viewer.addLayer(layersObjce[layerName])
                if (!layersObjcect[layerName]) layersObjcect[layerName] = null
                layersObjcect[layerName] = new global.DC.VectorLayer('layerName')
                global.viewer.addLayer(layersObjcect[layerName])
            }
        },
@@ -397,9 +431,9 @@
         */
        mapRemoveLayer (layerName, type) {
            if (type == 'VectorLayer') {
                layersObjce[layerName].remove()
                layersObjcect[layerName].remove()
                layersObjce[layerName] = null
                layersObjcect[layerName] = null
            }
        },
@@ -410,7 +444,7 @@
         */
        mapClearLayer (layerName, type) {
            if (type == 'VectorLayer') {
                layersObjce[layerName].clear()
                layersObjcect[layerName].clear()
            }
        },
@@ -442,8 +476,30 @@
                })
            }
            pointElement.attrParams = params
            layersObjce[layerName].addOverlay(pointElement)
            layersObjcect[layerName].addOverlay(pointElement)
            pointElement.on(global.DC.MouseEventType.CLICK, incident)
        },
        /**
         * 图层面添加
         * @param {*} layerName 图层名称
         * @param {*} positions 图层位置数据
         * @param {*} material 颜色
         */
        layerPolygonAdd (layerName, positions, material) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, 'VectorLayer')
            }
            let polygon = new global.DC.Polygon(positions)
            polygon.setStyle({
                material: material,
                extrudedHeight: 0,
                perPositionHeight: true
            })
            layersObjcect[layerName].addOverlay(polygon)
        },
        /**
@@ -452,7 +508,7 @@
         * @param {*} flag 显示隐藏
         */
        layerShow (layerName, flag) {
            layersObjce[layerName].show = flag
            layersObjcect[layerName].show = flag
        },
        /**
@@ -478,7 +534,46 @@
                function () { },
                time
            )
        }
        },
        // sdTilesetLayer
        /**
         * 添加模型
         * @param {*} titlesetName 图层名称
         * @param {*} titlesetUrl 模型地址
         * @param {*} incident 模型点击事件
         */
        addMxTileset (titlesetName, titlesetUrl, incident) {
            if (!tilesetObject[titlesetName]) tilesetObject[titlesetName] = null
            tilesetObject[titlesetName] = new global.DC.Tileset(titlesetUrl, {
                luminanceAtZenith: 0.4,
                // cullWithChildrenBounds: false,
                // cullRequestsWhileMoving: false,
                // skipLevelOfDetail: false,
                shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED
            })
            tilesetObject[titlesetName].setHeight(5)
            tilesetLayer.addOverlay(tilesetObject[titlesetName])
            global.viewer.flyTo(tilesetObject[titlesetName])
            tilesetObject[titlesetName].on(global.DC.MouseEventType.CLICK, incident)
        },
        /**
         * 删除模型
         * @param {*} titlesetName 图层名称
         * @param {*} incident 模型点击事件
         */
        removeMxTileset (titlesetName, incident) {
            tilesetObject[titlesetName].off(global.DC.MouseEventType.CLICK, incident)
            tilesetLayer.removeOverlay(tilesetObject[titlesetName])
            tilesetObject[titlesetName] = null
        },
    },
}