forked from drone/command-center-dashboard

罗广辉
2025-04-18 61e6956be147e1e84e7104f16dd47e9f87f20dfd
src/components/CurrentTaskDetails/RealTimeMap.vue
@@ -26,12 +26,14 @@
   tilingScheme: new AmapMercatorTilingScheme(),
   credit: 'amap_SL',
})
let viewer = null
const taskDetailsViewer = inject('taskDetailsViewer')
const taskDetails = inject('taskDetails')
const deviceOsdInfo = inject('deviceOsdInfo')
const initMap = () => {
   viewer = new Viewer('currentTaskMap', {
   taskDetailsViewer.value = new Viewer('currentTaskMap', {
      terrain: Terrain.fromWorldTerrain(),
      infoBox: false, // 禁用沙箱,解决控制台报错
      animation: false, // 左下角的动画仪表盘
@@ -45,17 +47,17 @@
      baseLayer: false,
      fullscreenButton: false,
   })
   const gdLayer = viewer.imageryLayers.addImageryProvider(imageryProvider_ammapSL)
   const gdLayer = taskDetailsViewer?.value.imageryLayers.addImageryProvider(imageryProvider_ammapSL)
   const options = {
      bInvertColor: true,
      bFilterColor: true,
      filterColor: '#4e70a6',
   }
   // 添加蓝色滤镜
   addBlueFilter(options, viewer, gdLayer)
   viewer.scene.morphTo2D(0)
   addBlueFilter(options, taskDetailsViewer?.value, gdLayer)
   taskDetailsViewer?.value.scene.morphTo2D(0)
   //设置默认点
   viewer.camera.setView({
   taskDetailsViewer?.value.camera.setView({
      destination: Cartesian3.fromDegrees(115.763819, 28.787374, 5000),
   })
}
@@ -66,7 +68,7 @@
      return Cartesian3.fromDegrees(Number(lon), Number(lat))
   })
   // 起点
   viewer.entities.add({
   taskDetailsViewer?.value.entities.add({
      position: positions[0],
      billboard: {
         image: new Cesium.ConstantProperty(rwqfdImg),
@@ -75,7 +77,7 @@
      },
   })
   // 终点
   viewer.entities.add({
   taskDetailsViewer?.value.entities.add({
      position: positions[positions.length - 1],
      billboard: {
         image: new Cesium.ConstantProperty(endPointImg),
@@ -85,7 +87,7 @@
      },
   })
   // 路径线
   viewer.entities.add({
   taskDetailsViewer?.value.entities.add({
      polyline: {
         width: 4,
         positions: positions,
@@ -108,29 +110,28 @@
   const waylinesXMLObj = removeTextKey(waylinesXMLJSON.Folder)
   if (!waylinesXMLObj.Placemark.length) return
   const allPoint = waylinesXMLObj.Placemark.map(item => item.Point.coordinates.split(','))
   flyVisual(allPoint, viewer)
   flyVisual(allPoint, taskDetailsViewer?.value)
   drawWayline(waylinesXMLObj)
}
const removeMap = () => {
   viewer.entities.removeAll()
   viewer.destroy()
   taskDetailsViewer?.value.entities.removeAll()
   taskDetailsViewer?.value.destroy()
}
let viewInfoFrustum
// 设置视椎
const setCreateFrustum = () => {
   const deviceInfo = deviceOsdInfo.value?.data?.host
   if (!deviceInfo) return
   const host = deviceOsdInfo.value?.data?.host
   if (!host) return
   viewInfoFrustum?.clear()
   if ([14, 0].includes(deviceInfo.mode_code)) return
   const attitude_head = 180 + deviceInfo.attitude_head
   const gimbal_pitch = 90 - Number(deviceInfo?.payloads[0]?.gimbal_pitch) || 0
   viewInfoFrustum = new CreateFrustum(viewer, {
   if ([14, 0].includes(host.mode_code)) return
   const attitude_head = 180 + host.attitude_head
   const gimbal_pitch = 90 - Number(host?.payloads[0]?.gimbal_pitch) || 0
   viewInfoFrustum = new CreateFrustum(taskDetailsViewer?.value, {
      position: {
         longitude: deviceInfo.longitude,
         latitude: deviceInfo.latitude,
         altitude: deviceInfo.height,
         longitude: host.longitude,
         latitude: host.latitude,
         altitude: host.height,
      },
      width: 30,
      height: 30,