Files
xiaomubiao-master/QB303_DEBUG_GUIDE.md
2026-05-22 16:13:20 +08:00

4.4 KiB
Raw Blame History

QB303设备地图显示调试指南

🔧 问题分析

根据您的测试日志QB303设备数据处理正常但在地图上没有显示。主要问题和解决方案

🚀 修复内容

1. 图标路径修复

// 修改前:使用不存在的图标方法
return this.feiji('qb303') || this.feiji('jiantou');

// 修改后:使用您指定的图标路径
return '/img/flyDevices.jpg'; // 使用QB303设备专用图标

2. 图标类型更改

// 修改前使用ModelEntity3D模型可能不显示
const deviceImage = new mars3d.graphic.ModelEntity({
  style: {
    url: this.getQB303DeviceIcon(),
    // ...
  }
});

// 修改后使用BillboardEntity2D图片更稳定
const deviceImage = new mars3d.graphic.BillboardEntity({
  style: {
    image: this.getQB303DeviceIcon(),
    scale: 0.8,
    // ...
  }
});

3. 角度处理修复

// 修改前使用heading可能不支持
heading: data.yaw || 0

// 修改后使用rotation并转换为弧度
rotation: Cesium.Math.toRadians(data.yaw || 0)

4. 强制刷新功能

添加了强制刷新方法来解决设备不显示的问题:

// 新增方法
forceRefreshQB303Devices() {
  // 清理现有设备图标
  // 重新创建所有QB303设备
}

🎮 测试方法

方法1重新测试QB303数据

// 在浏览器控制台执行
testQB303Data()

方法2强制刷新显示

// 在浏览器控制台执行
forceRefreshQB303()

方法3检查地图图层

// 检查地图实例和图层
console.log('地图实例:', window.m3Data);
console.log('图形图层:', window.m3Data.graphicLayer);
console.log('QB303设备数据:', window.m3Data.qb303DeviceData);
console.log('图层中的图形数量:', window.m3Data.graphicLayer.length);

📊 调试信息

您的测试数据

{
  "equipmentId": "dy04",
  "latitude": 28.20648476190476,
  "longitude": 112.8945530952381,
  "altitude": 200,
  "online_status": true,
  "battleUnitCode": "dy04"
}

地理位置

  • 坐标: 28.206°N, 112.895°E
  • 高度: 200米
  • 位置: 湖南省境内
  • 在线状态: 在线

🔍 预期效果

修复后QB303设备应该

  1. 图标显示: 使用/img/flyDevices.jpg图标
  2. 位置准确: 显示在湖南省指定坐标
  3. 高度正确: 距地面200米
  4. 标签显示: "QB303-dy04"绿色标签
  5. 点击交互: 点击显示设备详情
  6. 实时更新: 数据变化时位置更新

🚨 故障排除

如果设备仍不显示

  1. 检查图标文件
// 确认图标文件存在
fetch('/img/flyDevices.jpg').then(r => console.log('图标状态:', r.status))
  1. 检查坐标系统
// 确认坐标在有效范围内
console.log('经度:', 112.8945530952381, '(有效范围: -180 到 180)');
console.log('纬度:', 28.20648476190476, '(有效范围: -90 到 90)');
  1. 检查地图视角
// 飞行到设备位置
window.m3Data.map.flyTo({
  destination: Cesium.Cartesian3.fromDegrees(112.8945530952381, 28.20648476190476, 1000)
});
  1. 手动创建测试图标
// 手动在相同位置创建测试图标
const testIcon = new mars3d.graphic.BillboardEntity({
  position: [112.8945530952381, 28.20648476190476, 200],
  style: {
    image: '/img/flyDevices.jpg',
    scale: 1.0,
    label: {
      text: 'TEST-QB303',
      fillColor: Cesium.Color.RED
    }
  }
});
window.m3Data.graphicLayer.addGraphic(testIcon);

📋 检查清单

  • 图标路径: 使用正确的/img/flyDevices.jpg
  • 图标类型: 改为BillboardEntity
  • 角度处理: 使用rotation和弧度转换
  • 强制刷新: 添加forceRefreshQB303Devices方法
  • 调试日志: 增加详细的控制台输出
  • 全局方法: 添加forceRefreshQB303()便于测试

🎯 下次测试步骤

  1. 刷新页面重新加载修复后的代码
  2. 执行测试testQB303Data()
  3. 强制刷新forceRefreshQB303()
  4. 检查地图在湖南省附近查看QB303设备图标
  5. 点击测试:点击设备图标确认交互功能

如果按照以上步骤操作后设备仍不显示,请提供控制台的详细错误信息,我会进一步排查问题。🚁🗺️