Как работает пошаговое выражение в Mapbox?

Как работает пошаговая функция в свойстве массива Mapbox fill-color ?? Пока:

R=[ 'interpolate', ['linear'],['number',['get', dim_properties.name]], -150, "#800026", -133, "#bd0026", -116, "#e31a1c", -100, "#fc4e2a", -83, "#fd8d3c", -66, "#feb24c", -50, "#fed976", -33, "#ffeda0", -16, "#ffffcc", 0, "#ffffff"]

map.addLayer({
            id: 'er',
            type: 'fill',
            source: {
              type: 'vector',
              url: pixelling_url
            },
            'source-layer':pixelling_source_layer,
                paint: {

        'fill-color':R
    }

работает идеально,

этот другой код не делает.

R=[ 'step',['get', dim_properties.name]], -150, "#800026", -133, "#bd0026", -116, "#e31a1c", -100, "#fc4e2a", -83, "#fd8d3c", -66, "#feb24c", -50, "#fed976", -33, "#ffeda0", -16, "#ffffcc", 0, "#ffffff"]

map.addLayer({
            id: 'er',
            type: 'fill',
            source: {
              type: 'vector',
              url: pixelling_url
            },
            'source-layer':pixelling_source_layer,
                paint: {

        'fill-color':R
    }

Сообщение об ошибке: «paint.fill-color: ожидается четное количество аргументов.

Обратите внимание, что разница между двумя фрагментами кода заключается только в определении R.


person Mauro Gentile    schedule 26.10.2018    source источник


Ответы (1)


Для ступенчатых выражений вам необходимо установить базовое значение. Простое удаление значения первого разрыва, если хотите, должно решить вашу проблему. Прямо сейчас Mapbox считывает только три аргумента (тип выражения, свойство, набор точек останова), когда ищет четыре (тип выражения, значение свойства, базовое значение, набор точек останова). В принципе, вам не нужно определять минимальное значение. Mapbox GL сделает вывод, что базовое значение должно быть присвоено любым функциям, которые находятся ниже первой контрольной точки. В этом случае это будут любые функции, удовлетворяющие условию dim_properties.name < -133

    R = [
      'step', // arg 1
      ['get', 'dim_properties.name'], // arg 2
      '#800026', // arg 3
      -133, '#bd0026', // rest of the expression is arg 4
      -116, '#e31a1c',
      -100, '#fc4e2a',
      -83, '#fd8d3c',
      -66, '#feb24c',
      -50, '#fed976',
      -33, '#ffeda0',
      -16, '#ffffcc',
      0, '#ffffff'
     ]
person Robert Beatty    schedule 27.11.2018
comment
Спасибо, что раскрыли аргументы. Я столкнулся с той же проблемой, и это действительно помогло. - person Nathan Reese; 14.08.2019