forked from drone/command-center-dashboard

罗广辉
2025-04-19 b602bfa7181535a43cfb13859ac0c77de7a2833f
src/components/CurrentTaskDetails/RealTimeMap.vue
@@ -6,7 +6,6 @@
import AmapMercatorTilingScheme from '@/utils/cesium/AmapMercatorTilingScheme'
import { Cartesian3, Terrain, Viewer } from 'cesium'
import endPointImg from '@/assets/images/EndPointicon.png'
import startPointImg from '@/assets/images/Startingpointicon.png'
import { addBlueFilter } from '@/utils/cesium/common'
import { analyzeKmzFile, removeTextKey, XMLToJSON } from '@/utils/cesium/kmz'
import rwqfdImg from '@/assets/images/signMachineNest/rwqfd.png'
@@ -14,6 +13,7 @@
import lineImg from '@/assets/images/arrow-right-blue.png'
import { flyVisual } from '@/utils/cesium/mapUtil'
import CreateFrustum from '@/utils/cesium/frustum/CreateFrustum'
import aircraftGltf from '@/assets/gltf/aircraft.gltf'
const imageryProvider_ammapSL = new Cesium.UrlTemplateImageryProvider({
   url: 'https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
@@ -114,10 +114,7 @@
   drawWayline(waylinesXMLObj)
}
const removeMap = () => {
   taskDetailsViewer?.value.entities.removeAll()
   taskDetailsViewer?.value.destroy()
}
let viewInfoFrustum
// 设置视椎
const setCreateFrustum = () => {
@@ -144,12 +141,41 @@
   })
}
watch(deviceOsdInfo, setCreateFrustum)
function setAircraftGltf() {
   const host = deviceOsdInfo.value?.data?.host
   const aircraftEntity = taskDetailsViewer.value.entities.getById('aircraftGltf')
   const position = Cesium.Cartesian3.fromDegrees(host.longitude, host.latitude, host.height)
   if (aircraftEntity) {
      aircraftEntity.position = new Cesium.ConstantPositionProperty(position)
      return
   }
   taskDetailsViewer.value.entities.add({
      id: 'aircraftGltf',
      position,
      model: {
         uri: aircraftGltf, // 或 .glb
         scale: 1.0, // 缩放比例
         minimumPixelSize: 64, // 最小像素尺寸(保证模型远处可见)
         maximumScale: 128, // 最大缩放(可选)
      },
   })
}
watch(deviceOsdInfo, () => {
   setCreateFrustum()
   setAircraftGltf()
})
watch(taskDetails, () => {
   if (taskDetails.value.way_lines.length) {
      parsingFiles(taskDetails.value.way_lines[0].url)
   }
})
const removeMap = () => {
   taskDetailsViewer?.value.entities.removeAll()
   taskDetailsViewer?.value.destroy()
}
onBeforeUnmount(() => {
   removeMap()
})
@@ -162,7 +188,6 @@
</script>
<style scoped lang="scss">
#currentTaskMap {
   :deep() {
      .cesium-viewer {
         width: 100%;