4.7 KiB
4.7 KiB
🔧 QB303设备图标显示问题修复指南
🎯 问题分析
根据您的测试日志,QB303设备数据处理完全正常,但图标无法显示。错误信息:
GET http://localhost:3003/img/flyDevices.jpg 404 (Not Found)
Error loading image for billboard: [object Event]
✅ 已完成的修复
1. 图标路径修复
// 修复前:错误的路径
return '/img/flyDevices.jpg';
// 修复后:包含正确的base路径
return '/3dScreen/img/flyDevices.jpg';
2. 添加图标测试工具
// 新增测试命令
testIconPath() // 测试图标是否能正确加载
🚀 测试步骤
步骤1:测试图标路径
// 在浏览器控制台执行
testIconPath()
预期结果:
=== 测试QB303设备图标路径 ===
图标路径: /3dScreen/img/flyDevices.jpg
✅ 图标加载成功!
图标尺寸: XXXxXXX
步骤2:重新测试QB303设备
// 测试QB303设备数据
testQB303Data()
步骤3:强制刷新显示
// 如果仍不显示,强制刷新
forceRefreshQB303()
步骤4:飞行到设备位置
// 飞行到QB303设备位置查看
window.m3Data.map.flyTo({
destination: Cesium.Cartesian3.fromDegrees(112.8945530952381, 28.20648476190476, 1000)
});
🔍 调试信息
您的设备数据(正常)
{
"equipmentId": "dy04",
"latitude": 28.20648476190476,
"longitude": 112.8945530952381,
"altitude": 200,
"online_status": true,
"battleUnitCode": "dy04"
}
设备创建日志(正常)
✅ 加载QB303设备到地图: dy04
✅ 创建新的QB303设备图标: dy04
✅ QB303设备 dy04 已添加到地图
问题定位
- ❌ 图标路径错误 (已修复)
- ✅ 数据处理正常
- ✅ 设备创建正常
- ✅ 位置坐标正确
📊 修复后的预期效果
修复后,QB303设备应该:
- 📍 位置显示: 湖南省坐标 (112.895°E, 28.206°N)
- 🖼️ 图标显示: 使用
flyDevices.jpg图标 - 🏷️ 标签显示: "QB303-dy04" 绿色标签
- 🖱️ 点击交互: 点击显示设备详情
- 🔄 实时更新: 位置和姿态更新
🚨 如果问题仍然存在
备选图标路径测试
// 测试不同的图标路径
const testPaths = [
'/3dScreen/img/flyDevices.jpg',
'./img/flyDevices.jpg',
'img/flyDevices.jpg',
'/img/flyDevices.jpg'
];
testPaths.forEach(path => {
const img = new Image();
img.onload = () => console.log('✅ 成功:', path);
img.onerror = () => console.log('❌ 失败:', path);
img.src = path;
});
使用备用图标
如果 flyDevices.jpg 仍然无法加载,可以临时使用其他图标:
// 在aixiaorui.ts中修改getQB303DeviceIcon方法
getQB303DeviceIcon(): string {
// 使用备用图标
return '/3dScreen/img/marker/plane-blue.png'; // 蓝色飞机图标
// 或者
return '/3dScreen/img/otherEquipment.png'; // 其他装备图标
}
手动创建测试图标
// 手动创建测试图标验证地图显示
const testIcon = new mars3d.graphic.BillboardEntity({
position: [112.8945530952381, 28.20648476190476, 200],
style: {
image: '/3dScreen/img/marker/plane-blue.png', // 使用已知存在的图标
scale: 1.0,
label: {
text: 'TEST-QB303',
fillColor: Cesium.Color.RED
}
}
});
window.m3Data.graphicLayer.addGraphic(testIcon);
console.log('手动测试图标已添加');
🎮 完整测试流程
// 完整的测试和修复流程
console.log('=== QB303设备图标修复测试 ===');
// 1. 测试图标路径
testIconPath();
// 等待2秒后执行下一步
setTimeout(() => {
// 2. 测试QB303设备数据
testQB303Data();
setTimeout(() => {
// 3. 强制刷新显示
forceRefreshQB303();
setTimeout(() => {
// 4. 飞行到设备位置
window.m3Data.map.flyTo({
destination: Cesium.Cartesian3.fromDegrees(112.8945530952381, 28.20648476190476, 1000)
});
console.log('✅ 测试完成,请检查地图显示');
}, 1000);
}, 1000);
}, 2000);
📋 快速命令参考
// === 图标测试 ===
testIconPath() // 测试图标路径
// === QB303调试 ===
testQB303Data() // 测试QB303数据
forceRefreshQB303() // 强制刷新显示
// === 地图控制 ===
// 飞行到QB303位置
window.m3Data.map.flyTo({
destination: Cesium.Cartesian3.fromDegrees(112.895, 28.206, 1000)
});
// 检查图层内容
console.log('图层数量:', window.m3Data.graphicLayer.length);
现在图标路径已经修复,请测试 testIconPath() 确认图标能正确加载,然后重新测试QB303设备显示!🚁🛠️✨