Type Definitions
-
参数验证器对编码表达式的参数应用各种检查, 并返回解析后的参数(如果有)。第二个参数是调用表达式的返回类型。
-
EncodedExpression{LiteralValue} {Array}
-
-
Expression{LiteralExpression} {CallExpression}
-
-
ExpressionValue{Array.<*>} {Color} {string} {number} {boolean}
-
用于字面样式参数的基础类型;可以是数字字面量或运算符的输出, 运算符又接受
ExpressionValue参数。有关可用运算符的详细信息请参见下方(标注了仅限 WebGL 或 Canvas 的说明)。
读取运算符:
['band', bandIndex, xOffset, yOffset]For tile layers only. Fetches pixel values from bandbandIndexof the source's data. The firstbandIndexof the source data is1. Fetched values are in the 0..1 range.TileImagesources have 4 bands: red, green, blue and alpha.DataTileSourcesources can have any number of bands, depending on the underlying data source andconfiguration.xOffsetandyOffsetare optional and allow specifying pixel offsets for x and y. This is used for sampling data from neighboring pixels (WebGL only).['get', attributeName]fetches a feature property value, similar tofeature.get('attributeName').['get', attributeName, keyOrArrayIndex, ...](Canvas only) Access nested properties and array items of a feature property. The result isundefinedwhen there is nothing at the specified key or index.['geometry-type']returns a feature's geometry type as string, either: 'LineString', 'Point' or 'Polygon'Multi*values are returned as their singular equivalentCirclegeometries are returned as 'Polygon'GeometryCollectiongeometries are returned as the type of the first geometry found in the collection (WebGL only).['resolution']returns the current resolution['time']The time in seconds since the creation of the layer (WebGL only).['var', 'varName']fetches a value from the style variables; will throw an error if that variable is undefined['zoom']The current zoom level (WebGL only).['line-metric']returns the M component of the current point on a line (WebGL only); in case where the geometry layout of the line does not contain an M component (e.g. XY or XYZ), 0 is returned; 0 is also returned for geometries other than lines. Please note that the M component will be linearly interpolated between the two points composing a segment.
数学运算符:
['*', value1, value2, ...]将值相乘(数字或颜色)['/', value1, value2]将value1除以value2['+', value1, value2, ...]将值相加['-', value1, value2]从value1中减去value2['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]selects the first output whose corresponding condition evaluates totrue. If no match is found, returns thefallbackvalue. All conditions should beboolean, output and fallback can be any kind.['match', input, match1, output1, ...matchN, outputN, fallback]compares theinputvalue against all providedmatchXvalues, returning the output associated with the first valid match. If no match is found, returns thefallbackvalue.inputandmatchXvalues must all be of the same type, and can benumberorstring.outputXandfallbackvalues must be of the same type, and can be of any kind.['interpolate', interpolation, input, stop1, output1, ...stopN, outputN]returns a value by interpolating between pairs of inputs and outputs;interpolationcan either be['linear']or['exponential', base]wherebaseis the rate of increase from stop A to stop B (i.e. power to which the interpolation ratio is raised); a value of 1 is equivalent to['linear'].inputandstopXvalues must all be of typenumber.outputXvalues can benumberorcolorvalues. Note:inputwill be clamped betweenstop1andstopN, meaning that all output values will be comprised betweenoutput1andoutputN.['string', value1, value2, ...]returns the first value in the list that evaluates to a string. An example would be to provide a default value for get:['string', ['get', 'propertyname'], 'default value']](Canvas only).['number', value1, value2, ...]returns the first value in the list that evaluates to a number. An example would be to provide a default value for get:['string', ['get', 'propertyname'], 42]](Canvas only).['coalesce', value1, value2, ...]returns the first value in the list which is not null or undefined. An example would be to provide a default value for get:['coalesce', ['get','propertyname'], 'default value']](Canvas only).
逻辑运算符:
['<', value1, value2]returnstrueifvalue1is strictly lower thanvalue2, orfalseotherwise.['<=', value1, value2]returnstrueifvalue1is lower than or equalsvalue2, orfalseotherwise.['>', value1, value2]returnstrueifvalue1is strictly greater thanvalue2, orfalseotherwise.['>=', value1, value2]returnstrueifvalue1is greater than or equalsvalue2, orfalseotherwise.['==', value1, value2]returnstrueifvalue1equalsvalue2, orfalseotherwise.['!=', value1, value2]returnstrueifvalue1does not equalvalue2, orfalseotherwise.['!', value1]returnsfalseifvalue1istrueor greater than0, ortrueotherwise.['all', value1, value2, ...]returnstrueif all the inputs aretrue,falseotherwise.['any', value1, value2, ...]returnstrueif any of the inputs aretrue,falseotherwise.['has', attributeName, keyOrArrayIndex, ...]returnstrueif feature properties include the (nested) keyattributeName,falseotherwise. Note that for WebGL layers, the hardcoded value-9999999is used to distinguish when a property is not defined.['between', value1, value2, value3]returnstrueifvalue1is contained betweenvalue2andvalue3(inclusively), orfalseotherwise.['in', needle, haystack]returnstrueifneedleis found inhaystack, andfalseotherwise. This operator has the following limitations:haystackhas to be an array of numbers or strings (searching for a substring in a string is not supported yet)- Only literal arrays are supported as
haystackfor now; this means thathaystackcannot be the result of an expression. Ifhaystackis an array of strings, use theliteraloperator to disambiguate from an expression:['literal', ['abc', 'def', 'ghi']]This works as well for number arrays although it is not required. Mixing types (numbers and strings) will produce undefined results.
转换运算符:
['array', value1, ...valueN]creates a numerical array fromnumbervalues; please note that the amount of values can currently only be 2, 3 or 4 (WebGL only).['color', red, green, blue, alpha]or['color', shade, alpha]creates acolorvalue fromnumbervalues; thealphaparameter is optional; if not specified, it will be set to 1 (WebGL only). Note:red,greenandblueorshadecomponents must be values between 0 and 255;alphabetween 0 and 1.['palette', index, colors]picks acolorvalue from an array of colors using the given index; theindexexpression must evaluate to a number; the items in thecolorsarray must be strings with hex colors (e.g.'#86A136'), colors using the rgba[a] functional notation (e.g.'rgb(134, 161, 54)'or'rgba(134, 161, 54, 1)'), named colors (e.g.'red'), or array literals with 3 ([r, g, b]) or 4 ([r, g, b, a]) values (with r, g, and b in the 0-255 range and a in the 0-1 range) (WebGL only).['to-string', value]converts the input value to a string. If the input is a boolean, the result is "true" or "false". If the input is a number, it is converted to a string as specified by the "NumberToString" algorithm of the ECMAScript Language Specification. If the input is a color, it is converted to a string of the form "rgba(r,g,b,a)". (Canvas only)
值可以是字面量或另一个运算符,因为它们将被递归求值。 字面值可以是以下类型:
booleannumbernumber[](number arrays can only have a length of 2, 3 or 4)stringColor
-
LiteralValue{boolean} {number} {string} {Array.<number>}
-
-
第二个参数是期望的类型。
-
ParsingContext{Object}
-
Properties:
Name Type Description variablesSet.<string> 使用 'var' 运算符引用的变量。
propertiesSet.<string> 使用 'get' 运算符引用的属性。
featureIdboolean 样式使用了要素 ID。
geometryTypeboolean 样式使用了要素几何图形类型。
mCoordinateboolean 样式使用了几何图形的 M 坐标。
mapStateboolean 样式使用了地图状态(视图状态或已用时间)。