Files
xiaomubiao-master/外部WebSocket设备标注集成说明.md
2026-05-22 16:13:20 +08:00

256 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 外部WebSocket设备标注集成说明
## 概述
本文档说明如何使用新创建的外部WebSocket设备标注功能该功能专门用于处理来自外部WebSocket的无人装备数据并在地图上绘制相应的标注。
## 新增方法
### 1. 主要方法
#### `加载外部WebSocket设备标注(deviceData: any)`
- **功能**: 处理外部WebSocket数据并在地图上创建/更新设备标注
- **参数**: `deviceData` - 外部WebSocket消息数据
- **返回**: 无
#### `removeExternalDeviceAnnotation(deviceSn: string)`
- **功能**: 移除指定设备的地图标注
- **参数**: `deviceSn` - 设备序列号
- **返回**: 无
#### `clearAllExternalDeviceAnnotations()`
- **功能**: 清除所有外部设备的地图标注
- **参数**: 无
- **返回**: 无
#### `getExternalDeviceAnnotations()`
- **功能**: 获取所有外部设备标注列表
- **参数**: 无
- **返回**: 设备标注数组
### 2. 辅助方法
#### `extractExternalDeviceInfo(data: any)`
- **功能**: 从外部WebSocket数据中提取设备信息
- **参数**: `data` - 原始WebSocket数据
- **返回**: 标准化的设备信息对象
#### `getDeviceIcon(deviceType: string)`
- **功能**: 根据设备类型获取对应的图标URL
- **参数**: `deviceType` - 设备类型('unmanned_vehicle' 或 'drone'
- **返回**: 图标URL字符串
#### `addStrikeRangeForExternalDevice(deviceSn: string, deviceInfo: any)`
- **功能**: 为外部设备添加侦察范围显示
- **参数**:
- `deviceSn` - 设备序列号
- `deviceInfo` - 设备信息对象
- **返回**: 无
## 支持的数据格式
### 1. 外部WebSocket数据格式您提供的数据
```javascript
{
type: "unmanned_vehicle_data",
topic: "/CKC/WRJ/PTZT",
deviceType: "unmanned_vehicle",
data: {
XXLX: "PTZT",
XXXX: [{
BBH: "V000.00.100",
CKZD: {
GC: 55.6,
JD: 119.068079,
WD: 32.04998,
ZBID: 'b'
},
WRZB: {
GC: '55.6',
JD: '119.068',
WD: '32.05',
ZBID: '10002000'
},
JKZT: {
ZHZT: '1' // 1表示在线0表示离线
},
YDFX: 0, // 运动方向
YDSD: 0, // 运动速度
SBSJ: "2025-8-15 17:32:57"
}]
},
timestamp: "2025-09-04T12:37:25.1932Z"
}
```
### 2. 简化位置数据格式
```javascript
{
type: "position",
device_sn: "FF2023081601",
device_name: "哈瓦战斧",
longitude: 118.10067,
latitude: 32.511448,
altitude: 200,
online_status: true,
strikeRange: 10
}
```
## 集成步骤
### 1. 在WebSocket消息处理中调用
```javascript
// 在您的WebSocket消息处理函数中
import { Xiaorui } from '@/utils/aixiaorui';
// 假设您有一个Xiaorui实例
let xiaoruiInstance: Xiaorui;
// 处理外部WebSocket消息
function handleExternalWebSocketMessage(data) {
console.log('处理外部WebSocket消息:', data);
try {
// 检查是否是无人车数据格式
if (data.type === 'unmanned_vehicle_data' && data.data && data.data.XXXX) {
console.log('检测到无人车数据,开始在地图上绘制...');
// 调用新的外部设备标注方法
if (xiaoruiInstance) {
xiaoruiInstance.加载外部WebSocket设备标注(data);
}
}
// 处理其他类型的外部数据
else if (data.type === 'position' && data.longitude && data.latitude) {
console.log('检测到位置数据,开始在地图上绘制...');
if (xiaoruiInstance) {
xiaoruiInstance.加载外部WebSocket设备标注(data);
}
}
} catch (error) {
console.error('处理外部WebSocket消息失败:', error);
}
}
```
### 2. 在Vue组件中使用
```vue
<template>
<div>
<!-- 您的地图组件 -->
<div ref="mapContainer"></div>
</div>
</template>
<script>
import { Xiaorui } from '@/utils/aixiaorui';
import EventBus from '@/event-bus';
export default {
data() {
return {
xiaoruiInstance: null
};
},
mounted() {
// 初始化Xiaorui实例
this.xiaoruiInstance = new Xiaorui();
// 假设您有地图初始化代码
// this.xiaoruiInstance.map = yourMapInstance;
// this.xiaoruiInstance.graphicLayer = yourGraphicLayer;
// 监听外部WebSocket消息
EventBus.on('ExternalWebSocket-Message', (payload) => {
this.handleExternalWebSocketMessage(payload.data);
});
},
methods: {
// 处理外部WebSocket消息
handleExternalWebSocketMessage(data) {
if (this.xiaoruiInstance) {
this.xiaoruiInstance.加载外部WebSocket设备标注(data);
}
},
// 移除设备标注
removeDevice(deviceSn) {
if (this.xiaoruiInstance) {
this.xiaoruiInstance.removeExternalDeviceAnnotation(deviceSn);
}
},
// 清除所有设备标注
clearAllDevices() {
if (this.xiaoruiInstance) {
this.xiaoruiInstance.clearAllExternalDeviceAnnotations();
}
}
}
};
</script>
```
## 功能特性
### 1. 自动设备类型识别
- 根据数据格式自动识别设备类型(无人车/无人机)
- 为不同设备类型使用不同的图标和样式
### 2. 实时位置更新
- 支持设备位置的实时更新
- 自动同步侦察范围位置
### 3. 在线状态显示
- 根据设备在线状态显示不同颜色
- 在线设备:绿色高亮
- 离线设备:红色高亮
### 4. 侦察范围显示
- 自动从设备列表获取侦察范围数据
- 支持右键切换侦察范围显示/隐藏
- 流动边框效果
### 5. 设备信息标签
- 显示设备名称和序列号
- 支持距离显示条件50km内可见
- 带背景的标签样式
## 注意事项
1. **地图实例初始化**: 确保在调用标注方法前Xiaorui实例的地图和图形图层已正确初始化。
2. **数据格式兼容**: 新方法支持多种数据格式但主要针对您提供的外部WebSocket数据格式进行了优化。
3. **设备图标**: 确保`/src/assets/icons/car.png`文件存在,用于无人车图标显示。
4. **内存管理**: 使用`removeExternalDeviceAnnotation``clearAllExternalDeviceAnnotations`方法及时清理不需要的标注,避免内存泄漏。
5. **错误处理**: 所有方法都包含错误处理,建议在生产环境中添加适当的日志记录。
## 调试建议
1. 在浏览器控制台中查看相关日志输出
2. 使用`getExternalDeviceAnnotations()`方法检查当前标注状态
3. 确保WebSocket数据格式符合预期
4. 检查地图实例和图形图层的初始化状态
## 扩展功能
如果需要添加更多功能,可以考虑:
1. 添加设备轨迹显示
2. 支持更多设备类型
3. 添加设备信息弹窗
4. 支持设备分组显示
5. 添加设备搜索和过滤功能