Я не могу заставить работать выражение стиля Mapbox.У меня был очень простой «бинарный» режим рисования:
'paint': {
'circle-radius': 16,
'circle-color': [
'case',
['boolean', ['feature-state', 'selected'], false],
'#adff2f', // colors.green
'#999999', // colors.none
],
},
. Теперь мне нужно сделать его более сложным, эквивалент этого псевдокода:
if(featureState.selected){
switch(featureState.status){
case 'high': colors.high
case 'low': colors.low
default: colors.normal
}
} else {
colors.none
}
Когда я начинаю вкладывать этиВ условиях, когда краска перестает работать, возможно, мой синтаксис неверен.Примерно так:
'paint': {
'circle-radius': 16,
'circle-color': [
'case',
['boolean', ['feature-state', 'selected'], false],
['match',
['get', 'status'],
'high', '#ffa500', // colors.high
'low', '#ba0000', // colors.low
'#1d8aaf', // colors.normal
],
'#999999', // colors.none
],
},
==== РЕДАКТИРОВАТЬ ====
Тем временем мои данные изменились, и вот обновленный псевдокод:
if(featureState.selected){
switch(featureState.status){
less than 2: colors.normal
else: colors.high
}
} else {
colors.none
}
и реальный код, который я пытаюсь использовать (теперь вместо него используется step
):
'circle-color': [
'case',
['boolean', ['feature-state', 'selected'], false],
['step',
['get', 'load'],
'#1d8aaf', 2 // colors.normal
'#ffa500', // colors.high
],
'#999999', // colors.none
],
И это работает.