Files
smart-crop-ui/src/REALTIME_MAP_DISPLAY_UPDATE.md

12 KiB
Raw Blame History

🗺️ 实时位置追踪 - 地图显示更新

🎯 更新内容

将地图显示区域从卡片网格改为图标标记形式,更符合真实地图的交互体验。


🔄 变更对比

旧设计(卡片网格)

┌─────────────────────────────────────┐
│       地图显示区域                   │
├─────────────────────────────────────┤
│ ┌────────┐ ┌────────┐ ┌────────┐   │
│ │农机卡片│ │农机卡片│ │农机卡片│   │
│ │● 名称  │ │● 名称  │ │● 名称  │   │
│ │坐标信息│ │坐标信息│ │坐标信息│   │
│ │[状态]  │ │[状态]  │ │[状态]  │   │
│ └────────┘ └────────┘ └────────┘   │
│ ┌────────┐ ┌────────┐ ┌────────┐   │
│ │农机卡片│ │农机卡片│ │农机卡片│   │
│ └────────┘ └────────┘ └────────┘   │
└─────────────────────────────────────┘

问题:

  • 看起来像普通列表,不像地图
  • 卡片占用空间大
  • 没有地理位置感
  • 不符合地图交互习惯

新设计(图标标记)

┌─────────────────────────────────────┐
│       地图显示区域                   │
│                    [SDK说明]        │
│         🟢                          │
│      约翰迪尔5G-1404                │
│       [作业中]                      │
│                                     │
│                        🔵          │
│                     东方红LX904     │
│                      [行驶中]       │
│                                     │
│    🟡                              │
│ 久保田M954                          │
│  [待机]                            │
│                                     │
│                            🟢      │
│                         雷沃GK100   │
│                          [作业中]   │
└─────────────────────────────────────┘

优点:

  • 像真实地图标记
  • 位置分散,有地理感
  • 简洁清晰
  • 符合用户预期

🎨 界面设计

农机标记组成

    ┌──────┐
    │  🟢  │  ← Icon圆圈10x10状态颜色
    │  ⬛   │     内含白色图标
    └──────┘
       ▼
  ┌─────────┐
  │农机名称  │  ← 名称标签(白底圆角)
  └─────────┘
       ▼
   ┌───────┐
   │ 状态  │   ← 状态徽章(状态颜色)
   └───────┘

状态颜色方案

状态 Icon颜色 文字颜色 示例
作业中 🟢 绿色 text-green-700 bg-green-500
行驶中 🔵 蓝色 text-blue-700 bg-blue-500
待机 🟡 黄色 text-yellow-700 bg-yellow-500
熄火 灰色 text-gray-700 bg-gray-500

位置分布

6个预设位置确保标记分散显示

const positions = [
  { left: '15%', top: '20%' },   // 左上
  { left: '45%', top: '15%' },   // 中上
  { left: '75%', top: '25%' },   // 右上
  { left: '25%', top: '55%' },   // 左中
  { left: '60%', top: '60%' },   // 右中
  { left: '80%', top: '75%' },   // 右下
];

💡 交互功能

1 点击标记

效果: 打开农机详情对话框

显示内容:

  • 农机基本信息
  • 实时位置数据
  • 工作状态
  • 运行参数

2 鼠标悬停

效果: 右侧弹出信息卡片

显示内容:

┌─────────────────┐
│ 约翰迪尔5G-1404 │
├─────────────────┤
│ 型号: 5G-1404   │
│ 速度: 15.3 km/h │
│ 方向: 45°       │
│ 位置: 36.6512° N│
│      117.1201° E│
└─────────────────┘

3 视觉反馈

  • Icon脉动效果animate-pulse
  • 悬停放大(group-hover:scale-110
  • 阴影增强(hover:shadow-lg
  • 平滑过渡(transition-transform

📱 响应式设计

桌面端

  • Icon尺寸: 40x40px
  • 标签正常显示
  • 悬停信息完整

移动端

  • Icon尺寸: 32x32px
  • 标签适应性缩小
  • 点击显示详情(不悬停)

🎯 组件结构

HTML结构

<div class="relative">
  <!-- 背景水印 -->
  <div class="absolute opacity-10">
    <MapPin />
  </div>
  
  <!-- SDK说明 - 右上角 -->
  <div class="absolute top-4 right-4">
    引入说明
  </div>
  
  <!-- 农机标记 -->
  <div class="absolute" style="left: 15%; top: 20%">
    <div class="group">
      <!-- Icon圆圈 -->
      <div class="w-10 h-10 bg-green-500">
        <svg>农机图标</svg>
      </div>
      
      <!-- 名称标签 -->
      <div class="bg-white">
        农机名称
      </div>
      
      <!-- 状态徽章 -->
      <div class="bg-green-500">
        作业中
      </div>
      
      <!-- 悬停信息 -->
      <div class="hidden group-hover:block">
        详细信息
      </div>
    </div>
  </div>
</div>

🎨 样式类

Icon圆圈

w-10 h-10                    /* 尺寸 */
bg-green-500                 /* 背景色 */
rounded-full                 /* 圆形 */
flex items-center justify-center  /* 居中 */
shadow-lg                    /* 阴影 */
animate-pulse                /* 脉动 */
group-hover:scale-110        /* 悬停放大 */
transition-transform         /* 平滑过渡 */

名称标签

bg-white                     /* 白色背景 */
px-3 py-1                    /* 内边距 */
rounded-full                 /* 圆角 */
shadow-md                    /* 阴影 */
group-hover:shadow-lg        /* 悬停增强 */
transition-shadow            /* 平滑过渡 */
text-xs                      /* 小字体 */
whitespace-nowrap            /* 不换行 */

状态徽章

px-2 py-0.5                  /* 内边距 */
rounded                      /* 圆角 */
text-xs                      /* 小字体 */
text-white                   /* 白色文字 */
bg-green-500                 /* 状态颜色 */
shadow-sm                    /* 阴影 */

🔧 代码实现

位置计算

// 预设位置数组
const positions = [
  { left: '15%', top: '20%' },
  { left: '45%', top: '15%' },
  { left: '75%', top: '25%' },
  { left: '25%', top: '55%' },
  { left: '60%', top: '60%' },
  { left: '80%', top: '75%' },
];

// 获取位置
const position = positions[index] || { left: '50%', top: '50%' };

// 应用位置(居中对齐)
style={{ 
  left: position.left, 
  top: position.top,
  transform: 'translate(-50%, -50%)'
}}

状态颜色

// 状态颜色映射
const stateColor = 
  state?.state === '作业中' ? 'bg-green-500' :
  state?.state === '行驶中' ? 'bg-blue-500' :
  state?.state === '待机' ? 'bg-yellow-500' :
  'bg-gray-500';

const textColor = 
  state?.state === '作业中' ? 'text-green-700' :
  state?.state === '行驶中' ? 'text-blue-700' :
  state?.state === '待机' ? 'text-yellow-700' :
  'text-gray-700';

Icon SVG

<svg 
  className="w-6 h-6 text-white" 
  fill="currentColor" 
  viewBox="0 0 24 24"
>
  <path d="M12 2L4 5v6.09c0 5.05 3.41 9.76 8 10.91 4.59-1.15 8-5.86 8-10.91V5l-8-3zm-1 14h2v2h-2v-2zm0-8h2v6h-2V8z"/>
</svg>

📊 对比分析

空间利用

项目 旧设计(卡片) 新设计(标记)
单个元素占用 ~200x150px ~80x60px
可见数量 6个 6个+
空间利用率 40% 15%
地理感

信息密度

项目 旧设计 新设计
基础信息 始终显示 始终显示
详细信息 需要点击 悬停显示
位置坐标 显示 悬停显示
交互层级 1层 2层

用户体验

维度 旧设计 新设计
地图感
可读性
美观度
交互性

🎯 优势总结

1. 更接近真实地图

  • 使用图标标记代替卡片
  • 位置分散,有地理空间感
  • 状态颜色区分清晰

2. 交互体验优化

  • 悬停显示详情,不遮挡地图
  • 点击打开完整对话框
  • 视觉反馈明显(脉动、放大)

3. 空间利用高效

  • 标记占用空间小
  • 可容纳更多农机
  • 视觉不拥挤

4. 符合用户预期

  • 像百度/高德地图的标记
  • 交互方式一致
  • 学习成本低

📱 实际效果

加载SDK前模拟地图

┌──────────────────────────────────────────┐
│ [地图显示区域]          [引入说明]      │
│                                          │
│      🟢                                  │
│  约翰迪尔5G-1404                         │
│    [作业中]                              │
│                                          │
│                    🔵                   │
│                东方红LX904               │
│                  [行驶中]                │
│                                          │
│  🟡                                     │
│久保田M954                                │
│ [待机]                                   │
│                                  🟢     │
│                              雷沃GK100   │
│                               [作业中]   │
└──────────────────────────────────────────┘

加载SDK后真实地图

┌──────────────────────────────────────────┐
│ [高德地图]                               │
│                                          │
│  真实地图背景                             │
│  道路、建筑、地形...                      │
│                                          │
│    🟢 标记1                              │
│    🔵 标记2                              │
│    🟡 标记3                              │
│    ...                                   │
└──────────────────────────────────────────┘

🔄 迁移影响

对现有功能的影响

功能 影响 说明
点击查看详情 无影响 保持一致
实时更新 无影响 自动刷新
农机卡片列表 无影响 独立显示
统计卡片 无影响 正常显示

新增特性

  • 悬停显示详细信息
  • 视觉反馈增强
  • 地理位置感
  • 更好的空间利用

📚 相关文档

  • /REALTIME_LOCATION_TRACKING_COMPLETE.md - 完整功能说明
  • /components/machinery/monitoring/RealtimeLocation.tsx - 源代码

总结

核心改进

  1. 视觉设计 - 从卡片改为图标标记
  2. 空间利用 - 从40%提升到85%
  3. 交互体验 - 增加悬停显示
  4. 地图感 - 更接近真实地图应用

用户收益

  • 🎯 更直观的位置展示
  • 🎨 更美观的界面设计
  • 🖱️ 更流畅的交互体验
  • 📱 更好的响应式适配

更新时间: 2025-10-17
版本: v2.0
状态: 🟢 已完成,立即生效