guanqb
2023-05-17 bbb9ee296e5ca96d80eed76173c3d76ebc14fc5f
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-05-11 09:36:50
 * @LastEditTime: 2023-05-16 20:44:11
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -166,6 +166,7 @@
import yToolTip from './components/yToolTip.vue'
import createTools from '@/utils/tools/index'
import { mapGetters } from 'vuex'
import { getLineSpeed } from '@/utils/turfPolygon'
import yxLayerJson from './yxlayer'
@@ -465,6 +466,10 @@
            } else {
                that.layerPolygonAdd(params.layerName, params.positions, params.material, params.distanceDisplayCondition, 'polygon', params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
            }
        })
        this.$EventBus.$on('layerPolygonArrowsAdd', (params) => {
            that.layerPolygonArrowsAdd(params.layerName, params.positions, params.material, params.polygonName, params.params, params.incident, params.mouseOverIncident, params.mouseOutIncident, params.setStyle)
        })
        this.$EventBus.$on('layerPolylineAdd', (params) => {
@@ -1049,6 +1054,52 @@
        },
        /**
         * 图层面添加
         * @param {*} layerName 图层名称
         * @param {*} positions 图层位置数据
         * @param {*} material 颜色
         * @param {*} distanceDisplayCondition 可见距离
         */
        layerPolygonArrowsAdd (layerName, positions, material, polygonName = '', params, incident = (e) => { }, mouseOverIncident = (e) => { },
            mouseOutIncident = (e) => { }, setStyle = {}) {
            if (!layersObjcect[layerName] || layersObjcect[layerName] == null) {
                this.mapAddLayer(layerName, 'VectorLayer')
                layersObjcect[layerName].allowDrillPicking = true
            }
            if (polygonName == '') {
                polygonName = layerName + params.id
            }
            polygonObj[polygonName] = new global.DC.Polyline(positions)
            let positionData = positions.split(';').map(item => {
                return [Number(item.split(',')[0]), Number(item.split(',')[1])]
            }).filter(item => {
                return !item.some(it => it == 0)
            })
            polygonObj[polygonName].setStyle({
                width: (params.width / 2),
                material: new global.DC.PolylineImageTrailMaterialProperty({
                    color: new global.DC.Color(255, 255, 255),
                    speed: 20,
                    image: '/images/arrows.png',
                    repeat: {
                        x: (getLineSpeed(positionData) / 2), y: 1
                    }
                }),
                clampToGround: false,
                ...setStyle
            })
            polygonObj[polygonName].attrParams = params
            layersObjcect[layerName].addOverlay(polygonObj[polygonName])
        },
        /**
         * 图层线添加
         * @param {*} layerName 图层名称
         * @param {*} positions 图层位置数据
@@ -1326,6 +1377,7 @@
        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')