吉安感知网项目-前端
罗广辉
2026-02-26 f4237dbcadda6960faa2758b7c798d695acc7749
feat: 工单机巢添加覆盖范围
2 files modified
36 ■■■■■ changed files
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue 34 ●●●●● patch | view | raw | blame | history
packages/utils/map/DrawPolygon.js 2 ●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -550,6 +550,19 @@
    })
}
//  生成圆形坐标点
function buildCirclePositions(center, radius, segments = 120) {
    const cartographic = Cesium.Cartographic.fromCartesian(center)
    const positions = []
    for (let i = 0; i < segments; i++) {
        const angle = (i / segments) * 2 * Math.PI
        const lat = cartographic.latitude + (radius / 6378137) * Math.cos(angle)
        const lon = cartographic.longitude + (radius / (6378137 * Math.cos(cartographic.latitude))) * Math.sin(angle)
        positions.push(Cesium.Cartesian3.fromRadians(lon, lat))
    }
    return positions
}
//  渲染
function renderingAllDevice(list) {
    list.forEach(item => {
@@ -576,6 +589,27 @@
                pixelOffset: new Cesium.Cartesian2(0, -20),
            },
        })
        // 覆盖范围 - 5km圆形区域
        viewer.entities.add({
            position: position,
            ellipse: {
                semiMajorAxis: 5000,
                semiMinorAxis: 5000,
                material: Cesium.Color.fromBytes(45, 140, 240, 80),
                outline: false,
                heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
            },
        })
        // 覆盖范围描边线 - 贴地
        const circlePositions = buildCirclePositions(position, 5000)
        viewer.entities.add({
            polyline: {
                positions: [...circlePositions, circlePositions[0]],
                clampToGround: true,
                width: 2,
                material: Cesium.Color.fromBytes(45, 140, 240, 255),
            },
        })
    })
}
packages/utils/map/DrawPolygon.js
@@ -662,7 +662,7 @@
        const menuItems =
            type === 'polygon'
                ? [{ title: '删除测区', class: 'del-planar-polygon' }]
                ? [{ title: '删除范围', class: 'del-planar-polygon' }]
                : [{ title: '删除端点', class: 'del-planar-point' }]
        menuItems.forEach(item => {