From b602bfa7181535a43cfb13859ac0c77de7a2833f Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Sat, 19 Apr 2025 10:09:01 +0800
Subject: [PATCH] feat: 改造监听ws消息功能,控制台添加gltf模型

---
 src/components/CurrentTaskDetails/RealTimeMap.vue |   39 ++++++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/src/components/CurrentTaskDetails/RealTimeMap.vue b/src/components/CurrentTaskDetails/RealTimeMap.vue
index c5c01bc..3df41ab 100644
--- a/src/components/CurrentTaskDetails/RealTimeMap.vue
+++ b/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%;

--
Gitblit v1.9.3