ol/expr/expression
Определения типов
-
ArgValidator()
-
Валидатор аргументов выполняет различные проверки аргументов закодированного выражения и возвращает разобранные аргументы, если они есть. Второй аргумент — тип возвращаемого значения выражения вызова.
-
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)
-
Значения могут быть литералами или другими операторами, поскольку они вычисляются рекурсивно. Литеральные значения могут иметь следующие типы:
booleannumber-
number[](длина массивов чисел может быть только 2, 3 или 4) stringColor
-
-
LiteralValue{boolean} {number} {string} {Array.<number>}
-
Parser()
-
Второй аргумент — ожидаемый тип.
-
ParsingContext{Object}
-
Свойства:
Имя Тип Описание variablesMap<ValueType> Переменные, на которые ссылается оператор 'var'; ключ — имя, значение — тип.
propertiesMap<ValueType> Свойства, на которые ссылается оператор 'get'; ключ — имя, значение — тип.
featureIdboolean В стиле используется идентификатор объекта.
geometryTypeboolean В стиле используется тип геометрии объекта.
mCoordinateboolean В стиле используется координата M геометрий
mapStateboolean В стиле используется состояние карты (состояние вида или прошедшее время).
inputVariablesStyleVariables | 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