mapbox-gl-js v2.0 新功能预览新特性
速览新特性
v2 版本添加的主要是支持地形、自定义天空、相机API,以及性能方面的提升。
- 例子:添加3D地形:v1.x 中的各种图层可以和地形一起使用,新的 Mapbox 栅格数据API服务提供了地形服务。
- 例子:天空图层:在倾角(pitch)较大时,Mapbox v2 添加了一个天空图层,这个图层填充了地平线处的天空样式。可以用渐变颜色填充,也可以用散射光来模拟。
- 例子:Camera API:v2 提供了一个较为底层的相机接口,官方名称叫做
FreeCamera API
,允许用户添加各种相机动画。 - 性能提升:加载时间最多减少50%;官方测试中,中间的地图加载时间缩短了 30%;优化了资源加载和任务调度,以便CPU算力用于用户自己的代码
迁移至 v2 注意事项
- 不再支持 IE11。如果继续使用 IE11,请使用 Mapbox Static Tile API 来构建非交互式地图,或者跟另外的库(Mapbox.js、leaflet等)开发交互式地图。
- 必须使用 access token 才能初始化 Map 对象。
- v2 对于地图的加载是无条件的,不管有没有请求官方托管的瓦片服务、什么时候创建 Map 对象。
访问令牌定价策略(Web地图请求)
每月50000免费次数,5~10w 每 1000 个收 5美元,10~20w 每 1000 个收 4美元,20~100w 每 1000 个收 3美元。当然,你自己配地图服务、矢量切片样式,不请求官方数据,应该就不收费,但是令牌还是得设置。
更新日志:2.0.0
⚠️大改动
mapbox-gl-js 不再使用 3-Clause BSD
许可,升级这个版本即默认你同意 Mapbox服务条款
参考 “LICENSE.txt” 文档来查看最新的许可细节。有问题请在 https://support.mapbox.com 联系官方。
从 2.0.0 开始,初始化 Map 对象时商业地图就会加载。若想从 1.x 升级到 2.x,请查看 价格手册 来估算你的成本。
此版本不再适配 IE 11。
相机 pitch 值解锁到 85度。默认的 maxPitch
增至 85度,可以近似于地表水平线的观察角度。默认情况下,地平线处的地图绘制是透明的,不过你可以添加天空图层来填充这部分空间。实例化 Map 时,传递 maxPitch: 60
就能与原来一样了。
✨ 新特性与改进
- 添加三维地形要素。现在可以使用新的
terrain
顶级样式属性或使用map.setTerrain()
方法来控制所有图层、marker 的高程。 - 解锁 pitch 值到 最大85度。
- 在地平线上方添加一个天空图层作为无限远的背景。可从样式规范中找到两个有关的属性:
atmosphere
和gradient
- 添加了较为宽松自由的 camera API,可以使用
map.getFreeCameraOptions()
和map.setFreeCameraOptions()
进行更复杂的3D 相机操作。 - 性能提升:二段式的切片加载策略,先处理非符号图层
- 性能提升:不解析已终止的矢量切片
- 性能提升:使用预先着色器编译策略
- 性能提升:初始化地图时禁用符号和栅格瓦片的淡入动画
- 性能提升:所有平台默认采用 2 个 Worker
- 性能提升:Map 初始化加载时,在主线程加载切片
- 性能提升:使用更好的Worker任务调度机制
🐞 问题修复
- 当 RTLTextPlugin 加载时,避免加载 栅格瓦片和栅格地形瓦片
- 在缩放级别为浮点数和倾斜视图时,针对符号摆放的准确性,添加了运行时标签冲突检测计算
- 修复地形资源的缓存大小
- 修复DEM在worker上不释放内存
- 减少了
fill-extrusion
的内存占用