Merge branch 'main' of ssh://git.wash-painting.cn:2222/cg/-----

This commit is contained in:
2025-12-17 23:56:37 +08:00
4 changed files with 58 additions and 32 deletions

View File

@@ -427,6 +427,7 @@ const wsConnected = ref(false)
const droneData = ref(null)
const isFlying = ref(false)
const droneMarker = ref(null)
const drone2Marker = ref(null)
let wsClient = null
let mockDataGenerator = null
const isInFence = ref(true)
@@ -558,42 +559,43 @@ let conn = null;
// 初始化WebSocket连接
const initWebSocket = () => {
// 使用模拟数据生成器因为目前没有真实WebSocket服务器
mockDataGenerator = new MockWebSocketDataGenerator({
interval: 500, // 内部500ms生成一次数据用于平滑
startLat: 39.90923, // 北京天安门附近
startLng: 116.397428,
speed: 0.00005 // 移动速度
})
// mockDataGenerator = new MockWebSocketDataGenerator({
// interval: 500, // 内部500ms生成一次数据用于平滑
// startLat: 39.90923, // 北京天安门附近
// startLng: 116.397428,
// speed: 0.00005 // 移动速度
// })
// 监听数据(使用节流,大幅降低更新频率)
mockDataGenerator.start((data) => {
const now = Date.now()
// 只更新数据状态,不触发地图更新
droneData.value = data
// // 监听数据(使用节流,大幅降低更新频率)
// mockDataGenerator.start((data) => {
// const now = Date.now()
// // 只更新数据状态,不触发地图更新
// droneData.value = data
// 节流:降低地图更新频率
if (now - lastUpdateTime >= UPDATE_INTERVAL) {
lastUpdateTime = now
handleDroneData(data)
}
})
// // 节流:降低地图更新频率
// if (now - lastUpdateTime >= UPDATE_INTERVAL) {
// lastUpdateTime = now
// handleDroneData(data)
// }
// })
wsConnected.value = true
ElMessage.success('无人机数据连接成功(模拟模式)')
ElMessage.success('无人机数据连接成功')
}
// 起飞处理
const handleTakeoff = () => {
// 检查是否已有围栏
if (fences.value.length === 0) {
ElMessage.warning('请先绘制电子围栏后再起飞')
return
}
// if (fences.value.length === 0) {
// ElMessage.warning('请先绘制电子围栏后再起飞')
// return
// }
// 如果未连接,先连接
if (!wsConnected.value) {
initWebSocket()
}
// // 如果未连接,先连接
// if (!wsConnected.value) {
// initWebSocket()
// }
ctrl.TakeoffAndAutoExecTask({});
// 设置飞行状态
isFlying.value = true
@@ -622,7 +624,22 @@ const toggleWebSocket = () => {
initWebSocket()
conn = ctrl.Message();
conn.onDroneGPS = (data) => {
console.log(data);
// console.log(data);
const drone1 = data.drone_1;
const drone2 = data.drone_2;
const point = gcoord.transform(
[drone1.longitude, drone1.latitude],
gcoord.WGS84, // 当前坐标系
gcoord.GCJ02, // 目标坐标系
);
const point2 = gcoord.transform(
[drone2.longitude, drone2.latitude],
gcoord.WGS84, // 当前坐标系
gcoord.GCJ02, // 目标坐标系
);
console.log(point, point2);
// updateDroneMarker(point[0], point[1], drone1.heading);
// updateDrone2Marker(point2[0], point2[1], drone2.heading);
};
}
}
@@ -1466,6 +1483,10 @@ onUnmounted(() => {
map?.remove(droneMarker.value)
droneMarker.value = null
}
if (drone2Marker.value) {
map?.remove(drone2Marker.value)
drone2Marker.value = null
}
if (mouseTool) {
mouseTool.close()