吉安感知网项目-前端
罗广辉
2026-01-17 c53aab006b9db28e62381dba4fca4d77ec3566b0
applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
@@ -3,7 +3,15 @@
      :close-on-click-modal="false">
      <div class="dialog-container">
         <div class="left-container">
            <div class="leftMap command-cesium" id="mapContainer"></div>
            <CommonCesiumMap
               ref="mapRef"
               class="leftMap command-cesium"
               :active="visible"
               :flat-mode="false"
               :terrain="true"
               :layer-mode="4"
               :boundary="false"
            />
         </div>
         <div class="right-container">
@@ -159,7 +167,7 @@
import { ElMessage } from 'element-plus'
import { fwAreaDivideDetailApi, fwAreaDivideSubmitApi } from './partitionApi'
import { fieldRules, geomAnalysis, getDictLabel } from '@ztzf/utils'
import { PublicCesium } from '@/utils/cesium/publicCesium'
import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
import { DrawPolygon } from '@/utils/cesium/DrawPolygon'
import { cartesian3Convert } from '@/utils/cesium/mapUtil'
import * as turf from '@turf/turf'
@@ -197,6 +205,7 @@
const policeStationOptions = ref([]) // 关联派出所
const deviceOptions = ref([]) // 关联设备
const dictObj = inject('dictObj')
const mapRef = ref(null)
let viewer
let drawPolygonExample
let pointList = []
@@ -265,14 +274,9 @@
// 初始化地图实例
function initMap () {
   const publicCesiumInstance = new PublicCesium({
      dom: 'mapContainer',
      flatMode: false,
      terrain: true,
      layerMode: 4,
      boundary: false,
   })
   viewer = publicCesiumInstance.getViewer()
   if (viewer) return
   const map = mapRef.value?.getMap()
   viewer = map?.viewer || null
}
// 绘制完成回调
@@ -311,6 +315,22 @@
      pointList.map(item => ({ lng: item.longitude, lat: item.latitude }))
   )
   drawPolygonExample.subscribe('getPolygonPositions', drawFinished)
   if (pointList1.length) {
      const result = pointList1.map(item => [item.longitude, item.latitude]).flat()
      const tempEntity = viewer.entities?.add({
         position: Cesium.Cartesian3.fromDegrees(result[0], result[1]),
         polyline: {
            positions: Cesium.Cartesian3.fromDegreesArray(result),
            clampToGround: true,
            width: 1,
            material: Cesium.Color.TRANSPARENT,
         },
      })
      if (tempEntity) {
         viewer.flyTo(tempEntity, { duration: 0 })
         viewer.entities.remove(tempEntity)
      }
   }
}
// 查看面
@@ -328,7 +348,7 @@
         material: Cesium.Color.RED,
      },
   })
   viewer.flyTo(mian)
   viewer.flyTo(mian, { duration: 0 })
}
// 获取派出所列表