Module: ol/style/expressions

ol/style/expressions


style 表达式的操作符和实用工具的应用。

成员变量

module:ol/style/expressions.ValueTypes{number}

从给定的值或者表达式中推断出可能的类型。 注意:这些是二进制标志

类型定义

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

用于文字风格参数的基本类型;可以是数字文字或运算符的输出,而运算符又需要 ExpressionValue 参数。

以下是可以使用的操作符:

  • 读取操作符:

    • ['band', bandIndex, xOffset, yOffset] 只能用于瓦片图层。 从资源(source)数据的波段(band) 的索引(bandIndex) 获取像素值。 资源数据的第一个 索引(bandIndex) 是 1。获取的像素值在0-1之间。 TileImage资源 包含四个波段:红、绿、蓝和 alpha(透明度)。 DataTileSource 资源可以有任意数量的波段,这取决于底层数据源和配置xOffsetyOffset 是可选参数, 他们允许在 x 和 y 轴上设置像素的偏移,可用于在相邻像素的采样。
    • ['get', 'attributeName'] 获取一个特征属性(在着色器中会以 a_ 为前缀) 注意:这些属性将取自提供给渲染器的属性。
    • ['resolution'] 返回当前分辨率
    • ['time'] 返回自图层创建的时间(秒)
    • ['var', 'varName']从样式变量中获取值,如果是 undefined 则返回 0
    • ['zoom']返回当前地图等级
  • 数学操作符:

    • ['*', value1, value2] 相乘 value1 by value2
    • ['/', value1, value2] 相除 value1 by value2
    • ['+', value1, value2] 相加 value1 and value2
    • ['-', value1, value2] 相减 value2 from value1
    • ['clamp', value, low, high] 限制(上限下限之间) value between low and high
    • ['%', value1, value2] 百分比 of value1 % value2 (modulo)
    • ['^', value1, value2] 乘方 value1 raised to the value2 power
    • ['abs', value1] 绝对值 value1
    • ['floor', value1] 向下近似取整 less than or equal to value1
    • ['round', value1] 近似取整 value1
    • ['ceil', value1] 向上近似取整 greater than or equal to value1
    • ['sin', value1] 正弦值 value1
    • ['cos', value1] 余弦值 value1
    • ['atan', value1, value2] 反正切 atan2(value1, value2). If value2 is not provided, returns atan(value1)
  • 转换操作符:

    • ['case', condition1, output1, ...conditionN, outputN, fallback] 选择对应条件评估为 "true "的第一个输出。 如果没有找到匹配,则返回回退值。 所有的条件应该是布尔值,输出和回退可以是任何种类。

      PS: 应该就是 switch 。fallback 是 default。

    • ['match', input, match1, output1, ...matchN, outputN, fallback] 将输入值与所有提供的matchX值进行比较,返回与第一个有效匹配的输出。 如果没有找到匹配值,则返回后备值。输入值和matchX值必须是相同的类型,可以是数字或字符串。 outputX和后备值必须是相同的类型,可以是任何类型。

      PS:应该就是 indexOf。如果都不匹配,返回默认值。

    • ['interpolate', interpolation, input, stop1, output1, ...stopN, outputN] 通过在输入和输出对之间插值返回一个值; 插值可以是['线性']或['指数',基数],其中基数是从停止A到停止B的增加率(即插值比率提高的功率); 值为1相当于['线性']。注意:输入将被夹在stop1和stopN之间, 这意味着所有的输出值将由output1和outputN之间组成。

      PS:应该就是插值算法。

  • 逻辑操作符:

    • ['<', value1, value2] 小于 true if value1 is strictly lower than value2, or false otherwise.
    • ['<=', value1, value2] 小于等于 true if value1 is lower than or equals value2, or false otherwise.
    • ['>', value1, value2] 大于 true if value1 is strictly greater than value2, or false otherwise.
    • ['>=', value1, value2] 大于等于 true if value1 is greater than or equals value2, or false otherwise.
    • ['==', value1, value2] 等于 true if value1 equals value2, or false otherwise.
    • ['!=', value1, value2] 不等于 true if value1 does not equal value2, or false otherwise.
    • ['!', value1] 取非 false if value1 is true or greater than 0, or true otherwise.
    • ['all', value1, value2, ...] 是否全为真 true if all the inputs are true, false otherwise.
    • ['any', value1, value2, ...] 任一为真 true if any of the inputs are true, false otherwise.
    • ['between', value1, value2, value3] 处于之间 true if value1 is contained between value2 and value3 (inclusively), or false otherwise.
  • 运算操作符:

    • ['array', value1, ...valueN]数字值创建一个数字数组;请注意,目前数值的数量只能是2、3或4。
    • ['color', red, green, blue, alpha] 从数字值创建颜色值;alpha(透明度) 参数是可选的; 如果不指定,它将被设置为 1。注意:红色、绿色和蓝色的值必须在 0 到 255 之间; alpha 在 0到 1 之间。
    • ['palette', index, colors] 使用给定的索引从一个颜色数组中挑选一个 color 值; 索引表达式必须作为一个数字; 颜色数组中的项目必须是十六进制颜色的字符串(例如'#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范围)。

Values can either be literals or another operator, as they will be evaluated recursively. Literal values can be of the following types: 值可以是字面量,也可以是另一个运算符,因为它们将被递归求值。文字值可以是以下类型: 值可以是文字,也可以是其他运算符,因为他们最终会被递归计算。 文字值可以是一下类型:

  • boolean
  • number
  • string
  • Color

Operator{Object}

操作符声明必须包含两个方法: getReturnTypetoGlsl, 前者返回基于操作符参数的类型,后者返回与 GLSL-compatible 字符串。 注意: 这两种方法都可以递归地处理参数。

Properties:
Name Type Description
getReturnType function

返回一个或多个类型

toGlsl function

返回 GLSL-compatible 字符串。 注意:接受一个可选的类型提示作为第三个参数。

ParsingContext{Object}

解析表达式时上下文的可用性。

Properties:
Name Type Argument Description
inFragmentShader boolean <optional>

如果 false,意味着表达式输出应该用于顶点着色器。

variables Array.<string>

用于表达式的变量集合,包含无前缀名称

attributes Array.<string>

用于表达式的属性集合,包含无前缀名称

stringLiteralsMap Object.<string, number>

此对象将遇到的所有字符串值映射为数字

functions Object.<string, string>

样式使用的函数的查找。

bandCount number <optional>

每像素波段的数量。

paletteTextures Array <optional>

样式使用的调色板列表。