网页地图升级后,最容易被忽略的是同一份业务数据在不同渲染路径的行为并不相同。

Mapbox GL JS v3.31.0 于 2026 年 9 月 17 日发布,发布说明列出 GeoJSON 内存占用显著改善、landmark 模型内存下降、raster-allow-draping 移除 experimental 标记、自定义图层支持 emissive MRT,以及 Globe 投影下 removeSource 抛错修复。这五项并不是一条统一的性能宣言:它们分别涉及矢量数据生命周期、模型资源、栅格与地形关系、自定义 WebGL 绘制和 Globe 状态管理。

可核查事实

  • Mapbox GL JS v3.31.0 于 2026 年 9 月 17 日发布。
  • 官方发布说明称 GeoJSON 的内存占用得到显著改善。
  • landmark 模型的内存使用降低。
  • raster-allow-draping 不再带 experimental 标记。
  • 自定义图层新增 emissive MRT 支持。
  • Globe 投影下调用 removeSource 可能抛错的问题获得修复。

核心机制

GeoJSON 内存和 landmark 模型内存都与浏览器资源有关,但一个受数据量、更新频率和 source 生命周期影响,另一个受模型加载和可见性影响。栅格贴附地形影响的是视觉几何关系,不能仅以 API 标记改变来判断效果。emissive MRT 属于自定义图层的渲染输出能力,必须在目标 GPU 和自定义着色器下验证。Globe 的 removeSource 修复则提醒团队:资源释放在平面投影和球面投影中都要回归,尤其是切换样式、销毁图层或频繁刷新数据时。

技术路径

为测试准备一份生产规模的 GeoJSON、一个有 landmark 模型的样式、一个带地形和栅格图层的场景,以及可重复添加删除 source 的 Globe 页面。先在固定浏览器版本记录加载、缩放、筛选和删除数据源前后的堆内存与帧率;再分别切换可见性和样式,观察模型内存是否在卸载后释放。

对栅格贴附,以固定倾角、山地 AOI 和多级缩放截图对比,检查覆盖关系和接缝。自定义图层应在支持的目标设备上用实际着色器验证 MRT 输出。最后循环执行 addSource、添加图层、removeSource 与投影切换,记录异常、残留图层和内存增长。

GIS 场景

应急态势图可能持续刷新大量 GeoJSON 要素,内存改善只有在真实更新节奏下才有意义。三维城市地图会同时加载 landmark 模型、地形和影像,资源管理与栅格贴附会直接影响浏览器稳定性。全球业务的 Globe 视图则经常在地点、图层和数据源间切换,removeSource 回归能避免长时间会话中因状态错误导致页面失效。自定义图层团队还应将 emissive MRT 视为新的能力边界,而不是默认兼容所有终端。

检查清单

  1. 是否用生产规模 GeoJSON 测量加载、更新和删除后的堆内存?
  2. 是否分别检查 landmark 模型的加载、隐藏、样式切换和释放?
  3. 是否在固定山地 AOI、倾角和缩放级别检查栅格贴附?
  4. 自定义图层是否在目标 GPU 与浏览器上验证 emissive MRT 输出?
  5. Globe 视图是否循环添加、删除数据源并切换投影?
  6. 是否记录浏览器、设备、样式和数据规模以便比较版本?

风险边界

发布说明的内存改善不等于所有数据规模、浏览器或自定义代码都会降低相同幅度。raster-allow-draping 的标记调整不保证所有地形、DEM 或影像组合都没有视觉问题。emissive MRT 与 Globe 状态修复也需要受 GPU、驱动和应用生命周期约束;应以实际受支持终端和数据源回归决定升级。

结论

把 GeoJSON 与模型内存、地形贴附、自定义渲染和 Globe 资源释放拆开测量,才能让 Mapbox GL JS 3.31.0 升级在 Web GIS 中得到可复查的结果。

参考资料