模块:ol/expr/expression

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 个波段:红色、绿色、蓝色和 alpha。DataTileSource 源可具有任意数量的波段,具体取决于底层数据源和 configurationxOffsetyOffset 为可选参数,用于指定 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 限制在 lowhigh 之间

  • ['%', value1, value2] 返回 value1 % value2 的结果(取模)

  • ['^', value1, value2] 返回 value1value2 次幂

  • ['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 值。inputmatchX 的值必须同为同一类型,且可为 numberstringoutputXfallback 的值必须同为同一类型,且可为任意类型。
    • ['interpolate', interpolation, input, stop1, output1, ...stopN, outputN] 通过对输入输出对进行插值来返回一个数值;interpolation 可以是 ['linear']['exponential', base],其中 base 表示从停止点 A 到停止点 B 的增长率(即插值比所取的幂);当该值为 1 时,等效于 ['linear']inputstopX 的值必须均为 number 类型。outputX 的值可以是 numbercolor 类型的值。 注意:input 将被限制在 stop1stopN 的范围内,这意味着所有输出值将介于 output1outputN 之间。
    • ['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 位于 value2value3 之间(含端点),则 ['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)。注意:redgreen 以及 blueshade 组件的值必须在 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)

值可以是字面量或另一个运算符,因为它们将被递归求值。字面量可以是以下类型:

  • boolean
  • number
  • number[](数字数组的长度必须为 2、3 或 4)
  • string
  • Color

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

第二个参数应为期望类型。

ParsingContext{Object}

属性:
Name Type 描述
variables Set.<string>

使用'var'关键字引用的变量。

properties Set.<string>

使用“get”运算符引用的属性。

featureId boolean

样式使用要素ID。

geometryType boolean

该样式使用要素几何类型。

mapState boolean

该样式使用地图状态(视图状态或流逝时间)。