2

在 Mapbox.js 中,您可以为每个标记指定一个图像,有没有办法使用 Mapbox GL JS 来做到这一点?还是仅限于每张地图一个精灵?标记精灵可能会增长到下载速度很慢的大小。

是否可以一次使用多个精灵?

还有一种方法可以在地图加载后切换精灵吗?我尝试使用 map.setStyle() 重新加载原始样式,但自定义标记不会重新出现。

4

3 回答 3

3

首先,让我们确保我们在术语方面是一致的:

  • “符号层特征”(即标记)可能会在地图上显示“图标”
  • “精灵”是“图标”的集合
  • 一个“风格”有一个“精灵”

在 Mapbox.js 中,您可以为每个标记指定一个图像,有没有办法使用 Mapbox GL JS 来做到这一点?

层内的每个“符号层特征”可以使用“令牌”显示不同的“图标”。这在我们的文档中有所提及

如果您的“符号图层功能”具有icon属性,则可以使功能使用该图标

"symbol-icon": "{icon}"

是否可以一次使用多个精灵?

您不能一次使用多个精灵。您可以在一个图层中使用多个图标。您可以通过创建多个符号图层为一个要素使用多个图标。


还有一种方法可以在地图加载后切换精灵吗?

不,这对于 Mapbox GL JS 是不可能的。

于 2016-04-26T17:42:27.990 回答
0

按照上面卢卡斯的回答,如果您想在运行时更改某个点的图标,您应该使用另一个图标图像有一个单独的图层,然后只需从一个图层的源数据中删除该点并将其添加到另一个图层。

于 2021-05-20T09:18:50.507 回答
0

假设您希望在一个图层中有多个图像,您可能需要检查此示例: https ://docs.mapbox.com/mapbox-gl-js/example/add-image-missing-generated/

但是您可能必须添加图像,并且 svg 可能无法正常工作。


                {
                'type': 'Feature',
                'geometry': {
                    'type': 'Point',
                    'coordinates': [this.long, this.lat]
                },
                'properties': {
                    'icon': 'bus-generic'
                }}

如果你有一个属性,你可以查询它并在图层定义中使用它来显示不同的图标:

   map.addLayer({
       'id': 'bus-layer',
       'type': 'symbol',
       'source': 'bus-source', // reference the data source
       'layout': {
           'icon-image': ['get', 'icon'], // reference the icon in properties
           'icon-size': 0.2,
       }
   });

于 2022-01-04T22:15:37.827 回答