Получение вложенных / сложных выражений mapbox gl js для работы - PullRequest
0 голосов
/ 08 апреля 2019

Я не могу заставить работать выражение стиля 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
],

И это работает.

...