遇到场景 (Encounter)

在校园导航页中,步行规划失败后自动切换到驾车 fallback。跨省路线约 1341.9 km,导航开始时折线可见;地图拖动一次后折线消失,控制台没有明显 JavaScript 报错。向已有路线方向移动时线段减少,向无路线方向移动时线段延长,表现像视口外懒加载或投影边界判断错误。

已证据化的判断 (Evidence-Based Findings)

  • 深圳模拟定位 114.057868, 22.543099 可以稳定触发“步行失败 → 驾车成功”的 fallback 链路,故请求失败不是主要原因。
  • routeview=full 关闭 remaining/passed 进度裁剪后仍能复现,不能把问题归因于路线进度切片。
  • 旧实现会对长路线反复全量 Polyline.setPath,箭头流还可能把屏外点投影为千万级 DOM 坐标;这两个点是高风险,但“静态整线降级”实测尚未证明彻底修复。
  • 仍需在目标移动浏览器确认 BMapGL 拖动重投影、覆盖物生命周期、视口/屏幕外判断和 GPU/WebGL 上下文丢失之间的因果关系。

复现与排查顺序 (Reproduction and Isolation)

  1. 同时启动 cargo run -p campus-api 与 Vite 前端;直接开导航页时显式传入 VITE_BAIDU_BROWSER_AK。
  2. 使用 ?demo=longdrive&baseline=1&log=1,记录拖动前后截图、路线点数、浏览器/GPU 和控制台日志。
  3. 使用 routeview=full 对照,排除进度切片;再禁用箭头流,仅保留一条静态 Polyline。
  4. 分别恢复:路线裁剪、定位更新、箭头流、拖动后的 overlay 重挂载,定位触发消失的最小条件。
  5. 校内 ≤5 km 路线作为回归基线;远距离实验未在真实设备通过前,不合入稳定分支。

代码提交证据 (Git Evidence)

项目仓库:campus-navi-rs。本轮相关提交:

  • 3c88eb8 原始基线;
  • 5da505b 长距离静态整线降级尝试;
  • 2792d86 baseline=1 基线测试夹具;
  • f2f1389 驾车视角锚定当前光标;
  • ed22b00 驾车 fallback 视口/路线类型调整;
  • 6c645ae 驾车缩放与步行一致;
  • 2e57b8a routeview=full 整线诊断;
  • a043a80 本故障记录;
  • ebfc1f8 master 修复 Vite /featured 代理,恢复首页 POI。
  • fcd1e8e 将跨省 fallback 测试夹具和测试网关入口合入 master;
  • cfd7623 将远距离渲染实验分支与主分支文档边界写清;
  • 058c526 更新主分支测试入口文档。

当前公网静态文件来自 master 的跨省测试构建(代码基线 fcd1e8e);完整渲染实验位于 experiment/long-haul-route-rendering。远距离问题保持未关闭。

相关项目记录


本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/Frontend