MapboxGL JS - 形状图层类型
MapboxGL JS - Shape layer type
我有一张地图,其矢量切片源包含数千个 geojson 点。
我可以在地图上显示点,使用 circle 类型图层为每个点显示一个圆圈。
我也想这样做,但使用不同的形状,例如正方形和三角形。没有内置的方法来做到这一点吗?我有哪些选择?
如果有用,我就是这样做的:
- 我通过编辑 https://www.mapbox.com/maki-icons/editor/
提供的 maki 形状图标创建了一组不同颜色的 svg 图像
- 我使用 https://github.com/mapbox/spritezero-cli
将它们转换为 jpg 精灵文件和 json 描述符
- 我创建了一个派生自 mapbox-provided 样式的样式,以便使用我的自定义精灵,并使用 https://github.com/klokantech/tileserver-gl
提供该样式
- 在我的图层配置中,我使用了一个 "symbol" 类型的图层,并通过在布局属性中传递其名称来选择相关图标 "icon-image" : "green-triangle-11"
我承认在地图上显示一个绿色三角形需要大量工作!
编辑 (18-07-2017) : 我发现您可以加载任何图像并将其显示在地图上,它不必是样式的一部分.我不确定 Mapbox 是最近添加了这个还是直到现在我才错过它。开始了:
map.loadImage('https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cat_silhouette.svg/400px-Cat_silhouette.svg.png', (error, image) => {
if (error) throw error;
map.addImage('cat', image);
map.addLayer({
"id": "points",
"type": "symbol",
"source": {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [0, 0]
}
}]
}
},
"layout": {
"icon-image": "cat",
"icon-size": 0.25
}
});
});
我有一张地图,其矢量切片源包含数千个 geojson 点。 我可以在地图上显示点,使用 circle 类型图层为每个点显示一个圆圈。
我也想这样做,但使用不同的形状,例如正方形和三角形。没有内置的方法来做到这一点吗?我有哪些选择?
如果有用,我就是这样做的:
- 我通过编辑 https://www.mapbox.com/maki-icons/editor/ 提供的 maki 形状图标创建了一组不同颜色的 svg 图像
- 我使用 https://github.com/mapbox/spritezero-cli 将它们转换为 jpg 精灵文件和 json 描述符
- 我创建了一个派生自 mapbox-provided 样式的样式,以便使用我的自定义精灵,并使用 https://github.com/klokantech/tileserver-gl 提供该样式
- 在我的图层配置中,我使用了一个 "symbol" 类型的图层,并通过在布局属性中传递其名称来选择相关图标 "icon-image" : "green-triangle-11"
我承认在地图上显示一个绿色三角形需要大量工作!
编辑 (18-07-2017) : 我发现您可以加载任何图像并将其显示在地图上,它不必是样式的一部分.我不确定 Mapbox 是最近添加了这个还是直到现在我才错过它。开始了:
map.loadImage('https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cat_silhouette.svg/400px-Cat_silhouette.svg.png', (error, image) => {
if (error) throw error;
map.addImage('cat', image);
map.addLayer({
"id": "points",
"type": "symbol",
"source": {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [0, 0]
}
}]
}
},
"layout": {
"icon-image": "cat",
"icon-size": 0.25
}
});
});