网页地图升级后,最容易被忽略的是同一份业务数据在不同渲染路径的行为并不相同。
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 视为新的能力边界,而不是默认兼容所有终端。
检查清单
- 是否用生产规模 GeoJSON 测量加载、更新和删除后的堆内存?
- 是否分别检查 landmark 模型的加载、隐藏、样式切换和释放?
- 是否在固定山地 AOI、倾角和缩放级别检查栅格贴附?
- 自定义图层是否在目标 GPU 与浏览器上验证 emissive MRT 输出?
- Globe 视图是否循环添加、删除数据源并切换投影?
- 是否记录浏览器、设备、样式和数据规模以便比较版本?
风险边界
发布说明的内存改善不等于所有数据规模、浏览器或自定义代码都会降低相同幅度。raster-allow-draping 的标记调整不保证所有地形、DEM 或影像组合都没有视觉问题。emissive MRT 与 Globe 状态修复也需要受 GPU、驱动和应用生命周期约束;应以实际受支持终端和数据源回归决定升级。
结论
把 GeoJSON 与模型内存、地形贴附、自定义渲染和 Globe 资源释放拆开测量,才能让 Mapbox GL JS 3.31.0 升级在 Web GIS 中得到可复查的结果。