一、什么是MapBox,相对国内地图厂商的优势
MapBox是一家美国的地图厂商,2010 年成立于美国华盛顿,2017 年获得软银 1.64 亿美元 C 轮融资,完全开源的开发工具,帮助您在现有产品中实现灵活、轻量、稳定的地图、搜索、导航等位置功能的无缝添加。
因为完全开源所以你可以使用它做自己的地图,而不是像国内厂商一样只能使用厂商配置好的地图。比方说一些产业园区在百度或高德地图中没有显示内部道路,如果这时候有这个显示需求就得借助瓦片或者使用mapbox自己绘制地图了。
二、自定义地图需要做些什么
这里所说的自定义地图不是说自定义地图样式即颜色搭配而是自己绘制道路建筑物等内容
1.准备经纬度数据集合
这里我自己准备了一些经纬度点集合,然后对这些数据进行加工处理,需要符合mapbox对经纬度点集合的要求格式,即xx.geojson的格式
如:
{"type": "Feature","geometry": {"type": "Point","coordinates": [125.6, 10.1]},"properties": {"name": "Dinagat Islands"}
}
其中type字段可以不用理会,geometry定义了点集合的特征类型,properties字段定义了这部分点集合的名称,可以理解为道路的名称什么的,geometry字段中的type定义了coordinates点集合表示什么,type的可选字段有Point、LineString、Polygon、MultiPoint、MultiLineString和MultiPolygon(分别是点,线,多边形等)关于geojson的更多格式说明可以参阅https://www.oschina.net/translate/geojson-spec
2.导入已经处理的经纬度xxx.geojson格式数据
进入MapBox的Studio页面点击右上角的Datasets选项然后点击New dataset导入处理好的数据,建立数据底图。
这简单创建的地图底图。
3.创建地图样式并添加底图
在Mapbox的Studio首页点击New style创建地图样式,然后进入工作页面在左侧的控制面板中选中Layer点击“+”添加图层数据选择你之前创建的底图数据即可
然后底图就覆盖在地图上
这样就可以看到之前创建的线条在地图上,这些线条就是道路,这里还没有设置线条的宽度和样式。
在导入数据时可以选择type,第一次选择type为Line即为道路,第二次导入数据选择type为Symbol即为字符就是道路的名称,然后设置Line的样式和Symbol的样式,就完成了道路的简单绘制
这就是完成的效果,在缩放的时候和正常的地图一样,道路名称也会发生缩放,也可以自己设置缩放等级什么的。
好,现在就完成了简单的自定义地图绘制。