用途:帮助把现有 MapLibre GL JS v5 应用升级到 v6,或排查依赖更新后地图“原本能用却失效”的问题。v6(2026-07-22 发布)移除了 v5 代码依赖的多项内容,模型训练数据多早于 v6,容易给出 v5 时代的答案。主要参考官方 v5→v6 迁移指南,若与本技能冲突以指南为准。
主要能力与用法:
- CDN 引入:v6 仅保留 ESM 构建 dist/maplibre-gl.mjs,需 type="module",且必须锁定主版本(如 @^6.0.0),不要用 @latest。
- 导入方式:默认导出已移除,改用命名或命名空间导入,如 import * as maplibregl from 'maplibre-gl' 或 import { Map, NavigationControl } from 'maplibre-gl'。
- CommonJS:require('maplibre-gl') 会抛 ERR_PACKAGE_PATH_NOT_EXPORTED,需改为 ESM 或动态 import()。
- 缺失图标:styleimagemissing 变为仅通知,需改用 map.setMissingStyleImageResolver() 注册解析器。
- map.transform 已移除,改用 getZoom()、getBearing()、getPitch()、getCenter() 等公开 API;原始投影矩阵仅在自定义图层 render() 回调中可用。
- MapDataEvent 类型删除,data、dataloading、dataabort 现为 MapSourceDataEvent | MapStyleDataEvent,需按联合类型收窄。
- 打包器(Vite、webpack、esbuild、Rspack、Rsbuild、Rollup)需在创建 Map 前调用一次 setWorkerUrl();Vite 用 ?worker&url 而非 ?url。纯 CDN ESM 无需此调用。
适用场景:升级 v5 应用、编写上述七类代码、排查 ERR_PACKAGE_PATH_NOT_EXPORTED、CDN 更新后地图空白、图标不显示、MapDataEvent 类型报错、worker 加载失败等。
限制:仅覆盖这七项破坏性变更,不涉及 sources、layers、样式、地形等通用最佳实践;各打包器片段随工具版本变化,以官方安装指南为准。