Men的博客

欢迎光临!

0%

mapbox功能调研

1.Map通过样式json文件绘制
具体字段内容参考:
https://docs.mapbox.com/mapbox-gl-js/style-spec/

我们地图:也有样式配置文件,原理上基本一致,各种样式支持情况需要重新设计
达到效果:
更新stye.json,地图样式同步变化

2.采用mvt格式数据,bpf协议传输数据。
mapbox数据请求示例:
https://api.mapbox.com/v4/mapbox.mapbox-streets-v8,mapbox.mapbox-terrain-v2/10/299/387.vector.pbf?
sku=101fNMKdfrxXw&access_token=pk.eyJ1IjoiZXhhbXBsZXMiLCJhIjoiY2p1dHRybDR5MGJuZjQzcGhrZ2doeGgwNyJ9.a-vxW4UaxOoUMWUTGnEArw

我们也是mvt格式,不是标准mvt,需要将我们数据格式同步到标准mvt格式上,
mapbox pbf标准mvt解析参考:
https://github.com/mapbox/protozero
https://github.com/mapbox/vtzero
https://github.com/tlglovewf/pbfvectortile

3.支持geojson绘制
支持geojson跟mvt数据转换(支持一种格式数据绘制即可)
4.坐标
mvt采用瓦片坐标,以瓦片左上角为原点(0,0),瓦片上的数据坐标全是基于瓦片的。
5.绘制方式:
mapbox中layer的设计不是根据数据来源分类,根据数据点、线、面进行分类,fill类型的layer只负责填充;
line类型的layer只负责线条;symbol类型的layer会处理sprite,文字等;raster类型的layer就只负责图片,
circle类型的layer是更高一层的业务处理需要,可以在layer里面设置filter,满足条件的元素才会被呈现出来,
并用layer设定的样式渲染。细化地图样式,点、线、面,可实现批量绘制,达到优化性能目的
需确认我们设计模式是否与mapbox相似
6.数据库设计
支持sqllite存储,方便数据迁移,
相同数据会采用去重处理,如大海整个矢量瓦片都是大海数据,所有大海的数据瓦片都是一样的,会将所有的大海数据id指向同一块数据。
我们数据采用文件夹形式存储,根据瓦片id分文件夹,需要优化为sqllite存储
7.离线缓存
缓存数据采用sqllite数据库进行存储,表结构相对简单,表内数据采用压缩格式(zlib)进行存储。
region_id-》resource_id-〉tiles-》

mapbox开源介绍
mapbox很多东西都开源了,开发中可以参考。
https://github.com/mapbox/awesome-vector-tiles