Files
release/test-map-jump.html
bruno 78d9449db8 feat: 优化总览大屏地图搜索跳转功能
🗺️ 地图跳转功能改进:
- 修复员工搜索后地图不跳转到员工位置的问题
- 新增 jumpToUserLocation() 函数实现智能地图定位
- 优化缩放策略:保持用户当前视野高度,只改变中心点
- 支持多数据源定位:从健康数据和告警数据中查找用户位置
- 增强坐标验证:过滤无效GPS坐标,提升定位准确性
- 完善错误处理:详细的调试日志和异常处理机制

🎯 用户体验提升:
- 地图智能平移到员工位置,无需手动调整视野
- 支持模糊搜索和下拉选择两种定位方式
- 流畅的视觉过渡效果,提供良好交互体验
- 解决"定位后视角太高需要手动放大"的问题

🔧 技术优化:
- 修复 bigScreen/.gitignore 文件,移除 * 通配符忽略规则
- 保留 templates/ 目录,确保核心模板文件正常跟踪
- 更新项目文档至 v1.3.2,包含详细功能说明

📝 文档更新:
- 更新 README-CICD-v1.3.1.md 版本至 1.3.2
- 添加地图跳转功能的详细说明和使用方法
- 包含完整的测试文档和故障排除指南
2025-08-14 21:03:26 +08:00

140 lines
5.8 KiB
HTML
Raw Permalink 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.
<!DOCTYPE html>
<html>
<head>
<title>地图跳转功能测试</title>
<meta charset="UTF-8">
</head>
<body>
<h1>🗺️ 总览大屏地图跳转功能测试</h1>
<h2>🔍 问题分析</h2>
<p><strong>原问题</strong>:选择对应员工名后地图没有跳转到该员工所在的位置</p>
<h2>✅ 解决方案</h2>
<h3>1. 问题根因</h3>
<ul>
<li>用户选择员工后,系统只调用了 <code>updateMapData()</code> 过滤数据</li>
<li>缺少地图自动跳转到用户位置的逻辑</li>
<li>没有根据用户坐标调整地图视图中心点</li>
</ul>
<h3>2. 修复内容</h3>
<ul>
<li>✅ 在用户选择事件中添加了 <code>jumpToUserLocation()</code> 调用</li>
<li>✅ 新增 <code>jumpToUserLocation(userId, data)</code> 函数实现地图跳转</li>
<li>✅ 支持从健康数据和告警数据中查找用户位置</li>
<li>✅ 包含坐标有效性验证和错误处理</li>
<li>✅ 保持当前缩放级别不变,只改变地图中心点</li>
</ul>
<h3>3. 代码修改</h3>
<h4>用户选择事件处理(5880行附近)</h4>
<pre><code>// 用户选择变化时刷新地图
$('#userSelect').change(function() {
currentUser=$(this).val()
console.log('currentUser',currentUser);
updateMapData(lastTotalInfo);
// 🎯 新增:如果选择了特定用户,地图跳转到该用户位置
if (currentUser && lastTotalInfo) {
jumpToUserLocation(currentUser, lastTotalInfo);
}
});</code></pre>
<h4>新增函数:jumpToUserLocation(7203行附近)</h4>
<pre><code>// 地图跳转到指定用户位置的函数
window.jumpToUserLocation = function(userId, data) {
console.log('jumpToUserLocation - userId:', userId, 'data:', data);
if (!userId || !data || !map) {
console.warn('❌ 跳转用户位置失败 - 缺少必要参数');
return;
}
try {
// 从健康数据中查找用户
const healths = data.health_data?.healthData || [];
const userHealth = healths.find(h =>
String(h.user_id || h.userId) === String(userId) ||
String(h.id) === String(userId)
);
if (userHealth && userHealth.longitude && userHealth.latitude) {
const lng = parseFloat(userHealth.longitude);
const lat = parseFloat(userHealth.latitude);
// 验证坐标有效性并跳转
if (isValidCoordinate(lng, lat)) {
console.log(`🎯 地图跳转到用户位置: ${userHealth.userName} (${lng}, ${lat})`);
map.setCenter([lng, lat]);
// 保持当前缩放级别不变,只改变中心点
}
} else {
// 如果健康数据中没有,从告警数据中查找
// ... 告警数据查找逻辑
}
} catch (error) {
console.error('❌ 跳转用户位置出错:', error);
}
};</code></pre>
<h2>🧪 测试方法</h2>
<ol>
<li><strong>访问大屏页面</strong>:<code>http://localhost:5001/main?customerId=1</code></li>
<li><strong>打开浏览器开发者工具</strong>:查看控制台输出</li>
<li><strong>使用搜索功能</strong>:
<ul>
<li>在搜索框中输入员工姓名进行模糊搜索</li>
<li>或在"选择用户"下拉框中选择特定员工</li>
</ul>
</li>
<li><strong>观察地图行为</strong>:
<ul>
<li>地图应该自动跳转到选中员工的位置</li>
<li>缩放级别应该调整到15级以突出显示</li>
<li>控制台应该显示跳转日志信息</li>
</ul>
</li>
</ol>
<h2>📋 功能特性</h2>
<ul>
<li>🎯 <strong>智能定位</strong>:自动跳转到选中员工的GPS位置</li>
<li>🔍 <strong>多数据源</strong>:支持从健康数据和告警数据中查找位置</li>
<li>✅ <strong>坐标验证</strong>:验证GPS坐标有效性,过滤无效数据</li>
<li>🎬 <strong>视觉优化</strong>:保持当前视野高度,只平移到用户位置</li>
<li>📊 <strong>调试信息</strong>:详细的控制台日志,便于排查问题</li>
<li>🛡️ <strong>错误处理</strong>:完善的异常处理和降级策略</li>
</ul>
<h2>🎮 使用场景</h2>
<ul>
<li><strong>员工定位</strong>:快速找到特定员工的实时位置</li>
<li><strong>紧急响应</strong>:应急情况下快速定位相关人员</li>
<li><strong>区域管理</strong>:查看不同部门员工的地理分布</li>
<li><strong>健康监控</strong>:关注特定员工的健康状态和位置</li>
</ul>
<h2>🔧 技术细节</h2>
<ul>
<li><strong>地图库</strong>:使用高德地图 API</li>
<li><strong>坐标系统</strong>:支持经纬度坐标系</li>
<li><strong>缩放策略</strong>:保持当前缩放级别不变</li>
<li><strong>数据来源</strong>:health_data.healthData 和 alert_info.alerts</li>
<li><strong>用户匹配</strong>:支持 user_id、userId、id 字段匹配</li>
</ul>
<div style="background: #f0f8ff; border: 1px solid #0084ff; padding: 15px; margin: 20px 0; border-radius: 5px;">
<h3>✨ 现在的体验</h3>
<p>选择员工后,地图会自动:</p>
<ul>
<li>🎯 平移到该员工的GPS位置</li>
<li>👁️ 保持当前视野高度不变</li>
<li>💡 在控制台显示跳转信息</li>
<li>⚡ 提供流畅的视觉过渡效果</li>
</ul>
</div>
</body>
</html>