概述
可以将任何layout属性,paint属性或filter的值指定为表达式。Mapbox GL提供的表达式运算符包括:
- 数学运算符,用于对数值算术和其他运算
- 逻辑运算符,用于处理布尔值和做出条件判断
- 字符串运算符
- 数据运算符,提供对源要素属性的访问
- 相机运算符,可访问定义当前地图视图的参数
数据表达式
数据表达式允许要素的属性或状态确定其外观。常见的有:get
,has
,id
,或feature-state
。
{
"circle-color": [
"rgb",
// red is higher when feature.properties.temperature is higher
["get", "temperature"],
// green is always zero
0,
// blue is higher when feature.properties.temperature is lower
["-", 100, ["get", "temperature"]]
]
}
相机表达式
使用zoom操作符的任何表达式。这些表达式随着地图的层级缩放,动态的改变图层的外观。
{
"circle-radius": [
"interpolate", ["linear"], ["zoom"],
// zoom is 5 (or less) -> circle radius will be 1px
5, 1,
// zoom is 10 (or greater) -> circle radius will be 5px
10, 5
]
}
在相机表达式随时间的动态计算策略上,layout和paint属性有一个重要的区别:
- 每当缩放级别发生变化时,paint属性相机表达式将重新计算,即使只是轻微变化。例如,当地图在缩放级别4.1和4.6之间移动时,一个paint属性相机表达式将被不断地重新计算。
- layout属性相机表达式仅在整数缩放级别进行计算。当缩放级别从4.1变到4.6时,它不会被重新计算;只有当它超过5或低于4时,才会重新计算。
组合表达式
单个表达式可以混合使用数据操作符、相机操作符和其他操作符。
{
"circle-radius": [
"interpolate", ["linear"], ["zoom"],
// when zoom is 0, set each feature's circle radius to the value of its "rating" property
0, ["get", "rating"],
// when zoom is 10, set each feature's circle radius to four times the value of its "rating" property
10, ["*", 4, ["get", "rating"]]
]
}
类型系统
类型断言操作符:array
, boolean
, number
, 和 string
.
类型转换操作符: to-boolean
, to-number
, to-string
, 或者 to-color