From 0d2edb0421b6aaf586a9df317e6076231f00d919 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Tue, 25 Feb 2025 09:57:08 +0800
Subject: [PATCH] 修改航线和提交安装组件
---
package-lock.json | 27 +++++++++
package.json | 1
src/views/DronePilotDetails.vue | 7 ++
src/views/hooks/droneFly.ts | 112 ++++++++++++++++++-------------------
4 files changed, 90 insertions(+), 57 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 1f2f40a..fe6f1ae 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27,6 +27,7 @@
"query-string": "^7.0.1",
"reconnecting-websocket": "^4.4.0",
"v-viewer": "^3.0.11",
+ "vant": "^4.9.17",
"vconsole": "^3.15.1",
"video.js": "^8.5.2",
"viewerjs": "^1.11.6",
@@ -3198,6 +3199,19 @@
"version": "0.0.16",
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
"integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+ },
+ "node_modules/@vant/popperjs": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+ "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+ },
+ "node_modules/@vant/use": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz",
+ "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
},
"node_modules/@videojs/http-streaming": {
"version": "3.16.2",
@@ -6956,6 +6970,19 @@
"vue": "^3.0.0"
}
},
+ "node_modules/vant": {
+ "version": "4.9.17",
+ "resolved": "https://registry.npmmirror.com/vant/-/vant-4.9.17.tgz",
+ "integrity": "sha512-so/plH9G4au9rUrqy7yLB1slmZqY2Ub3Gq8ckMSQXbUEwTzmViVjEDqh/hNck/XELxwL+gIy2hLXiSgVcf2EBQ==",
+ "dependencies": {
+ "@vant/popperjs": "^1.3.0",
+ "@vant/use": "^1.6.0",
+ "@vue/shared": "^3.5.13"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
"node_modules/vconsole": {
"version": "3.15.1",
"resolved": "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.1.tgz",
diff --git a/package.json b/package.json
index b512b80..ea58a6f 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
"query-string": "^7.0.1",
"reconnecting-websocket": "^4.4.0",
"v-viewer": "^3.0.11",
+ "vant": "^4.9.17",
"vconsole": "^3.15.1",
"video.js": "^8.5.2",
"viewerjs": "^1.11.6",
diff --git a/src/views/DronePilotDetails.vue b/src/views/DronePilotDetails.vue
index b3ce7be..59bd095 100644
--- a/src/views/DronePilotDetails.vue
+++ b/src/views/DronePilotDetails.vue
@@ -573,6 +573,13 @@
onBeforeUnmount(() => {
window.removeEventListener('orientationchange', checkOrientation);
window.removeEventListener('resize', checkOrientation);
+ // 销毁地图实例
+ if (window.cesiumViewer && !window.cesiumViewer.isDestroyed()) {
+ window.cesiumViewer.destroy();
+ }
+ if (globalViewer && !globalViewer.isDestroyed()) {
+ globalViewer.destroy();
+ }
if (player) {
player.dispose();
}
diff --git a/src/views/hooks/droneFly.ts b/src/views/hooks/droneFly.ts
index a42f788..f75d3b7 100644
--- a/src/views/hooks/droneFly.ts
+++ b/src/views/hooks/droneFly.ts
@@ -127,65 +127,63 @@
}
}
const imgRightBlue = new URL('@/assets/images/arrow-right-pink.png', import.meta.url).href
- // 暂时把航线屏蔽
// 无人机路线轨迹,判断是否存在drone_route_remove
- // if (getEntityById('drone_route_remove')) {
- // window.cesiumViewer.entities.add({
- // name: 'drone_route_remove',
- // id: 'drone_route_remove',
- // polyline: {
- // width: 7,
- // positions: previousPositions,
- // material: new ImageTrailMaterial({
- // color: globalCesium.Color.ORANGE,
- // speed: 10,
- // image: imgRightBlue,
- // repeat: { x: 1, y: 0 },
- // }),
- // clampToGround: false,
- // },
- // })
- // }
+ if (getEntityById('drone_route_remove')) {
+ window.cesiumViewer.entities.add({
+ name: 'drone_route_remove',
+ id: 'drone_route_remove',
+ polyline: {
+ width: 7,
+ positions: previousPositions,
+ material: new ImageTrailMaterial({
+ color: globalCesium.Color.ORANGE,
+ speed: 10,
+ image: imgRightBlue,
+ repeat: { x: 1, y: 0 },
+ }),
+ clampToGround: false,
+ },
+ })
+ }
- // if (data.deviceInfo[data.currentSn].mode_code && [3, 4, 5, 9, 10].includes(deviceInfo.mode_code)) {
- // if (switchSaving) return (switchSaving = false)
- // // console.log('5555', data.deviceInfo[data.currentSn].longitude)
- // const newPositions = globalCesium.Cartesian3.fromDegrees(
- // data.deviceInfo[data.currentSn].longitude,
- // data.deviceInfo[data.currentSn].latitude,
- // Math.floor(viewDroneInfo.elevation),
- // )
- // //若刷新,恢复无人机之前的路线轨迹
- // const dataIndexedDB = await IndexedDBService.getDataById(wId)
- // if (previousPositions.length == 0 && dataIndexedDB) {
- // previousPositions = previousPositions.concat(dataIndexedDB?.temporaryflightData)
- // } else {
- // previousPositions = previousPositions.concat(newPositions)
- // }
- // // 保存无人机当前执行的路线,防止刷新数据丢失
- // if (!dataIndexedDB) {
- // await IndexedDBService.addData({
- // id: wId,
- // temporaryflightData: previousPositions,
- // })
- // } else {
- // await IndexedDBService.updateData(wId, {temporaryflightData: previousPositions})
- // }
- // // 更新线段的位置
- // const drone_route_remove = getEntityById('drone_route_remove')
- // if (!drone_route_remove) return
- // drone_route_remove.polyline.positions = previousPositions
- // drone_route_remove.polyline._material._repeat._value.x = Math.floor(previousPositions.length / 7)
- // } else if ([0, 14].includes(deviceInfo.mode_code)) {
- // previousPositions = []
- // await IndexedDBService.deleteData(wId)
- // const drone_route_remove = getEntityById('drone_route_remove')
- // if (!drone_route_remove) return
- // drone_route_remove.polyline.positions = previousPositions
- // removeById('drone_route_remove')
- // viewInfoFrustum?.clear()
- // viewInfoFrustum = null
- // }
+ if (data.deviceInfo[data.currentSn].mode_code && [3, 4, 5, 9, 10].includes(deviceInfo.mode_code)) {
+ if (switchSaving) return (switchSaving = false)
+ const newPositions = globalCesium.Cartesian3.fromDegrees(
+ data.deviceInfo[data.currentSn].longitude,
+ data.deviceInfo[data.currentSn].latitude,
+ Math.floor(viewDroneInfo.elevation),
+ )
+ //若刷新,恢复无人机之前的路线轨迹
+ const dataIndexedDB = await IndexedDBService.getDataById(wId)
+ if (previousPositions.length == 0 && dataIndexedDB) {
+ previousPositions = previousPositions.concat(dataIndexedDB?.temporaryflightData)
+ } else {
+ previousPositions = previousPositions.concat(newPositions)
+ }
+ // 保存无人机当前执行的路线,防止刷新数据丢失
+ if (!dataIndexedDB) {
+ await IndexedDBService.addData({
+ id: wId,
+ temporaryflightData: previousPositions,
+ })
+ } else {
+ await IndexedDBService.updateData(wId, {temporaryflightData: previousPositions})
+ }
+ // 更新线段的位置
+ const drone_route_remove = getEntityById('drone_route_remove')
+ if (!drone_route_remove) return
+ drone_route_remove.polyline.positions = previousPositions
+ drone_route_remove.polyline._material._repeat._value.x = Math.floor(previousPositions.length / 7)
+ } else if ([0, 14].includes(deviceInfo.mode_code)) {
+ previousPositions = []
+ await IndexedDBService.deleteData(wId)
+ const drone_route_remove = getEntityById('drone_route_remove')
+ if (!drone_route_remove) return
+ drone_route_remove.polyline.positions = previousPositions
+ removeById('drone_route_remove')
+ viewInfoFrustum?.clear()
+ viewInfoFrustum = null
+ }
}
if (data.currentType === EDeviceTypeName.Dock && data.dockInfo[data.currentSn]) {
if (!deviceInfo?.basic_osd?.longitude || !deviceInfo?.basic_osd?.latitude) return
--
Gitblit v1.9.3