类型定义
-
参数验证器对编码表达式的参数执行多种检查,并返回解析后的参数(如有)。第二个参数是调用表达式的返回类型。
-
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 个波段:红色、绿色、蓝色和 alpha。DataTileSource源可具有任意数量的波段,具体取决于底层数据源和configuration。xOffset和yOffset为可选参数,用于指定 x 和 y 方向的像素偏移量。此功能用于从相邻像素采样数据(仅限 WebGL)。['get', attributeName]检索要素属性值,类似于feature.get('attributeName')。['get', attributeName, keyOrArrayIndex, ...](仅限画布)用于访问要素属性的嵌套属性和数组项。当指定键或索引处无内容时,结果为undefined。['geometry-type']返回要素的几何类型(字符串形式),可能的值包括 'LineString'、'Point' 或 'Polygon'。Multi*返回的值采用单数形式(例如 'Point' 而非 'Points')。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]从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]选择第一个输出,其对应条件的计算结果为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时,['<', value1, value2]返回true;否则返回false。 - 当
value1小于或等于value2时,['<=', value1, value2]返回true;否则返回false。 - 当
value1严格大于value2时,['>', value1, value2]返回true;否则返回false。 - 当
value1大于或等于value2时,['>=', value1, value2]返回true;否则返回false。 - 若
value1等于value2,则['==', value1, value2]返回true;否则返回false。 - 当
value1不等于value2时,['!=', value1, value2]返回true;否则返回false。 - 如果
value1等于true或大于0,则['!', value1]返回false;否则返回true。 - 当所有输入为
true时,['all', value1, value2, ...]返回true;否则返回false。 - 若任一输入为
true,则['any', value1, value2, ...]返回true;否则返回false。 - 如果要素属性包含(嵌套)键
attributeName,则['has', attributeName, keyOrArrayIndex, ...]返回true;否则返回false。请注意,对于 WebGL 图层,使用硬编码值-9999999来标识未定义的属性。 - 如果
value1位于value2和value3之间(含端点),则['between', value1, value2, value3]返回true,否则返回false。 - 当在
haystack中发现needle时,['in', needle, haystack]返回true;否则返回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]依据number的值生成color值;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"。若输入为数字,则依据 ECMAScript 语言规范中的 "NumberToString" 算法将其转换为字符串。若输入为颜色,则将其转换为 "rgba(r,g,b,a)" 格式的字符串。(仅限 Canvas)
值可以是字面量或另一个运算符,因为它们将被递归求值。字面量可以是以下类型:
booleannumbernumber[](数字数组的长度必须为 2、3 或 4)stringColor
-
LiteralValue{boolean} {number} {string} {Array.<number>}
-
-
第二个参数应为期望类型。
-
ParsingContext{Object}
-
属性:
Name Type 描述 variablesSet.<string> 使用'var'关键字引用的变量。
propertiesSet.<string> 使用“get”运算符引用的属性。
featureIdboolean 样式使用要素ID。
geometryTypeboolean 该样式使用要素几何类型。
mapStateboolean 该样式使用地图状态(视图状态或流逝时间)。