浏览器地图的地形性能通常在用户拖动、缩放和取消加载时才真正暴露。MapLibre GL JS 的 v6.0.0-18 预发布说明聚焦三处 terrain 路径优化,并修复一个与 GeoJSON 瓦片加载取消有关的 worker 内存泄漏。它提醒 WebGIS 团队:性能改进要同取消语义、资源释放和真实交互帧一起验收,不能只凭静态截图判断升级成功。
可核查事实
-
v6.0.0-18 被 GitHub 标记为 pre-release,发布页显示由 github-actions 于6月29日发布。
-
发布说明称 Mercator render-to-texture 阶段避免不必要 terrain 数据查找,以改善 terrain 渲染性能。
-
发布说明称构建 DEM 数据和采样地形高程时减少分配压力。
-
发布说明称准备 terrain 时复用 DEM 纹理。
-
发布说明修复了取消 worker 请求时的内存泄漏:例如平移时取消 GeoJSON 瓦片加载,旧行为会让 promise 永久 pending。
-
修复后 Actor.sendAsync 在中止时会以 AbortError reject,而不是保留等待帧及其捕获对象。
-
发布页标明该 release 的提交为9ea262f,并带有 GitHub verified 签名。
核心机制:性能优化不能改变取消和释放的语义
本次预发布在 terrain 路径中减少不必要查找、降低 DEM 构建和高程采样的分配压力,并复用 DEM 纹理。它们都指向同一类成本:同一帧或同一次视图更新中重复获取、构造或分配的地形资源。升级验收应把相同相机轨迹、相同 DEM 覆盖和相同设备作为基准,比较帧时间、主线程和 worker 活动、纹理与堆内存,而不是只观察第一次加载。
更关键的修复在取消流程。发布说明举例:用户平移地图时,GeoJSON 瓦片加载可能被中止;若 worker 请求留下永远 pending 的 promise,等待它的异步帧和全部捕获对象就不能释放。Actor.sendAsync 改为在中止时 reject AbortError,意味着调用方应将取消视作预期控制流,并显式区分 AbortError 与网络、解析或样式错误。
GIS 场景:连续平移下检验地形和专题图层
一个山地专题图通常同时加载 DEM、栅格阴影、矢量边界和 GeoJSON 瓦片。测试应从静止视图扩展到连续平移、快速缩放、反复切换地形和离开页面:记录请求数、被取消请求、AbortError、worker 堆、纹理数量、帧时间和最终图层完整性。只在静止场景看 FPS,无法暴露取消请求遗留对象的问题。
由于此版本是 pre-release,生产升级需先在固定版本依赖和回归样例中执行。GitHub 发布页给出9ea262f 的 verified 提交,可作为供应链记录的一部分;但签名不等于应用的地形、样式和自定义层都已经兼容。应保留升级前后截图、性能采样、浏览器版本和错误日志,以便发现差异时回退。
技术路径
-
固定 MapLibre 版本、提交、浏览器、GPU、DEM源、样式和相机轨迹作为基线。
-
分别测量静止、平移、缩放、地形开关和页面离开时的帧时间、网络请求、worker堆和纹理占用。
-
将取消请求作为正常用例,统计 AbortError,不把它计入业务失败或未处理异常。
-
对 GeoJSON 瓦片、DEM和高程采样同时压测,确认连续操作后内存能回落。
-
保存地图截图之外的性能 trace、控制台错误和样式输出,发现回归时可定位到版本与场景。
-
预发布先在隔离环境灰度,再经过真实设备和生产数据权限审查后升级。
检查清单
-
测试是否包含平移中取消 GeoJSON 瓦片的场景?
-
AbortError 是否被正确视为取消而非未捕获故障?
-
连续缩放和平移后 worker 堆、纹理和帧时间是否回落?
-
DEM构建、高程采样和地形开关是否与专题图层一起测试?
-
是否保存了版本、提交、浏览器、相机轨迹和性能证据?
风险边界
v6.0.0-18 是 pre-release,发布说明只列出 terrain 性能调整和一个取消请求的内存修复。它不构成对全部地图样式、自定义层、浏览器 GPU 驱动、离线缓存或第三方插件的兼容承诺。特别是把取消改为 AbortError 后,调用方若将其当普通错误记录或重试,反而可能制造新的日志噪声和请求风暴。
地形性能也不是单一库版本可以保证的属性。DEM 分辨率、瓦片服务延迟、纹理预算、设备内存、样式复杂度和用户交互同时影响结果。正式地图发布仍需依据目标设备、数据范围和可接受的降级策略完成验收。
资料依据
本文依据 MapLibre GL JS v6.0.0-18 官方发布说明 撰写。预发布状态、发布日期、三个 terrain 优化、取消 GeoJSON worker 请求的泄漏、pending promise、AbortError、提交与验证签名均来自一手发布页;回归场景和升级控制为 WebGIS 生产建议。
结论
地形渲染提速的价值不只在更高帧率,更在快速交互后仍能正确取消和释放资源。把平移中止、DEM内存、纹理和帧时间纳入同一套回归验收,才能让 WebGIS 升级经得起真实用户操作。