Spec-Zone.ru › OpenLayers

ol/expr/expression


Определения типов

ArgValidator()

expr/expression.js, строка 612

Валидатор аргументов выполняет различные проверки аргументов закодированного выражения и возвращает разобранные аргументы, если они есть. Второй аргумент — тип возвращаемого значения выражения вызова.

EncodedExpression{LiteralValue} {Array}

Expression{LiteralExpression} {CallExpression}

ExpressionValue{Array.<*>} {Color} {string} {number} {boolean}

Базовый тип для литеральных параметров стиля; может быть числовым литералом или результатом работы оператора, который, в свою очередь, принимает аргументы ExpressionValue.

Подробная информация о доступных операторах приведена ниже (с пометками для операторов, доступных только в WebGL или Canvas).

Операторы чтения:

  • ['band', bandIndex, xOffset, yOffset] Только для тайловых слоёв. Получает значения пикселей из полосы bandIndex данных источника. Первая bandIndex данных источника — это 1. Полученные значения находятся в диапазоне 0..1. Источники TileImage имеют 4 полосы: красную, зелёную, синюю и альфа-канал. Источники DataTileSource могут иметь любое количество полос в зависимости от базового источника данных и configuration. xOffset и yOffset — необязательные параметры, позволяющие задать смещения пикселей по x и y. Это используется для выборки данных из соседних пикселей (только WebGL).
  • ['get', attributeName] получает значение свойства объекта, аналогично feature.get('attributeName').
  • ['get', attributeName, keyOrArrayIndex, ...] (только Canvas) Обращается к вложенным свойствам и элементам массива свойства объекта. Если по указанному ключу или индексу ничего нет, результатом будет undefined.
  • ['geometry-type'] возвращает тип геометрии объекта в виде строки: 'LineString', 'Point' или 'Polygon'. Значения Multi* возвращаются в единственном числе Circle геометрии возвращаются как 'Polygon' GeometryCollection геометрии возвращаются как тип первой найденной в коллекции геометрии (только WebGL).
  • ['resolution'] возвращает текущее разрешение
  • ['time'] Время в секундах, прошедшее с момента создания слоя (только WebGL).
  • ['var', 'varName'] получает значение из переменных стиля; вызывает ошибку, если переменная не определена
  • ['zoom'] Текущий уровень масштабирования (только WebGL).
  • ['line-metric'] возвращает компоненту M текущей точки на линии (только WebGL); если в раскладке геометрии линии нет компоненты M (например, XY или XYZ), возвращается 0; для геометрий, отличных от линий, также возвращается 0. Обратите внимание, что значение компоненты M будет линейно интерполироваться между двумя точками, образующими сегмент.

Математические операторы:

  • ['*', value1, value2, ...] перемножает значения (числа или цвета)

  • ['/', value1, value2] делит value1 на value2

  • ['+', value1, value2, ...] складывает значения

  • ['-', value1, value2] вычитает value2 из value1

  • ['clamp', value, low, high] ограничивает value диапазоном от low до high

  • ['%', value1, value2] возвращает результат value1 % value2 (остаток от деления)

  • ['^', value1, value2] возвращает значение value1 в степени value2

  • ['abs', value1] возвращает абсолютное значение value1

  • ['floor', value1] возвращает наибольшее целое число, меньшее или равное value1

  • ['round', value1] возвращает ближайшее целое число к value1

  • ['ceil', value1] возвращает наименьшее целое число, большее или равное value1

  • ['sin', value1] возвращает синус value1

  • ['cos', value1] возвращает косинус value1

  • ['atan', value1, value2] возвращает atan2(value1, value2). Если value2 не задано, возвращает atan(value1)

  • ['sqrt', value1] возвращает квадратный корень из value1

  • Операторы преобразования:

    • ['case', condition1, output1, ...conditionN, outputN, fallback] выбирает первый выходной результат, для которого соответствующее условие имеет значение true. Если совпадение не найдено, возвращает значение fallback. Все условия должны быть boolean; выходное значение и значение по умолчанию могут быть любого типа.
    • ['match', input, match1, output1, ...matchN, outputN, fallback] сравнивает значение input со всеми заданными значениями matchX и возвращает выходное значение, связанное с первым совпадением. Если совпадение не найдено, возвращает значение fallback. Значения input и matchX должны быть одного типа: number или string. Значения outputX и fallback должны быть одного типа, который может быть любым.
    • ['interpolate', interpolation, input, stop1, output1, ...stopN, outputN] возвращает значение, интерполируя между парами входных и выходных значений; interpolation может быть ['linear'] или ['exponential', base], где base — скорость увеличения от контрольной точки A до контрольной точки B (то есть степень, в которую возводится коэффициент интерполяции); значение 1 эквивалентно ['linear']. Все значения input и stopX должны иметь тип number. Значениями outputX могут быть number или color. Примечание: input будет ограничено диапазоном от stop1 до stopN, поэтому все выходные значения будут находиться в диапазоне от output1 до outputN.
    • ['string', value1, value2, ...] возвращает первое значение в списке, результатом вычисления которого является строка. Например, можно задать значение по умолчанию для get: ['string', ['get', 'propertyname'], 'default value']] (только Canvas).
    • ['number', value1, value2, ...] возвращает первое значение в списке, результатом вычисления которого является число. Например, можно задать значение по умолчанию для get: ['string', ['get', 'propertyname'], 42]] (только Canvas).
    • ['coalesce', value1, value2, ...] возвращает первое значение в списке, которое не является null или undefined. Например, можно задать значение по умолчанию для get: ['coalesce', ['get','propertyname'], 'default value']] (только Canvas).
  • Логические операторы:

    • ['<', value1, value2] возвращает true, если value1 строго меньше value2, и false в противном случае.
    • ['<=', value1, value2] возвращает true, если value1 меньше или равно value2, и false в противном случае.
    • ['>', value1, value2] возвращает true, если value1 строго больше value2, и false в противном случае.
    • ['>=', value1, value2] возвращает true, если value1 больше или равно value2, и false в противном случае.
    • ['==', value1, value2] возвращает true, если value1 равно value2, и false в противном случае.
    • ['!=', value1, value2] возвращает true, если value1 не равно value2, и false в противном случае.
    • ['!', value1] возвращает false, если value1 равно true или больше 0, и true в противном случае.
    • ['all', value1, value2, ...] возвращает true, если все входные значения равны true, и false в противном случае.
    • ['any', value1, value2, ...] возвращает true, если хотя бы одно из входных значений равно true, и false в противном случае.
    • ['has', attributeName, keyOrArrayIndex, ...] возвращает true, если среди свойств объекта есть (вложенный) ключ attributeName, и false в противном случае. Обратите внимание, что в слоях WebGL для определения отсутствующего свойства используется жёстко заданное значение -9999999.
    • ['between', value1, value2, value3] возвращает true, если value1 находится между value2 и value3 (включительно), и false в противном случае.
    • ['in', needle, haystack] возвращает true, если needle содержится в haystack, и false в противном случае. Этот оператор имеет следующие ограничения:
      • haystack должен быть массивом чисел или строк (поиск подстроки в строке пока не поддерживается)
      • Пока поддерживаются только литеральные массивы в качестве haystack; это означает, что haystack не может быть результатом выражения. Если haystack — массив строк, используйте оператор literal, чтобы отличить его от выражения: ['literal', ['abc', 'def', 'ghi']] Это также работает для массивов чисел, хотя в этом случае не обязательно. Смешение типов (чисел и строк) приведёт к неопределённым результатам.
  • Операторы преобразования:

    • ['array', value1, ...valueN] создаёт числовой массив из значений number; обратите внимание, что в настоящее время количество значений может быть только 2, 3 или 4 (только WebGL).
    • ['color', red, green, blue, alpha] или ['color', shade, alpha] создаёт значение color из значений number; параметр alpha необязателен; если он не задан, ему присваивается значение 1 (только WebGL). Примечание: компоненты red, green и blue или shade должны быть в диапазоне от 0 до 255; alpha — в диапазоне от 0 до 1.
    • ['palette', index, colors] выбирает значение color из массива цветов по заданному индексу; результатом вычисления выражения index должно быть число; элементы массива colors должны быть строками с шестнадцатеричными кодами цветов (например, '#86A136'), цветами в функциональной записи rgba[a] (например, 'rgb(134, 161, 54)' или 'rgba(134, 161, 54, 1)'), именованными цветами (например, 'red') или литералами массива из 3 ([r, g, b]) или 4 ([r, g, b, a]) значений (где r, g и b находятся в диапазоне 0–255, а a — в диапазоне 0–1) (только WebGL).
    • ['to-string', value] преобразует входное значение в строку. Если входное значение — логическое, результатом будет "true" или "false". Если входное значение — число, оно преобразуется в строку согласно алгоритму "NumberToString" спецификации языка ECMAScript. Если входное значение — цвет, оно преобразуется в строку вида "rgba(r,g,b,a)". (только Canvas)

Значения могут быть литералами или другими операторами, поскольку они вычисляются рекурсивно. Литеральные значения могут иметь следующие типы:

  • boolean
  • number
  • number[] (длина массивов чисел может быть только 2, 3 или 4)
  • string
  • Color

LiteralValue{boolean} {number} {string} {Array.<number>}

Parser()

expr/expression.js, строка 439

Второй аргумент — ожидаемый тип.

ParsingContext{Object}

Свойства:
Имя Тип Описание
variables Map<ValueType>

Переменные, на которые ссылается оператор 'var'; ключ — имя, значение — тип.

properties Map<ValueType>

Свойства, на которые ссылается оператор 'get'; ключ — имя, значение — тип.

featureId boolean

В стиле используется идентификатор объекта.

geometryType boolean

В стиле используется тип геометрии объекта.

mCoordinate boolean

В стиле используется координата M геометрий

mapState boolean

В стиле используется состояние карты (состояние вида или прошедшее время).

inputVariables StyleVariables | undefined

Значения переменных (то есть переменных стиля), передаваемые на вход при разборе для уточнения типов

ValueType{number}

© 2005-present, OpenLayers Contributors All rights reserved.Licensed under the BSD 2-Clause License.
https://openlayers.org/en/latest/apidoc/module-ol_expr_expression.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API