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
资源可以有任意数量的波段,这取决于底层数据源和配置
。xOffset
和yOffset
是可选参数, 他们允许在 x 和 y 轴上设置像素的偏移,可用于在相邻像素的采样。['get', 'attributeName']
获取一个特征属性(在着色器中会以a_
为前缀) 注意:这些属性将取自提供给渲染器的属性。['resolution']
返回当前分辨率['time']
返回自图层创建的时间(秒)['var', 'varName']
从样式变量中获取值,如果是 undefined 则返回 0['zoom']
返回当前地图等级
数学操作符:
['*', value1, value2]
相乘value1
byvalue2
['/', value1, value2]
相除value1
byvalue2
['+', value1, value2]
相加value1
andvalue2
['-', value1, value2]
相减value2
fromvalue1
['clamp', value, low, high]
限制(上限下限之间)value
betweenlow
andhigh
['%', value1, value2]
百分比 ofvalue1 % value2
(modulo)['^', value1, value2]
乘方value1
raised to thevalue2
power['abs', value1]
绝对值value1
['floor', value1]
向下近似取整 less than or equal tovalue1
['round', value1]
近似取整value1
['ceil', value1]
向上近似取整 greater than or equal tovalue1
['sin', value1]
正弦值value1
['cos', value1]
余弦值value1
['atan', value1, value2]
反正切atan2(value1, value2)
. Ifvalue2
is not provided, returnsatan(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
ifvalue1
is strictly lower thanvalue2
, orfalse
otherwise.['<=', value1, value2]
小于等于true
ifvalue1
is lower than or equalsvalue2
, orfalse
otherwise.['>', value1, value2]
大于true
ifvalue1
is strictly greater thanvalue2
, orfalse
otherwise.['>=', value1, value2]
大于等于true
ifvalue1
is greater than or equalsvalue2
, orfalse
otherwise.['==', value1, value2]
等于true
ifvalue1
equalsvalue2
, orfalse
otherwise.['!=', value1, value2]
不等于true
ifvalue1
does not equalvalue2
, orfalse
otherwise.['!', value1]
取非false
ifvalue1
istrue
or greater than0
, ortrue
otherwise.['all', value1, value2, ...]
是否全为真true
if all the inputs aretrue
,false
otherwise.['any', value1, value2, ...]
任一为真true
if any of the inputs aretrue
,false
otherwise.['between', value1, value2, value3]
处于之间true
ifvalue1
is contained betweenvalue2
andvalue3
(inclusively), orfalse
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}
-
操作符声明必须包含两个方法:
getReturnType
和toGlsl
, 前者返回基于操作符参数的类型,后者返回与 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>
样式使用的调色板列表。