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]相乘value1byvalue2['/', value1, value2]相除value1byvalue2['+', value1, value2]相加value1andvalue2['-', value1, value2]相减value2fromvalue1['clamp', value, low, high]限制(上限下限之间)valuebetweenlowandhigh['%', value1, value2]百分比 ofvalue1 % value2(modulo)['^', value1, value2]乘方value1raised to thevalue2power['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). Ifvalue2is 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]小于trueifvalue1is strictly lower thanvalue2, orfalseotherwise.['<=', value1, value2]小于等于trueifvalue1is lower than or equalsvalue2, orfalseotherwise.['>', value1, value2]大于trueifvalue1is strictly greater thanvalue2, orfalseotherwise.['>=', value1, value2]大于等于trueifvalue1is greater than or equalsvalue2, orfalseotherwise.['==', value1, value2]等于trueifvalue1equalsvalue2, orfalseotherwise.['!=', value1, value2]不等于trueifvalue1does not equalvalue2, orfalseotherwise.['!', value1]取非falseifvalue1istrueor greater than0, ortrueotherwise.['all', value1, value2, ...]是否全为真trueif all the inputs aretrue,falseotherwise.['any', value1, value2, ...]任一为真trueif any of the inputs aretrue,falseotherwise.['between', value1, value2, value3]处于之间trueifvalue1is contained betweenvalue2andvalue3(inclusively), orfalseotherwise.
运算操作符:
['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: 值可以是字面量,也可以是另一个运算符,因为它们将被递归求值。文字值可以是以下类型: 值可以是文字,也可以是其他运算符,因为他们最终会被递归计算。 文字值可以是一下类型:
booleannumberstringColor
 - 
                            
Operator{Object}
 - 
                            
操作符声明必须包含两个方法:
getReturnType和toGlsl, 前者返回基于操作符参数的类型,后者返回与 GLSL-compatible 字符串。 注意: 这两种方法都可以递归地处理参数。Properties:
Name Type Description getReturnTypefunction 返回一个或多个类型
toGlslfunction 返回 GLSL-compatible 字符串。 注意:接受一个可选的类型提示作为第三个参数。
 - 
                            
ParsingContext{Object}
 - 
                            
解析表达式时上下文的可用性。
Properties:
Name Type Argument Description inFragmentShaderboolean <optional> 
如果 false,意味着表达式输出应该用于顶点着色器。
variablesArray.<string> 用于表达式的变量集合,包含无前缀名称。
attributesArray.<string> 用于表达式的属性集合,包含无前缀名称。
stringLiteralsMapObject.<string, number> 此对象将遇到的所有字符串值映射为数字
functionsObject.<string, string> 样式使用的函数的查找。
bandCountnumber <optional> 
每像素波段的数量。
paletteTexturesArray <optional> 
样式使用的调色板列表。