开发地图应用时,加载POI等点状数据,显示文字或者图标信息,mapbox-gl对应使用的是符号图层(symbol),下边讲一下如何加载符号图层数据。
mapbox-gl加载矢量数据,通过两种数据源,一种是矢量切片(vector),另一种是geojson数据,数据源加载完成后,再进行图层的设置。
以geojson数据为例:
//添加geojson数据源,第一个参数为id
map.addSource('points', {
'type': 'geojson',
'data': {
'type': 'FeatureCollection',
'features': [
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [
118.03238901390978, 38.913188059745586
]
},
'properties': {
'title': '属性信息',
'iconname':'iconname'
}}
]}
});
//添加一个符号图层
map.addLayer({
'id': 'points',
'type': 'symbol',
//对应上边的数据源id
'source': 'points',
'layout': {
//设置图标的名称
'icon-image': 'custom-marker',
// 设置显示文字的字段
'text-field': ['get', 'title'],
//设置字体样式
'text-font': [
'Arial Unicode MS Bold'
]
}
});
符号图层属性设置链接:
https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#symbol
之前地图样式设置中的sprite和glyphs,是供符号图层使用的,精灵图的json文件配置的每个图标名称,对应icon-image属性名称,text-font是字体的设置,类型是数组,可以设置多个字体,根据字体名称请求不同的url,要保证服务器端存在相应的字体。
mapbox-gl开发是讲述如何从基础到实际应用进行地图开发的教程,不定时进行持续进行更新,如有疑问,公众号留言进行讨论。
mapbox-gl官网地址:https://docs.mapbox.com/mapbox-gl-js/guides/