在 Mapbox.js 中,您可以为每个标记指定一个图像,有没有办法使用 Mapbox GL JS 来做到这一点?还是仅限于每张地图一个精灵?标记精灵可能会增长到下载速度很慢的大小。
是否可以一次使用多个精灵?
还有一种方法可以在地图加载后切换精灵吗?我尝试使用 map.setStyle() 重新加载原始样式,但自定义标记不会重新出现。
在 Mapbox.js 中,您可以为每个标记指定一个图像,有没有办法使用 Mapbox GL JS 来做到这一点?还是仅限于每张地图一个精灵?标记精灵可能会增长到下载速度很慢的大小。
是否可以一次使用多个精灵?
还有一种方法可以在地图加载后切换精灵吗?我尝试使用 map.setStyle() 重新加载原始样式,但自定义标记不会重新出现。
首先,让我们确保我们在术语方面是一致的:
在 Mapbox.js 中,您可以为每个标记指定一个图像,有没有办法使用 Mapbox GL JS 来做到这一点?
层内的每个“符号层特征”可以使用“令牌”显示不同的“图标”。这在我们的文档中有所提及。
如果您的“符号图层功能”具有icon
属性,则可以使功能使用该图标
"symbol-icon": "{icon}"
是否可以一次使用多个精灵?
您不能一次使用多个精灵。您可以在一个图层中使用多个图标。您可以通过创建多个符号图层为一个要素使用多个图标。
还有一种方法可以在地图加载后切换精灵吗?
不,这对于 Mapbox GL JS 是不可能的。
按照上面卢卡斯的回答,如果您想在运行时更改某个点的图标,您应该使用另一个图标图像有一个单独的图层,然后只需从一个图层的源数据中删除该点并将其添加到另一个图层。
假设您希望在一个图层中有多个图像,您可能需要检查此示例: 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,
}
});