From 01088e3c9d4befa3a96a5b3a864c7c46225b1a90 Mon Sep 17 00:00:00 2001 From: renna <576157508@qq.com> Date: Wed, 16 Jul 2025 11:30:24 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B0=8F=E8=BD=A6?= =?UTF-8?q?=E5=B9=B3=E6=BB=91=E8=A1=8C=E9=A9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vehicle-smooth-movement/requirements.md | 67 +++ src/api/monitor/carRunInfo.js | 45 ++ src/components/car/detail/TrackPlayback.vue | 2 +- .../map/controls/VehicleAnimationSystem.vue | 457 +++++------------- 4 files changed, 235 insertions(+), 336 deletions(-) create mode 100644 .kiro/specs/vehicle-smooth-movement/requirements.md diff --git a/.kiro/specs/vehicle-smooth-movement/requirements.md b/.kiro/specs/vehicle-smooth-movement/requirements.md new file mode 100644 index 0000000..72b571b --- /dev/null +++ b/.kiro/specs/vehicle-smooth-movement/requirements.md @@ -0,0 +1,67 @@ +# 车辆平滑移动优化需求文档 + +## 介绍 + +当前地图上的车辆移动存在"平滑行驶一小段然后停顿再平滑行驶"的问题,需要优化为完全平滑的连续行驶效果。系统每秒接收一次车辆位置数据,但当前的动画实现在数据间隔期间会出现停顿现象,影响用户体验。 + +## 需求 + +### 需求 1 + +**用户故事:** 作为系统操作员,我希望地图上的车辆能够完全平滑地移动,这样我可以更直观地监控车辆的实时状态。 + +#### 验收标准 + +1. WHEN 系统接收到车辆位置更新数据 THEN 车辆应该平滑地从当前位置移动到新位置 +2. WHEN 两次位置数据之间存在时间间隔 THEN 车辆应该继续保持平滑移动而不是停顿 +3. WHEN 车辆速度发生变化 THEN 移动速度应该平滑过渡而不是突然改变 + +### 需求 2 + +**用户故事:** 作为系统操作员,我希望车辆的移动轨迹能够预测性地延续,这样即使在数据传输延迟时也能保持视觉连续性。 + +#### 验收标准 + +1. WHEN 超过预设时间没有接收到新的位置数据 THEN 系统应该基于历史轨迹预测车辆移动方向 +2. WHEN 接收到新的位置数据 THEN 预测轨迹应该平滑地调整到实际位置 +3. WHEN 车辆停止移动 THEN 预测移动应该逐渐减速直至停止 + +### 需求 3 + +**用户故事:** 作为系统操作员,我希望车辆的旋转角度变化也能平滑过渡,这样车辆转向时看起来更自然。 + +#### 验收标准 + +1. WHEN 车辆heading角度发生变化 THEN 车辆图标应该平滑旋转到新角度 +2. WHEN 角度变化较大时 THEN 应该选择最短旋转路径进行过渡 +3. WHEN 车辆移动方向与heading不一致时 THEN 应该优先使用实际移动方向进行旋转 + +### 需求 4 + +**用户故事:** 作为系统操作员,我希望动画系统能够自适应不同的数据接收频率,这样无论网络状况如何都能保持平滑效果。 + +#### 验收标准 + +1. WHEN 数据接收频率为每秒1次 THEN 动画应该在1秒内平滑完成位置过渡 +2. WHEN 数据接收出现延迟 THEN 动画应该自动调整插值时间以保持平滑 +3. WHEN 数据接收频率变化 THEN 动画参数应该动态调整以适应新频率 + +### 需求 5 + +**用户故事:** 作为系统操作员,我希望车辆标签能够始终跟随车辆图标移动,这样我可以持续看到车辆的实时信息。 + +#### 验收标准 + +1. WHEN 车辆图标移动时 THEN 车辆标签应该同步移动 +2. WHEN 车辆处于动画移动状态 THEN 标签位置应该实时更新 +3. WHEN 地图缩放或平移时 THEN 标签应该保持正确的相对位置 + +### 需求 6 + +**用户故事:** 作为系统操作员,我希望动画系统具有良好的性能表现,这样即使有多辆车同时移动也不会影响系统响应速度。 + +#### 验收标准 + +1. WHEN 同时有多辆车进行动画移动 THEN 系统帧率应该保持在30fps以上 +2. WHEN 动画运行时 THEN CPU使用率不应该显著增加 +3. WHEN 车辆数量增加时 THEN 动画性能应该保持稳定 \ No newline at end of file diff --git a/src/api/monitor/carRunInfo.js b/src/api/monitor/carRunInfo.js index 7418311..1a94920 100644 --- a/src/api/monitor/carRunInfo.js +++ b/src/api/monitor/carRunInfo.js @@ -19,6 +19,15 @@ export function exportCarRunInfo(query) { }) } +// 批量查询车辆轨迹 +export function batchQueryVehicleTrajectory(data) { + return request({ + url: '/system/vehicle_location/trajectory/batch', + method: 'post', + data: data + }) +} + // 根据车辆ID查询车辆运动信息列表 export function listCarRunInfoByVehicleId(vehicleId, query) { return request({ @@ -28,6 +37,42 @@ export function listCarRunInfoByVehicleId(vehicleId, query) { }) } +// 根据车辆ID查询车辆轨迹 +export function getVehicleTrajectory(vehicleId, query) { + return request({ + url: '/system/vehicle_location/trajectory/' + vehicleId, + method: 'get', + params: query + }) +} + +// 根据车辆ID查询轨迹统计信息 +export function getTrajectoryStatistics(vehicleId, query) { + return request({ + url: '/system/vehicle_location/trajectory/' + vehicleId + '/statistics', + method: 'get', + params: query + }) +} + +// 根据车辆ID查询轨迹回放数据 +export function getTrajectoryPlayback(vehicleId, query) { + return request({ + url: '/system/vehicle_location/trajectory/' + vehicleId + '/playback', + method: 'get', + params: query + }) +} + +// 根据车辆ID查询区域内轨迹 +export function getAreaTrajectory(vehicleId, query) { + return request({ + url: '/system/vehicle_location/trajectory/' + vehicleId + '/area', + method: 'get', + params: query + }) +} + // 根据车牌号查询车辆运动信息列表 export function listCarRunInfoByLicensePlate(licensePlate, query) { return request({ diff --git a/src/components/car/detail/TrackPlayback.vue b/src/components/car/detail/TrackPlayback.vue index 736b7e4..804b791 100644 --- a/src/components/car/detail/TrackPlayback.vue +++ b/src/components/car/detail/TrackPlayback.vue @@ -1,4 +1,4 @@ - +