其他
有些样式属性不再是实现特定样式目标的首选方法。 虽然它们仍受到支持,后期可能会删除,因此不建议在样式中使用它们,目前可供参考。
方法(Function)
任何layout
或paint
属性的值都可以作为函数指定。 函数允许您根据当前地图级别和/或要素的属性更改地图特性的外观。
base
可选属性。number
。默认值1。
插值曲线的指数基。它控制函数输出增加的速率。数值越高,输出越接近范围的顶端。当值接近1时,输出线性增加。
colorSpace
可选属性。string
。 "rgb"
, "lab"
, "hcl"
中的一种。
颜色插入的颜色空间。 在LAB和HCL这样的感知色彩空间中插入颜色往往会产生看起来更一致的颜色坡道,并且比在RGB空间中插入颜色更容易区分。
"rgb"
: 使用RGB颜色空间来插入颜色值。
"lab"
: 使用LAB颜色空间来插入颜色值。
"hcl"
: 使用HCL颜色空间来插入颜色值,分别插值色相、色度和亮度通道。
Zoom functions 允许地图功能的外观随地图的缩放级别而改变。 可以使用层级函数来创建深度视觉和控制数据密度。 每个stop
都是一个包含两个元素的数组:第一个是地图层级,第二个是函数输出值。
{
"circle-radius": {
"stops": [
// 缩放等级为5 -> 圆的半径是1像素
[5, 1],
// 缩放等级为10 -> 圆的半径是2像素
[10, 2]
]
}
}
在停止之间插入颜色、数字和数组属性的渲染值。 布尔值和字符串属性值不能被插入,因此它们的呈现值只在指定的停止点改变。
层级函数渲染布局和绘制属性之间有一个重要的区别。 当地图层级发生变化时,绘制属性将不断地重新评估,即使是轻微的变化。绘制属性的渲染值将会改变,例如,当地图在层级4.1和4.6之间移动时。 但是,布局属性对于每个整数缩层级只计算一次。 以前面的例子为例:布局属性的呈现在4.1和4.6之间不会改变,无论指定了什么停止;但在缩放级别5时,函数将根据函数重新计算,并且属性的呈现值将改变。 (你可以在布局属性层级函数中包含小数的层级,这将影响生成的值;但是,渲染仍然只会在整数层级上发生变化。)
Property functions允许映射特性的外观随其属性而改变。 属性函数可以用于直观地区分同一层中的特性类型,或者创建数据可视化。 每个stop
是一个包含两个元素的数组,第一个是属性输入值,第二个是函数输出值。 注意,并不是所有属性和平台都支持属性函数。
{
"circle-color": {
"property": "temperature",
"stops": [
// "温度"是0 -> 圆的颜色是蓝色
[0, 'blue'],
// "温度"是100 -> 圆的颜色是红色
[100, 'red']
]
}
}
Zoom-and-property functions允许地图特性的外观随其属性和缩放而改变。 每个stop
都是一个包含两个元素的数组,第一个是一个带有属性输入值和缩放值的对象,第二个是一个函数输出值。 注意,对属性函数的支持还没有完成。
{
"circle-radius": {
"property": "rating",
"stops": [
// zoom是0且"rating"是0 -> 圆的半径是0像素
[{zoom: 0, value: 0}, 0],
// zoom是0且"rating"是5 -> 圆的半径是5像素
[{zoom: 0, value: 5}, 5],
// zoom是20且"rating"是0 -> 圆的半径是0像素
[{zoom: 20, value: 0}, 0],
// zoom是20且"rating"是5 -> 圆的半径是20像素
[{zoom: 20, value: 5}, 20]
]
}
}
default
当一个值不可用时,用作回退函数结果的值。 适用于以下情况:
- 在分类函数中,当要素值不匹配任何停止域值时。
- 在属性和缩放属性函数中,当一个特性不包含指定属性的值时。
- 在恒等函数中,当要素值对style属性无效时(例如,当函数被用于圆形颜色属性,然而要素属性值不是字符串或无效的颜色)。
- 在区间或指数性质函数和缩放性质函数中,当要素值不是数值时。
如果没有提供默认值,则在这些情况下使用样式属性的默认值。
property
可选属性。string
。
如果指定了property
,则函数将接受指定的要素属性作为输入。 有关更多信息,请参阅层级函数和属性函数。
stops
必填属性。array
(标识函数除外)。
由一个输入值和一个输出值组成的集合就是"stop"
。 停止输出值必须是文字值(即不是函数或表达式),并且适合于该属性。 例如,fill-color
属性的停止输出值必须是colors
。
type
可选属性。string
。"identity"
,"exponential"
,"interval"
或 "categorical"
中的一种。
"identity"
: 将其输入作为输出返回的函数。
"exponential"
: 一种函数,通过在略小于或略大于函数输入的停止之间插入来生成输出。 域(输入值)必须是数值型的,并且style属性必须支持插值。支持插值的样式属性被标记为"exponential"
符号,指数是这些属性的默认函数类型。
"interval"
: 一个函数,它返回的stop的输出值刚好小于函数的输入值。 域(输入值)必须为数字。 任何样式属性都可以使用间隔函数。 标记为"interval"
符号的属性是默认的函数类型。
"categorical"
: 返回stop的输出值等于函数输入值的函数。
其他过滤(Other filter)
存在判断
["!has", key]
feature[key] 不存在
成员判断
["!in", key, v0, ..., vn]
不包含于: feature[key] ∉ { v0 , ..., vn }
组合判断
["none", f0, ..., fn]
逻辑上为 NOR
: ¬f0 ∧ ... ∧ ¬fn
key
必须是标识一个特性属性的字符串,或者是下列特殊键之一:
"$type"
:功能类型。 这个键可以与"=="
,"! ="
,"in"
,和"!in"
进行操作。 可能的值为"Point"
、"LineString"
和"Polygon"
。"$id"
:功能标识符。 这个键可以与"=="
,"! = "
,"has"
,"!has"
,"in"
,和"!in"
进行操作。
一个值(和v0, … , vn表示集合操作符)必须是字符串、数字或布尔值,以便比较属性值。
集合成员筛选器是一种密集而有效的方法,用于测试一个字段是否匹配多个值中的任何一个。
比较和集合要素筛选器实现严格类型的比较; 例如,下面所有的值都为false: 0 < "1"
,2 == "2"
, [true, false]
中的"true"
。
"all"
、"any"
和"none"
筛选操作符用于创建复合筛选器。 值 f0, … ,fn 必须是过滤器表达式本身。
["==", "$type", "LineString"]
这个过滤器要求每个特性的class
属性等于"street_major"
、"street_minor"
或"street_limited"
。
["in", "class", "street_major", "street_minor", "street_limited"]`
过滤器"all"的包含了其他三个过滤器,需要其特性全部都是真实的。包括:一个功能必须有一个类等于"street_limited"
,其admin_level
必须大于或等于3,不允许多边形及其类型。 您可以将组合过滤器更改为"any"
,以允许包含匹配这些条件中的任何一个的特性——这些特性是多边形,但具有不同的类值,等等。
[
"all",
["==", "class", "street_limited"],
[">=", "admin_level", 3],
["!in", "$type", "Polygon"]
]