文档版本:v1.0 最后更新:2026-04-02 08:28:05
CMR-Mini 是一个运行在微信小程序环境中的高性能定向越野 (Orienteering) 实时竞赛/练习引擎。其核心竞争力在于通过自研的 WebGL 地图渲染管线 提供流畅的地图交互,并结合高精度多传感器融合技术(GPS、罗盘、心率、加速度计等)实现精准的运动反馈。
Single WebGL Pipeline。相比微信原生地图组件,具有更高的定制化能力,特别是在“Heading-Up”(朝向朝上)模式下的性能表现。TileStore 实现三级缓存(内存 -> 磁盘 -> 网络),并支持 tilePersistentCache。WGS84 -> WorldTile -> Camera -> Screen 的标准 GIS 变换链,能够精准处理地理坐标到屏幕像素的映射。wx.onCompassChange) 与设备姿态 (wx.onDeviceMotionChange) 的协同。mock-gps-sim 工具)的无缝切换。根据目前的实现,指北针的卡顿感主要源于以下三个层面:
interpolateHeadingDeg 进行线性差值,且 ABSOLUTE_HEADING_CORRECTION 为固定系数 (0.44)。这种静态系数在“静态微调”时显得不够敏锐,在“快速旋转”时又显得滞后。direction 进行了严格的数值有效性判断,若系统由于硬件抖动返回短时异常值,会导致视觉上的“跳帧”。MapEngine 的 UI_SYNC_INTERVAL_MS 设置为 80ms,这意味着视觉反馈的最高帧率仅为 12.5Hz,远低于屏幕刷新率,导致指针转动不够丝滑。建议根据旋转角速度动态调整平滑系数。当检测到瞬时角位移较大时,降低平滑度以追求响应速度;当位移较小时,增加平滑度以过滤手抖带来的噪声。
目前数据是由控制器下发到 UI 的。建议:
.wxml/.wxss)利用 transition: transform 0.1s linear; 实现视觉层面的自动补帧。在 CompassHeadingController 中加入微小位移的死区过滤逻辑,避免由于硬件高频微小抖动导致的视图高频重绘,降低系统功耗的同时提升视觉稳定性。
CMR-Mini 已经建立了一个非常坚实的专业定向越野引擎基础。后续的优化重点应从“功能的实现”转向“交互的极致平滑”,特别是针对指北针这类核心导向组件,需要更精细化的信号处理策略。
Generated by Gemini CLI Analysis Tool