MapboxGL JS - 形状图层类型

MapboxGL JS - Shape layer type

我有一张地图,其矢量切片源包含数千个 geojson 点。 我可以在地图上显示点,使用 circle 类型图层为每个点显示一个圆圈。

我也想这样做,但使用不同的形状,例如正方形和三角形。没有内置的方法来做到这一点吗?我有哪些选择?

如果有用,我就是这样做的:

  1. 我通过编辑 https://www.mapbox.com/maki-icons/editor/
  2. 提供的 maki 形状图标创建了一组不同颜色的 svg 图像
  3. 我使用 https://github.com/mapbox/spritezero-cli
  4. 将它们转换为 jpg 精灵文件和 json 描述符
  5. 我创建了一个派生自 mapbox-provided 样式的样式,以便使用我的自定义精灵,并使用 https://github.com/klokantech/tileserver-gl
  6. 提供该样式
  7. 在我的图层配置中,我使用了一个 "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
        }
    });
});

取自https://www.mapbox.com/mapbox-gl-js/example/add-image/