BMapGL 远距离驾车兜底路线拖动后消失 (BMapGL Long-Haul Driving Fallback Route Disappears After Drag)
遇到场景 (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)
- 同时启动
cargo run -p campus-api与 Vite 前端;直接开导航页时显式传入VITE_BAIDU_BROWSER_AK。 - 使用
?demo=longdrive&baseline=1&log=1,记录拖动前后截图、路线点数、浏览器/GPU 和控制台日志。 - 使用
routeview=full对照,排除进度切片;再禁用箭头流,仅保留一条静态 Polyline。 - 分别恢复:路线裁剪、定位更新、箭头流、拖动后的 overlay 重挂载,定位触发消失的最小条件。
- 校内 ≤5 km 路线作为回归基线;远距离实验未在真实设备通过前,不合入稳定分支。
代码提交证据 (Git Evidence)
项目仓库:campus-navi-rs。本轮相关提交:
3c88eb8原始基线;5da505b长距离静态整线降级尝试;2792d86baseline=1基线测试夹具;f2f1389驾车视角锚定当前光标;ed22b00驾车 fallback 视口/路线类型调整;6c645ae驾车缩放与步行一致;2e57b8arouteview=full整线诊断;a043a80本故障记录;ebfc1f8master修复 Vite/featured代理,恢复首页 POI。fcd1e8e将跨省 fallback 测试夹具和测试网关入口合入master;cfd7623将远距离渲染实验分支与主分支文档边界写清;058c526更新主分支测试入口文档。
当前公网静态文件来自 master 的跨省测试构建(代码基线 fcd1e8e);完整渲染实验位于 experiment/long-haul-route-rendering。远距离问题保持未关闭。
相关项目记录
- 项目故障原文:campus-navi-rs/docs/远距离驾车兜底路径拖动消失故障记录.md
- 地图手势与视口经验:地图手势缩放缓冲 (Map Gesture Zoom Buffering).md)
本文归档于个人知识库 · 领域:CS & AI · 模块:04 Project_CS_AI/Frontend