Я хотел бы установить icon-image
на основе значения данных (https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions).
Также см. https://github.com/mapbox/mapbox-gl-js/issues/6935, в котором есть несколько примеров, как это сделать.
Я пробовал несколько вещей ...
Использование match
'icon-image': [
'match',
['get', 'tap_ports'],
2,
'{tubes}-circle-15',
4,
'{tubes}-square-15',
8,
'{tubes}-octagon-15',
'{tubes}-circle-15' // default
]
Использование case
'icon-image': [
'case',
['==', ['get', 'tap_ports'], 2],
'{tubes}-circle-15',
['==', ['get', 'tap_ports'], 4],
'{tubes}-square-15',
['==', ['get', 'tap_ports'], 4],
'{tubes}-octagon-15',
'{tubes}-circle-15' // default
]
Использование property
и stops
'icon-image': {
property: 'tap_ports',
type: 'categorical',
stops: [
[2, '{tubes}-circle-15'],
[4, '{tubes}-square-15'],
[8, '{tubes}-octagon-15']
]
}
Все они не производят никаких значков.
Кроме того, если я пытаюсь зарегистрировать визуализированные объекты из этого слоя, используя queryRenderedFeatures
, я вижу только пустые массивы, поэтому объекты не отображаются из-за моих попыток.
Если я просто установлю
'icon-image': '{tubes}-circle-15'
все отрисовывается нормально, но, конечно, только как круги.