WebGL渲染点要素【译】
)
注: 本例使用的功能不是稳定API的一部分,可能会在不同版本之间发生变化。请参考API文档以了解最新版本中支持的内容。
此示例演示了如何使用WebGLPointsLayer
在地图上显示大量的点要素。该图层被赋予了JSON格式的样式,这允许对最终渲染效果(表现、呈现)进行一定程度的定制。可以使用以下运算符:
- 读取运算符:
['get', 'attributeName']
:获取要素属性(着色器中将以a_
为前缀)注意:这些属性将从提供给渲染器的属性中获取['var', 'varName']
:从表示样式的变量中获取一个值,如果未定义,则为0['time']
:返回自创建图层以来的时间(以秒为单位)['zoom']
:返回当前的缩放级别['resolution']
:返回当前的分辨率
- 数学运算符:
['*', value1, value2]
:将value1
与value2
相乘['/', value1, value2]
:将value1
除以value2
['+', value1, value2]
:将value1
与value2
相加['-', value1, value2]
:将value1
与value2
相减['clamp', value, low, high]
:把一个值限制在低值和高值之间['%', value1, value2]
:返回value1%value2
(取模)的结果,即余数['^', value1, value2]
:返回value1
的value2次方
- 变换运算符:
['case', condition1, output1, ...conditionN, outputN, fallback]
:选择其相应条件第一个为真的的计算结果输出。如果未找到匹配项,则返回fallback
值。所有条件都应该是布尔值,输出和fallback
可以是任何类型。['match', input, match1, output1, ...matchN, outputN, fallback]
:将input
值与所有提供的matchX
值进行比较,返回与第一个有效匹配项关联的输出值。如果未找到匹配项,则返回fallback
值。input
和matchX
值必须属于同一类型,并且可以是数字或字符串。outputX
和fallback
值必须属于同一类型,并且可以是任何类型。['interpolate', interpolation, input, stop1, output1, ...stopN, outputN]
:通过在输入和输出对之间进行插值来返回值;插值可以是['linear'](线性)
或['exponential', base],
即[“指数”,基数]
,其中基数是stop A
到stop B
之间的增长率(即插值比率的幂值);值1相当于['linear']
即[线性]
。input
和stopX
值都必须是number
类型。outputX
值可以是number
或color
。注意:输入将被限制在stop1
和stopN
之间,这意味着所有输出值都将包含在output1
和outputN
之间。
- 逻辑运算符:
['<', 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]
:如果value1
为true
或大于0
,则返回false
,否则返回true
。['between', value1, value2, value3]
:如果value1
包含在value2
和value3
之间(包括在内),则返回true
,否则返回false
。
- 转换运算符:
['array', value1, ...valueN]
:根据数值创建一个数字数组;请注意,当前值的数量只能是2、3或4。['color', red, green, blue, alpha]
:根据数值创建颜色值;alpha
参数是可选的;如果未指定,则将其设置为1。注意:红色、绿色和蓝色分量的值必须介于0和255之间;alpha
值介于0和1之间。值可以是字面量(literals),也可以是其他运算符,因为它们将被递归求值。字面值可以是以下类型:- 布尔值
- 数值
- 字符串
关于字面量(literals)请参见MDN文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Grammar_and_types#%E5%AD%97%E9%9D%A2%E9%87%8F_literals
main.js
代码如下:
1 | import GeoJSON from 'ol/format/GeoJSON.js'; |
界面布局文件index.html
代码如下:
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GIS学习笔记!
评论