地图版本升级不能只看页面是否打开。MapLibre GL JS v6.4.0 同时涉及密集符号放置、DEM 高程取值、键盘可达性、sprite 资源、栅格投影和 globe 极区拖动;这些改动分别影响性能、分析表达、无障碍和空间交互。GIS 团队应把发布说明转成固定数据与固定视图上的回归测试。

核心机制

官方 GitHub release 显示 Release v6.4.0 发布于 2026 年 8 月 16 日。它在 cross-tile symbol matching 的 TileLayerIndex.findMatches 中避免每次查询执行 Array.sort(),以单次遍历认领最低索引的未认领候选,从而降低 dense/coincident symbol layers 的主线程符号放置成本。

高程表达也被明确调整:发布说明称以 texelFetch 进行精确 DEM 与 color-relief elevation stop 查找,取代 normalized texture coordinate arithmetic。这不是纯内部重构;如果颜色分级、坡面或高度阈值参与业务判断,渲染结果应作为升级验收对象。

GIS 场景

城市应急图中,密集的避难点、路况、雨量站和告警符号同时出现,底图还叠加 raster-DEM 与颜色高程。升级前后应使用同一缩放级别、同一瓦片缓存与同一数据快照,记录加载时间、主线程长任务、符号数量和重叠区域;同时取样关键 DEM 像元,检查色带阈值没有偏移。

对可访问性,默认 draggable marker 已可键盘聚焦,方向键每次移动 1 px、按 Shift 每次 10 px;自定义 marker 元素仍由应用负责。测试不能只验证默认 marker,而要验证自定义控件的焦点顺序、键盘操作和业务坐标更新。

可核查事实

  • 官方记录为 Release v6.4.0,发布时间是 2026 年 8 月 16 日。
  • TileLayerIndex.findMatches 避免每次查询执行 Array.sort()
  • 该优化面向 dense/coincident symbol layers 的主线程 symbol-placement 成本。
  • 发布使用 texelFetch 做精确 DEM 与 color-relief elevation stop 查找。
  • 默认 draggable markers 可键盘聚焦;方向键每次移动 1 px,Shift 加方向键每次 10 px。
  • sprite reload 曾使 in-view tiles 每帧重复检查和上传,v6.4.0 修复了这种永久 frame rate degradation,并清理被替换 sprite 的图像。
  • raster-DEM 解码显式请求不使用浏览器 color management,避免 Firefox 改变 RGB 编码的 elevation 值。
  • globe panning 在极区附近和跨极区采用 versor 旋转,修复反向与停滞问题。

技术路径

建立四组最小回归样本:密集符号瓦片、DEM/color-relief、可拖动标记、带 sprite 的 projection 切换与 globe 极区拖动。每组保存数据版本、样式 JSON、浏览器、GPU、初始视图和预期结果。性能检查记录加载、交互帧和主线程长任务;视觉检查比较符号、色带、栅格淡入和 sprite;交互检查比较鼠标、键盘、取消请求和极区拖动。

只在每一组通过后升级生产包。若性能提升但 DEM 阈值、标记键盘行为或 globe 拖动回归,保留旧版本或禁用相关交互,不能以总页面性能掩盖空间表达差异。

风险边界

发布说明描述的是上游修复,不能证明项目中的自定义样式、第三方插件、瓦片服务和浏览器组合已经无误。屏幕上颜色相同也不保证 DEM 原值、空间参考或分析逻辑正确;键盘移动以像素为单位,还需由应用明确换算到业务坐标与保存规则。

检查清单

  1. 固定密集符号、DEM、marker、sprite 和 globe 测试数据。
  2. 保存样式 JSON、视图、浏览器、GPU 和包版本。
  3. 比较符号数量、重叠区、主线程长任务和交互帧。
  4. 抽样核验 DEM 与 color-relief 阈值。
  5. 验证默认和自定义 marker 的焦点与键盘路径。
  6. 切换样式、投影和栅格后检查 sprite、淡入和资源释放。
  7. 在极区与跨极区复测 globe 拖动,并保留升级回退。

结论

MapLibre 6.4.0 的修复覆盖速度、数值表达与空间交互。以真实图层建立回归样本,并把失败保留为可复现记录,升级才能既取得性能收益,也不牺牲地图结果的可解释性。

参考来源

  1. MapLibre GL JS, v6.4.0 release:https://github.com/maplibre/maplibre-gl-js/releases/tag/v6.4.0