Root Properties
GeoGlobe样式的根级属性指定地图的图层,图块源和其他资源,以及未在其他地方指定的初始摄像机位置的默认值。
{
"version": 8,
"name": name,
"sprite": "http://ip:port",
"glyphs": "http://ip:port",
"sources": {...},
"layers": [...]
}
样式规格版本号。 必须是8。
"version": 8
可读样式名称。
"name": "Bright"
使用样式表跟踪的任意属性,但不影响渲染。 应该为属性添加前缀以避免冲突。
经度和纬度的默认地图中心。 仅当未通过其他方式(例如地图选项或用户交互)定位地图时,才会使用样式中心。
"center": [
-73.9749,
40.7736
]
默认缩放级别。 仅当未通过其他方式(例如地图选项或用户交互)定位地图时,才会使用样式缩放。
"zoom": 12.5
0
。
默认方位角,以度为单位。 方位在罗盘上是“向上”的方向; 例如,地图上方位角为90度时,指向东方。 仅当未通过其他方式(例如地图选项或用户交互)定位地图时,才会使用此值。
"bearing": 29
0
。
默认间距,以度为单位。 零垂直于表面,直视地图,而更大的值如60朝向地平线。 仅当未通过其他方式(例如地图选项或用户交互)定位地图时,才会使用样式间距。
"pitch": 50
全球光源。
"light": {
"anchor": "viewport",
"color": "white",
"intensity": 0.4
}
数据源规范。
"sources": {
"mapbox-streets": {
"type": "vector",
"url": "http://ip:port"
}
}
用于检索雪碧图图像和元数据的基本URL。
延伸部
.png
,
.json
和比例因子
@2x.png
将自动附加。
如果任何层使用,则需要此属性
background-pattern
,
fill-pattern
,
line-pattern
,
fill-extrusion-pattern
,或
icon-image
特性。
URL必须是绝对的,包含
scheme,权限和路径组件
。
"sprite": "http://ip:port"
用于以PBF格式加载signed-distance-field字形集的URL模板。
URL必须包含
{fontstack}
和
{range}
令牌。
如果任何图层使用
text-field
布局属性,
则此属性是必需的
。
URL必须是绝对路径,包含
scheme,权限和路径组件
。
"glyphs": "http://ip:port"
全局转换定义,默认用作属性转换,用于在未设置属性特定转换时在一个值与下一个值之间进行定时转换。
有冲突的符号衰落的控制与
transition
的样式属性
无关
。
"transition": {
"duration": 300,
"delay": 0
}
将按此数组的顺序绘制图层。
"layers": [
{
"id": "water",
"source": "mapbox-streets",
"source-layer": "water",
"type": "fill",
"paint": {
"fill-color": "#00ffff"
}
}
]
Light
样式的
light
属性为该
样式
提供全球光源。
"light": {
"anchor": "viewport",
"color": "white",
"intensity": 0.4
}
"map"
,
"viewport"
。
默认为
"viewport"
。
突出的几何是否相对于贴图或视口点亮。
"map"
:-
光源的位置与地图的旋转对齐。
"viewport"
:-
光源的位置与视口的旋转对齐。
"anchor": "map"
[1.15,210,30]
。
光源相对于点亮(突出)几何形状的位置,在
[r径向坐标,方位角,p极角]中
,其中r表示从物体基部中心到其光的距离,a表示光源的位置相对于0°的光线(
light.anchor
设置为
viewport
对应于视口顶部时
light.anchor
为
0°,
设置为
map
对应于正北方向
时
为
0°
,顺时针方向为度数),p表示光线高度(从0开始)
°,正上方,180°,正下方)。
"position": [
1.5,
90,
80
]
"#ffffff"
。
用于照明突出几何形状的颜色色调。
0.5
。
照明强度(从0到1的等级)。 较高的数值将表现为更极端的对比度。
Sources
来源提供的数据将显示在地图上。
源的类型由
"type"
属性
指定
,并且必须是
vector
,
raster
,
raster-dem
,
geojson
,
image
,
video之一
。
添加源不会立即使数据显示在地图上,因为源不包含颜色或宽度等样式细节。
图层引用源并为其提供可视化表示。
这使得可以以不同的方式对相同的源进行样式化,例如区分高速公路层中的道路类型。
平铺源(矢量和栅格)必须根据 TileJSON规范 指定其详细信息 。 这可以通过以下几种方式完成:
-
通过提供TileJSON性能如
"tiles"
,"minzoom"
以及"maxzoom"
直接在源:"mapbox-streets": { "type": "vector", "tiles": [ "http://a.example.com/tiles/{z}/{x}/{y}.pbf", "http://b.example.com/tiles/{z}/{x}/{y}.pbf" ], "maxzoom": 14 }
-
通过提供
"url"
TileJSON资源:"mapbox-streets": { "type": "vector", "url": "http://api.example.com/tilejson.json" }
-
通过向支持EPSG:3857(或EPSG:900913)的WMS服务器提供URL作为平铺数据的来源。
服务器URL应包含
" {bbox-epsg-3857}"
替换标记以提供bbox
参数。"wms-imagery": { "type": "raster", "tiles": [ 'http://a.example.com/wms?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&width=256&height=256&layers=example' ], "tileSize": 256 }
vector
矢量瓦片。
瓦片
必须采用
Globe矢量瓦片格式
。
在矢量瓦片的所有几何坐标必须介于
-1*
extent
和
(extent * 2)
-1
范围内。
使用矢量源的所有图层都必须指定一个
"source-layer"
值。
对于由Globe托管的矢量切片,
"url"
值应为表单
。
"mapbox-streets": {
"type": "vector",
"url": "http://ip:port"
}
TileJSON资源的URL。
支持的协议是
http:
,
https:
一个或多个tile源URL的数组,如TileJSON规范中所示。
[-180,-85.051129,180,85.051129]
。
一个数组,按以下顺序包含源边界框的西南角和东北角的经度和纬度:
[sw.lng,sw.lat,
ne.lng, ne.lat]
。
当此属性包含在源中时,GeoGlobe不会请求给定边界之外的任何切片。
"xyz"
,
"tms"
。
默认为
"xyz"
。
影响拼贴坐标的y方向。 假设全局 - 墨卡托(又称球形墨卡托)轮廓。
"xyz"
:-
Slippy地图tilenames计划。
"tms"
:-
OSGeo规范方案。
0
。
可用于切片的最小缩放级别,如TileJSON规范中所示。
22
。
可用于切片的最大缩放级别,如TileJSON规范中所示。 当以更高的缩放级别显示地图时,将使用maxzoom中的切片数据。
包含向用户显示地图时要显示的属性。
raster
栅格瓦片。
对于由Globe托管的栅格切片,
"url"
值应为表单
。
"mapbox-satellite": {
"type": "raster",
"url": "http://ip:port",
"tileSize": 256
}
TileJSON资源的URL。
支持的协议是
http:
,
https:
一个或多个tile源URL的数组,如TileJSON规范中所示。
[-180,-85.051129,180,85.051129]
。
一个数组,按以下顺序包含源边界框的西南角和东北角的经度和纬度:
[sw.lng,sw.lat,
ne.lng, ne.lat]
。
当此属性包含在源中时,Globe不会请求给定边界之外的任何切片。
0
。
可用于切片的最小缩放级别,如TileJSON规范中所示。
22
。
可用于切片的最大缩放级别,如TileJSON规范中所示。 当以更高的缩放级别显示地图时,将使用maxzoom中的切片数据。
512
。
显示此图层的平铺的最小视觉大小。 仅可配置栅格图层。
"xyz"
,
"tms"
。
默认为
"xyz"
。
影响拼贴坐标的y方向。 假设全局 - 墨卡托(又称球形墨卡托)轮廓。
"xyz"
:-
Slippy地图tilenames计划。
"tms"
:-
OSGeo规范方案。
包含向用户显示地图时要显示的属性。
raster-dem
栅格DEM源。 目前仅支持 Mapbox Terrain RGB
"mapbox-terrain-rgb": {
"type": "raster-dem",
"url": "https://ip:port"
}
TileJSON资源的URL。
支持的协议是
http:
,
https:
一个或多个tile源URL的数组,如TileJSON规范中所示。
[-180,-85.051129,180,85.051129]
。
一个数组,按以下顺序包含源边界框的西南角和东北角的经度和纬度:
[sw.lng,sw.lat,
ne.lng, ne.lat]
。
当此属性包含在源中时,Globe不会请求给定边界之外的任何切片。
0
。
可用于切片的最小缩放级别,如TileJSON规范中所示。
22
。
可用于切片的最大缩放级别,如TileJSON规范中所示。 当以更高的缩放级别显示地图时,将使用maxzoom中的切片数据。
512
。
显示此图层的平铺的最小视觉大小。 仅可配置栅格图层。
包含向用户显示地图时要显示的属性。
"terrarium"
,
"mapbox"
。
默认为
"mapbox"
。
此源使用的编码。 默认情况下使用Mapbox Terrain RGB
"terrarium"
:-
Terrarium格式PNG瓦片。
"mapbox"
:-
Mapbox Terrain RGB图块。
geojson
一个
GeoJSON的
来源。
必须通过
"data"
属性
提供数据,该
属性的值可以是URL或内联GeoJSON。
"geojson-marker": {
"type": "geojson",
"data": {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-77.0323, 38.9131]
},
"properties": {
"title": "Mapbox DC",
"marker-symbol": "monument"
}
}
}
此GeoJSON源示例通过其URL引用外部GeoJSON文档。 GeoJSON文档必须位于同一域中,或使用 CORS 访问 。
"geojson-lines": {
"type": "geojson",
"data": "./lines.geojson"
}
GeoJSON文件的URL或内联GeoJSON。
18
。
创建矢量切片的最大缩放级别(更高意味着在高缩放级别更高的细节)。
包含向用户显示地图时要显示的属性。
128
。
每侧的图块缓冲区的大小。 值0不产生缓冲区。 值512会生成与磁贴本身一样宽的缓冲区。 较大的值会在拼贴边缘附近产生较少的渲染瑕疵,并且性能较慢
0.375
。
Douglas-Peucker简化公差(更高意味着更简单的几何形状和更快的性能)。
false
。
如果数据是点要素的集合,则将此设置为true会将点按半点聚类为组。
群集组成
Point
为源中的
新
功能,具有其他属性:
cluster
是true
如果点是集群cluster_id
集群的unqiue id与 集群检查方法 一起使用point_count
分组到此群集中的原始点数point_count_abbreviated
缩写点数
0
默认为
50
。
如果启用了群集,则为每个群集的半径。 值512表示半径等于图块的宽度。
如果启用了群集,则最大缩放以聚集点。 默认为小于maxzoom的一个缩放(以便最后缩放功能不会聚集)。
false
。
是否计算行距离度量。
这是指定
line-gradient
值的
线图层所必需的
。
false
。
是否为geojson功能生成id。
启用后,
feature.id
将根据
features
数组中的
索引自动分配属性
,覆盖以前的任何值。
image
图像源。
该
"url"
值包含图像位置。
该
"coordinates"
数组包含
[longitude,latitude]
按顺时针顺序列出的图像角点对:左上角,右上角,右下角,左下角。
"image": {
"type": "image",
"url": "https://ip:port/assets/radar.gif",
"coordinates": [
[-80.425, 46.437],
[-71.516, 46.437],
[-71.516, 37.936],
[-80.425, 37.936]
]
}
指向图像的URL。
以经度,纬度对指定的图像角。
video
一个视频源。
该
"urls"
值是一个数组。
对于数组中的每个URL,
将创建
视频元素
源
,以便支持不同浏览器支持的多种格式的相同媒体。
该
"coordinates"
数组包含
[longitude,latitude]
按顺时针顺序列出的视频角对:左上角,右上角,右下角,左下角。
"video": {
"type": "video",
"urls": [
"https://ip:port/drone/video/drone.mp4",
"https://ip:port/drone/video/drone.webm"
],
"coordinates": [
[-122.51596391201019, 37.56238816766053],
[-122.51467645168304, 37.56410183312965],
[-122.51309394836426, 37.563391708549425],
[-122.51423120498657, 37.56161849366671]
]
}
按首选格式排列的视频内容的URL。
以经度,纬度对指定的视频角。
Sprite
样式的
sprite
属性放入小图像渲染使用提供了一个网址范本
background-pattern
,
fill-pattern
,
line-pattern
,
fill-extrusion-pattern
和
icon-image
样式属性。
"sprite": "http://ip:port"
有效的雪碧图源必须提供两种类型的文件:
-
一个
索引文件
,其是含有包含在所述子画面的每个图像的描述的JSON文档。
此文件的内容必须是JSON对象,其键形成标识符以用作上述样式属性的值,其值是描述图像的尺寸(
width
和height
属性)和像素比率(pixelRatio
)的对象及其位置雪碧图(x
和y
)。 例如,包含单个图像的sprite可能具有以下索引文件内容:{ "poi": { "width": 32, "height": 32, "x": 0, "y": 0, "pixelRatio": 1 } }
"icon-image":"poi"
,或使用带标记的值"icon-image":" {icon}"
与和矢量瓦片特征icon
与所述值属性poi
。 - 图像文件 ,是包含雪碧图数据的PNG图像。
Glyphs
style的
glyphs
属性提供了一个URL模板,用于加载PBF格式的signed-distance-field字形集。
"glyphs": "http://ip:port"
此网址模板应包含两个令牌:
{fontstack}
请求字形时,此标记将替换text-font
为符号图层属性中 指定的字体堆栈中以逗号分隔的字体列表 。{range}
请求字形时,此标记将替换为256个Unicode代码点。 例如,要为 Unicode Basic Latin和Basic Latin-1 Supplement块 加载字形 ,范围将为0-255
。 根据需要显示的文本,在运行时确定加载的实际范围。
Transition
一个
transition
属性控制的可转换风格属性以前的值和新值之间的插定时。
样式的
root
transition
属性为该
样式
提供全局转换默认值。
任何可转换样式属性也可以具有其自己的
-transition
属性,
该
属性定义该特定图层属性的特定转换时间,从而覆盖全局
transition
值。
"transition": {
"duration": 300,
"delay": 0
}
0
单位,以
毫秒为单位
。
默认为
300
。
分配时间以完成转换。
0
单位,以
毫秒为单位
。
默认为
0
。
转换开始前的时间长度。
Layers
样式的
layers
属性列出了该样式中可用的所有图层。
图层的类型由
"type"
属性
指定
,并且必须是
背景
,
填充
,
线条
,
符号
,
栅格
,
圆形
,
填充 -
挤出
,
热力图
,
山体阴影之一
。
除了 背景 类型的 图层 ,每个图层都需要引用一个源。 图层从源获取数据,可选择过滤器功能,然后定义这些功能的样式。
"layers": [
{
"id": "water",
"source": "mapbox-streets",
"source-layer": "water",
"type": "fill",
"paint": {
"fill-color": "#00ffff"
}
}
]
唯一的图层名称。
"fill"
,
"line"
,
"symbol"
,
"circle"
,
"heatmap"
,
"fill-extrusion"
,
"raster"
,
"hillshade"
,
"background"
。
渲染此图层的类型。
"fill"
:-
带有可选描边边框的填充多边形。
"line"
:-
划线。
"symbol"
:-
图标或文本标签。
"circle"
:-
一个圆圈。
"heatmap"
:-
热力图。
"fill-extrusion"
:-
拉伸(3D)多边形。
"raster"
:-
光栅贴图纹理,如卫星图像。
"hillshade"
:-
基于DEM数据的客户端山体阴影可视化。 目前,该实现仅支持Mapbox Terrain RGB和Mapzen Terrarium tile。
"background"
:-
地图的背景颜色或图案。
任意属性对于跟踪图层很有用,但不影响渲染。 应该为属性添加前缀以避免冲突。
要用于此图层的源描述的名称。
要求所有图层类型除外
background
。
要从矢量切片源使用的图层。 矢量图块源需要; 禁止用于所有其他源类型,包括GeoJSON源。
0
24
图层的最小缩放级别。 在缩放级别小于minzoom时,图层将被隐藏。
0
24
图层的最大缩放级别。 在缩放级别等于或大于maxzoom时,图层将被隐藏。
指定源要素条件的表达式。
仅显示与过滤器匹配的功能。
的
feature-state
表达没有在过滤器表达式支持。
图层的布局属性。
此图层的默认绘制属性。
图层有两个子属性,用于确定如何呈现来自该图层的数据:
layout
和
paint
属性。
布局属性
显示在图层的
"layout"
对象中。
它们在渲染过程的早期应用,并定义如何将该层的数据传递给GPU。
对布局属性的更改需要异步“布局”步骤。
稍后在渲染过程中应用
绘制属性
。
绘图属性显示在图层的
"paint"
对象中。
对paint属性的更改很方便并且同步发生。
background
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
"#000000"
。
被
背景图案
禁用
。
用于绘制背景的颜色。
雪碧图中用于绘制图像背景的图像名称。 对于无缝图案,图像宽度和高度必须是两倍(2,4,8,...,512)。 请注意,仅在整数缩放级别评估与缩放相关的表达式。
1
。
将绘制背景的不透明度。
fill
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
true
。
填充是否应该是抗锯齿的。
1
。
整个填充图层的不透明度。
与此相反
fill-color
,如果使用笔划,此值也将影响填充周围的1px笔划。
"#000000"
。
填充模式
禁用
。
此图层填充部分的颜色。
此颜色可以指定为
rgba
alpha分量,颜色的不透明度不会影响1px笔划的不透明度(如果使用)。
true
。
填充的轮廓颜色。
匹配
fill-color
如果未指定
值
。
[0,0]
。
几何的偏移量。 值为 [x,y] ,其中负数分别表示左和上。
"map"
,
"viewport"
。
默认为
"map"
。
需要
填写转换
。
控制参考框架
fill-translate
。
"map"
:-
填充相对于地图进行转换。
"viewport"
:-
填充相对于视口进行转换。
雪碧图中用于绘制图像填充的图像名称。 对于无缝图案,图像宽度和高度必须是两倍(2,4,8,...,512)。 请注意,仅在整数缩放级别评估与缩放相关的表达式。
line
"butt"
,
"round"
,
"square"
。
默认为
"butt"
。
行尾的显示。
"butt"
:-
带有方形末端的帽子,该末端被绘制到线的确切端点。
"round"
:-
一个圆形端盖,在线的端点处以半径为线的一半,并以线的端点为中心。
"square"
:-
带有方形端的帽,在线的宽度的一半处绘制超出线的端点。
"bevel"
,
"round"
,
"miter"
。
默认为
"miter"
。
加入时显示线条。
"bevel"
:-
具有方形末端的连接,该方形在线的宽度的一半处被绘制超出线的端点。
"round"
:-
具有圆形末端的连接,该末端在线的端点处以半径为线的宽度的一半绘制并且以线的端点为中心。
"miter"
:-
一个带有尖角的角部连接,其外侧绘制超出路径的终点直到它们相遇。
2
。
必须是
线联接
是
"miter"
。
用于自动将斜接连接转换为斜角连接以获得锐角。
1.05
。
必须是
线联接
是
"round"
。
用于自动将圆形连接转换为斜角连接的浅角度。
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
1
。
将绘制线条的不透明度。
"#000000"
。
按
行模式
禁用
。
用于绘制线条的颜色。
[0,0]
。
几何的偏移量。 值为 [x,y] ,其中负数分别表示左和上。
"map"
,
"viewport"
。
默认为
"map"
。
需要
换行
。
控制参考框架
line-translate
。
"map"
:-
该线相对于地图进行平移。
"viewport"
:-
该线相对于视口进行平移。
。
单位为
像素
。
默认为
1
。
线的宽度。
。
单位为
像素
。
默认为
0
。
在线的实际路径之外绘制线框。 值表示内部间隙的宽度。
0
。
线的偏移量。 对于线性要素,正值将相对于线方向的线向右偏移,向左偏移负值。 对于面要素,正值会导致插入,负值会导致出现。
。
单位为
像素
。
默认为
0
。
模糊应用于线条,以像素为单位。
。
线宽
单位
。
按
行模式
禁用
。
指定形成虚线图案的交替破折号和间隙的长度。
长度稍后通过线宽缩放。
要将短划线长度转换为像素,请将长度乘以当前线宽。
请注意,
lineMetrics:true
指定的
GeoJSON源
不会将虚线渲染到预期的比例。
另请注意,仅在整数缩放级别评估与缩放相关的表达式。
雪碧图中用于绘制图像线的图像名称。 对于无缝模式,图像宽度必须是两倍(2,4,8,...,512)。 请注意,仅在整数缩放级别评估与缩放相关的表达式。
"geojson"
。
定义用于为线要素着色的渐变。
只能与指定的GeoJSON源一起使用
"lineMetrics":true
。
symbol
"point"
,
"line"
,
"line-center"
。
默认为
"point"
。
标签相对于其几何体的位置。
"point"
:-
标签位于几何图形所在的位置。
"line"
:-
标签沿几何线放置。 只能用于
LineString
和Polygon
几何。 "line-center"
:-
标签位于几何线的中心。 只能用于
LineString
和Polygon
几何。 请注意,矢量切片中的单个要素可能包含多个线几何。
1
单位为
像素
。
默认为
250
。
需要
符号位置
是
"line"
。
两个符号锚点之间的距离。
false
。
如果为true,则符号将不会越过tile边缘以避免相互冲突。 建议在矢量切片中没有足够填充的图层中以防止碰撞,或者如果它是位于线符号图层后面的点符号图层。
"viewport-y"
,
"source"
。
默认为
"viewport-y"
。
控制渲染同一图层中重叠符号的顺序
"viewport-y"
:-
符号将按其相对于视口的y位置进行排序。
"source"
:-
符号将以与源数据相同的顺序呈现,不应用任何排序。
false
。
需要
图标图像
。
如果为true,即使图标与其他先前绘制的符号发生碰撞,该图标也将可见。
false
。
需要
图标图像
。
如果为true,即使其他符号与图标发生碰撞,也可以看到其他符号。
false
。
需要
图标图像
。
需要
文本字段
。
如果为true,当图标与其他符号发生碰撞而文本没有碰撞时,文本将显示没有相应的图标。
"map"
,
"viewport"
,
"auto"
。
默认为
"auto"
。
需要
图标图像
。
结合使用
symbol-placement
,确定图标的旋转行为。
"map"
:-
当
symbol-placement
设置为point
,对齐图标东西。 当symbol-placement
设置为line
或时line-center
,将图标x轴与线对齐。 "viewport"
:-
生成x轴与视口的x轴对齐的图标,无论其值如何
symbol-placement
。 "auto"
:-
当
symbol-placement
设置为时point
,这相当于viewport
。 当symbol-placement
设置为line
或时line-center
,这相当于map
。
0
原始图标大小的系数
单位
。
默认为
1
。
需要
图标图像
。
按提供的系数缩放图标的原始大小。
图像的新像素大小将是原始像素大小乘以
icon-size
。
1是原始尺寸;
3倍于图像的大小。
"none"
,
"width"
,
"height"
,
"both"
。
默认为
"none"
。
需要
图标图像
。
需要
文本字段
。
缩放图标以适合相关文本。
"none"
:-
图标以其固有宽高比显示。
"width"
:-
图标在x维度上缩放以适合文本的宽度。
"height"
:-
该图标在y维度上缩放以适合文本的高度。
"both"
:-
图标在x和y维度上缩放。
[0,0,0,0]
。
需要
图标图像
。
需要
文本字段
。
需要
图标文本配合
要
"both"
,或
"width"
,或
"height"
。
添加到尺寸的附加区域的大小由
icon-text-fit
顺时针顺序
确定
:顶部,右侧,底部,左侧。
雪碧图中用于绘制图像背景的图像名称。
0
。
需要
图标图像
。
顺时针旋转图标。
0
单位为
像素
。
默认为
2
。
需要
图标图像
。
用于检测符号碰撞的图标边界框周围的附加区域的大小。
false
。
需要
图标图像
。
需要
图标旋转对准
要
"map"
。
需要
符号位置
是
"line"
,或
"line-center"
。
如果为true,则可以翻转图标以防止其呈现倒置。
[0,0]
。
需要
图标图像
。
图标与其锚点的偏移距离。
正值表示向右和向下,而负值表示向左和向上。
每个分量乘以值
icon-size
以获得最终的偏移量(以像素为单位)。
当与
icon-rotate
偏移
结合时
,就好像旋转的方向一样。
"center"
,
"left"
,
"right"
,
"top"
,
"bottom"
,
"top-left"
,
"top-right"
,
"bottom-left"
,
"bottom-right"
。
默认为
"center"
。
需要
图标图像
。
最靠近锚点的图标的一部分。
"center"
:-
图标的中心位于最靠近锚点的位置。
"left"
:-
图标的左侧最靠近锚点放置。
"right"
:-
图标的右侧最靠近锚点放置。
"top"
:-
图标的顶部放置在离锚点最近的位置。
"bottom"
:-
图标的底部最靠近锚点放置。
"top-left"
:-
图标的左上角最靠近锚点。
"top-right"
:-
图标的右上角最靠近锚点。
"bottom-left"
:-
图标的左下角最靠近锚点。
"bottom-right"
:-
图标的右下角最靠近锚点。
"map"
,
"viewport"
,
"auto"
。
默认为
"auto"
。
需要
图标图像
。
投放地图时图标的方向。
"map"
:-
图标与地图平面对齐。
"viewport"
:-
图标与视口平面对齐。
"auto"
:-
自动匹配的值
icon-rotation-alignment
。
"map"
,
"viewport"
,
"auto"
。
默认为
"auto"
。
需要
文本字段
。
投放地图时的文本方向。
"map"
:-
文本与地图平面对齐。
"viewport"
:-
文本与视口平面对齐。
"auto"
:-
自动匹配的值
text-rotation-alignment
。
"map"
,
"viewport"
,
"auto"
。
默认为
"auto"
。
需要
文本字段
。
与之组合
symbol-placement
,确定形成文本的各个字形的旋转行为。
"map"
:-
当
symbol-placement
设置为point
,对齐文本东西。 当symbol-placement
设置为line
或时line-center
,将文本x轴与线对齐。 "viewport"
:-
生成其x轴与视口的x轴对齐的字形,无论其值如何
symbol-placement
。 "auto"
:-
当
symbol-placement
设置为时point
,这相当于viewport
。 当symbol-placement
设置为line
或时line-center
,这相当于map
。
""
。
用于文本标签的值。
如果
string
提供
了plain
,则将其视为
formatted
具有默认/继承格式选项。
["Open
Sans Regular","Arial Unicode MS Regular"]
。
需要
文本字段
。
用于显示文本的字体堆栈。
0
单位为
像素
。
默认为
16
。
需要
文本字段
。
字体大小。
0
ems中的
单位
。
默认为
10
。
需要
文本字段
。
文本换行的最大行宽。
1.2
。
需要
文本字段
。
多行文本的文本前导值。
0
。
需要
文本字段
。
文字追踪金额。
"left"
,
"center"
,
"right"
。
默认为
"center"
。
需要
文本字段
。
文本对齐选项。
"left"
:-
文本与左侧对齐。
"center"
:-
文本居中。
"right"
:-
文本与右侧对齐。
"center"
,
"left"
,
"right"
,
"top"
,
"bottom"
,
"top-left"
,
"top-right"
,
"bottom-left"
,
"bottom-right"
。
默认为
"center"
。
需要
文本字段
。
部分文本最靠近锚点。
"center"
:-
文本的中心位于最靠近锚点的位置。
"left"
:-
文本的左侧最靠近锚点放置。
"right"
:-
文本的右侧最靠近锚点放置。
"top"
:-
文本顶部最靠近锚点放置。
"bottom"
:-
文本底部最靠近锚点放置。
"top-left"
:-
文本的左上角最靠近锚点。
"top-right"
:-
文本的右上角最靠近锚点。
"bottom-left"
:-
文本的左下角最靠近锚点。
"bottom-right"
:-
文本的右下角最靠近锚点。
45
。
需要
文本字段
。
需要
符号位置
是
"line"
,或
"line-center"
。
相邻字符之间的最大角度变化。
0
。
需要
文本字段
。
顺时针旋转文本。
0
单位为
像素
。
默认为
2
。
需要
文本字段
。
用于检测符号冲突的文本边界框周围的附加区域的大小。
true
。
需要
文本字段
。
需要
文本旋转对齐
是
"map"
。
需要
符号位置
是
"line"
,或
"line-center"
。
如果为true,则可以垂直翻转文本以防止其呈现倒置。
"none"
,
"uppercase"
,
"lowercase"
。
默认为
"none"
。
需要
文本字段
。
指定如何大写文本,类似于CSS
text-transform
属性。
"none"
:-
文本没有改变。
"uppercase"
:-
强制所有字母以大写形式显示。
"lowercase"
:-
强制所有字母以小写显示。
[0,0]
。
需要
文本字段
。
文本与其锚点的偏移距离。 正值表示向右和向下,而负值表示向左和向上。
false
。
需要
文本字段
。
如果为true,即使文本与其他先前绘制的符号发生碰撞,文本也将可见。
false
。
需要
文本字段
。
如果为true,则即使其他符号与文本发生碰撞,也可以看到其他符号。
false
。
需要
文本字段
。
需要
图标图像
。
如果为true,则当文本与其他符号发生碰撞而图标没有碰撞时,图标将显示没有相应的文本。
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
0
1
默认为
1
。
需要
图标图像
。
将绘制图标的不透明度。
"#000000"
。
需要
图标图像
。
图标的颜色。 这只能与sdf图标一起使用。
"rgba(0,
0, 0, 0)"
。
需要
图标图像
。
图标晕的颜色。 图标晕圈只能与SDF图标一起使用。
0
单位为
像素
。
默认为
0
。
需要
图标图像
。
光晕到图标轮廓的距离。
0
单位为
像素
。
默认为
0
。
需要
图标图像
。
淡出外面的光环。
[0,0]
。
需要
图标图像
。
图标的锚点从其原始位置移动的距离。 正值表示向右和向下,而负值表示向左和向上。
"map"
,
"viewport"
。
默认为
"map"
。
需要
图标图像
。
需要
图标转换
。
控制参考框架
icon-translate
。
"map"
:-
图标相对于地图进行转换。
"viewport"
:-
图标相对于视口进行转换。
0
1
默认为
1
。
需要
文本字段
。
将绘制文本的不透明度。
"#000000"
。
需要
文本字段
。
用于绘制文本的颜色。
"rgba(0,
0, 0, 0)"
。
需要
文本字段
。
文本光环的颜色,有助于它从背景中脱颖而出。
0
单位为
像素
。
默认为
0
。
需要
文本字段
。
光晕到字体轮廓的距离。 最大文本光晕宽度是字体大小的1/4。
0
单位为
像素
。
默认为
0
。
需要
文本字段
。
光晕向外倾斜的距离。
[0,0]
。
需要
文本字段
。
文本锚点从其原始位置移动的距离。 正值表示向右和向下,而负值表示向左和向上。
"map"
,
"viewport"
。
默认为
"map"
。
需要
文本字段
。
需要
文本转换
。
控制参考框架
text-translate
。
"map"
:-
文本相对于地图进行转换。
"viewport"
:-
文本相对于视口进行转换。
raster
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
0
1
默认为
1
。
将绘制图像的不透明度。
0
。
旋转色轮周围的色调。
0
1
默认为
0
。
增加或减少图像的亮度。 该值是最小亮度。
0
1
默认为
1
。
增加或减少图像的亮度。 该值是最大亮度。
-1
1
默认为
0
。
增加或减少图像的饱和度。
-1
1
默认为
0
。
增加或减少图像的对比度。
"linear"
,
"nearest"
。
默认为
"linear"
。
用于过度缩放的重采样/插值方法,也称为纹理放大滤波器
"linear"
:-
(Bi)线性滤波使用四个最接近的原始源像素的加权平均值来内插像素值,从而在过度缩放时创建平滑但模糊的外观
"nearest"
:-
最近邻滤波使用最近的原始源像素插值像素值,在过度缩放时创建清晰但像素化的外观
0
单位,以
毫秒为单位
。
默认为
300
。
添加新图块时的淡入淡出持续时间。
circle
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
0
单位为
像素
。
默认为
5
。
圆半径。
"#000000"
。
圆的填充颜色。
0
。
模糊圆圈的数量。 1使圆圈模糊,使得只有中心点是完全不透明的。
0
1
默认为
1
。
将绘制圆的不透明度。
[0,0]
。
几何的偏移量。 值为 [x,y] ,其中负数分别表示左和上。
"map"
,
"viewport"
。
默认为
"map"
。
需要
循环转换
。
控制参考框架
circle-translate
。
"map"
:-
圆圈相对于地图进行平移。
"viewport"
:-
圆相对于视口进行平移。
"map"
,
"viewport"
。
默认为
"map"
。
在地图倾斜时控制圆的缩放行为。
"map"
:-
圆圈根据它们与相机的明显距离进行缩放。
"viewport"
:-
圆圈不会缩放。
"map"
,
"viewport"
。
默认为
"viewport"
。
投放地图时的圆的方向。
"map"
:-
圆与图的平面对齐。
"viewport"
:-
圆与视口平面对齐。
0
单位为
像素
。
默认为
0
。
圆的行程宽度。
笔划放在外面
circle-radius
。
"#000000"
。
圆的笔触颜色。
0
1
默认为
1
。
圆形笔划的不透明度。
fill-extrusion
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
0
1
默认为
1
。
整个填充挤出层的不透明度。 这是基于每层而非每个功能呈现的,并且数据驱动样式不可用。
"#000000"
。
通过
填充
- 挤出 - 模式
禁用
。
挤出填充的基色。
挤出的曲面将根据此颜色与根
light
设置
进行不同的着色
。
如果将此颜色指定为
rgba
alpha分量,则将忽略alpha分量;
用于
fill-extrusion-opacity
设置图层不透明度。
[0,0]
。
几何的偏移量。 值为 [x,y] ,其中负数分别表示左和上(在平面上)。
"map"
,
"viewport"
。
默认为
"map"
。
需要
填充
- 挤出 - 转换
。
控制参考框架
fill-extrusion-translate
。
"map"
:-
填充拉伸相对于地图进行平移。
"viewport"
:-
填充拉伸相对于视口进行平移。
雪碧图中的图像名称,用于在挤出填充上绘制图像。 对于无缝图案,图像宽度和高度必须是两倍(2,4,8,...,512)。 请注意,仅在整数缩放级别评估与缩放相关的表达式。
0
单位为
米
。
默认为
0
。
用于拉伸此图层的高度。
0
单位为
米
。
默认为
0
。
需要
填充
- 挤出 - 高度
。
用于挤出此图层基础的高度。
必须小于或等于
fill-extrusion-height
。
true
。
是否将垂直渐变应用于填充 - 挤出层的侧面。 如果是真的,那么两侧的阴影会稍微暗一些。
heatmap
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
1
单位为
像素
。
默认为
30
。
一个热图点的影响半径,以像素为单位。 增加该值可使热图更平滑,但不太详细。
0
默认为
1
。
衡量单个点对热图的贡献程度。 值10相当于在同一点中具有10个重量点1。 与群集结合使用时特别有用。
0
默认为
1
。
类似于
heatmap-weight
但全局控制热图的强度。
主要用于根据缩放级别调整热图。
["interpolate",["linear"],["heatmap-density"],0,"rgba(0,
0, 255,
0)",0.1,"royalblue",0.3,"cyan",0.5,"lime",0.7,"yellow",1,"red"]
。
根据热图中的密度值定义每个像素的颜色。
应该是一个
["heatmap-density"]
用作输入
的表达式
。
0
1
默认为
1
。
将绘制热图图层的全局不透明度。
hillshade
"visible"
,
"none"
。
默认为
"visible"
。
是否显示此图层。
"visible"
:-
显示该层。
"none"
:-
该层未显示。
0
359
默认为
335
。
用于生成山体阴影的光源的方向,如果
hillshade-illumination-anchor
设置为
视口顶部,则为0,如果
设置为
viewport
,
hillshade-illumination-anchor
则设置为
map
。
"map"
,
"viewport"
。
默认为
"viewport"
。
旋转地图时光源的方向。
"map"
:-
山体阴影照明相对于北方向。
"viewport"
:-
山体阴影照明相对于视口顶部。
0
1
默认为
0.5
。
山体阴凉的强度
"#000000"
。
远离光源的区域的阴影颜色。
"#FFFFFF"
。
面向光源的区域的阴影颜色。
"#000000"
。
阴影颜色用于突出陡峭的悬崖和峡谷等崎岖地形。
Types
样式包含各种类型的值,最常见的是作为图层样式属性的值。
Color
该
color
类型表示
sRGB颜色空间
中的
<颜色
。
颜色以各种允许的格式编写为JSON字符串:HTML样式的十六进制值,rgb,rgba,hsl和hsla。
也允许
预定义的HTML颜色名称,例如
yellow
和
blue
。
{
"line-color": "#ff0",
"line-color": "#ffff00",
"line-color": "rgb(255, 255, 0)",
"line-color": "rgba(255, 255, 0, 1)",
"line-color": "hsl(100, 50%, 50%)",
"line-color": "hsla(100, 50%, 50%, 1)",
"line-color": "yellow"
}
特别值得注意的是对hsl的支持,这 比rgb()更容易推理 。
Expressions
可以将任何 布局属性、 绘图属性或 过滤器的 值指定为 表达式 。 表达式定义了使用 下面描述 的 运算符 计算属性值的公式 。 提供的表达式运算符集包括:
- 用于对数值执行算术运算和其他运算的数学运算符
- 用于操纵布尔值和进行条件决策的逻辑运算符
- 用于操纵字符串的字符串运算符
- 数据操作员,提供对源功能属性的访问
- 摄像机操作员,提供对定义当前地图视图的参数的访问
表达式表示为JSON数组。
表达式数组的第一个元素是命名表达式运算符的字符串,例如
"*"
或
"case"
。
后续元素(如果有)是
表达式
的
参数
。
每个参数都是文字值(字符串,数值,布尔值或
null
)或其他表达式数组。
[expression_name, argument_0, argument_1, ...]
Data expressions
一
数据表达式
是访问特征数据的任何表达-即,使用数据的运营商之一的任何表达:
get
,
has
,
id
,
geometry-type
,
properties
,或
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"]]
]
}
此示例使用
get
运算符获取
temperature
每个要素
的
值。
该值用于计算
rgb
运算符的
参数
,根据红色,绿色和蓝色组件定义颜色。
允许使用数据表达式作为
filter
属性
的值
,并将其作为大多数绘制和布局属性的值。
但是,某些绘制和布局属性尚不支持数据表达式。
每个属性的“SDK支持”表的“数据驱动样式”行指示支持级别。
<feature-state
仅允许在paint属性上
使用
运算符的
数据表达式
。
Camera expressions
一个
camera
expression
是使用
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
]
}
此示例使用
interpolate
运算符使用一组输入
- 输出对在缩放级别和圆形大小之间定义线性关系。
在这种情况下,表达式表示当缩放级别为5或更低时圆半径应为1像素,当缩放为10或以上时圆半径应为5像素。
在两者之间,半径将在1到5个像素之间进行线性插值
在可以使用表达式的任何地方允许相机表达式。 但是,当相机表达式用作布局或绘制属性的值时,它必须采用以下形式之一:
[ "interpolate", interpolation, ["zoom"], ... ]
要么:
[ "step", ["zoom"], ... ]
要么:
[
"let",
... variable bindings...,
[ "interpolate", interpolation, ["zoom"], ... ]
]
要么:
[
"let",
... variable bindings...,
[ "step", ["zoom"], ... ]
]
也就是说,在布局或绘制属性中,
["zoom"]
可能仅作为外部
interpolate
或
step
表达式
的输入,
或
表达式中的此类
let
表达式。
在相机表达评估的时间中,布局和绘制属性之间存在重要差异。 每当缩放级别改变时,即使是小幅度的改变,也会重新评估绘制属性相机表达式。 例如,当地图在缩放级别4.1和4.6之间移动时,将连续重新评估绘图属性相机表达式。 另一方面,仅在整数缩放级别评估布局属性相机表达式。 当缩放从4.1变为4.6时, 它 不会 被重新评估 - 只有当它超过5或低于4时才会重新评估。
Composition
单个表达式可以使用数据运算符,摄像机运算符和其他运算符的混合。 这种复合表达式允许通过缩放级别 和 各个要素属性 的组合来确定图层的外观 。
{
"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"]]
]
}
同时使用数据和摄像机运算符的表达式被视为数据表达式和摄像机表达式,并且必须遵守上述两者的限制。
Type system
表达式的输入参数及其结果值使用与
样式规范的其余部分
相同的
类型
集
:boolean,string,number,color和这些类型的数组。
此外,表达式是
类型安全的
:
表达式的
每次使用都具有已知的结果类型和必需的参数类型,并且SDK验证表达式的结果类型是否适合于使用它的上下文。
例如,
filter
属性中
表达式的结果类型
必须是
布尔值
,
+
运算符
的参数
必须是
数值
。
使用要素数据时,SDK通常不会提前知道要素属性值的类型。
为了保持类型安全性,在评估数据表达式时,SDK将检查属性值是否适合上下文。
例如,如果
["get",
"feature-color"]
对
circle-color
属性
使用表达式
,SDK将验证
feature-color
每个要素
的
值是否为标识有效
颜色
的字符串
。
如果此检查失败,将以特定于SDK的方式(通常是日志消息)指示错误,并将使用该属性的默认值。
在大多数情况下,此验证将在需要的任何地方自动进行。
但是,在某些情况下,SDK可能无法从周围上下文自动确定数据表达式的预期结果类型。
例如,不清楚表达式
["<",
["get", "a"], ["get", "b"]]
是否试图比较字符串或数值。
在这种情况下,您可以使用
类型断言
表达式运算符之一来指示数据表达式的预期类型:
["<",
["number", ["get", "a"]], ["number", ["get", "b"]]]
。
类型断言检查特征数据是否实际匹配数据表达式的预期类型。
如果此检查失败,则会产生错误并导致整个表达式回退到正在定义的属性的默认值。
断言运营商
array
,
boolean
,
number
,和
string
。
表达式仅执行一种隐式类型转换:在
期望
颜色
的上下文中使用的数据表达式将
颜色
的字符串表示转换为颜色值。
在其他情况下,如果你想类型之间的转换,你必须使用一个
类型转换
表达式运算符:
to-boolean
,
to-number
,
to-string
,或
to-color
。
例如,如果您有一个以字符串格式存储数值的要素属性,并且您希望将这些值用作数值而不是字符串,则可以使用诸如的表达式
["to-number",
["get", "property-name"]]
。
Expression reference
Types
提供本节中的表达式是为了测试和转换不同的数据类型,如字符串,数值和布尔值。
通常,这种测试和转换是不必要的,但在某些表达式中,某些子表达式的类型不明确,它们可能是必要的。
它们在您的要素数据类型不一致的情况下也很有用;
例如,您可以使用
to-number
以确保将
"1.5"
(而不是
1.5
)的值视为数值。
断言输入是一个数组(可选择具有特定的项类型和长度)。 如果在计算输入表达式时,它不是断言类型,那么这个断言将导致整个表达式被中止。
["array", value]: array
["array", type: "string" | "number" | "boolean", value]: array<type>
["array",
type: "string" | "number" | "boolean",
N: number (literal),
value
]: array<type, N>
断言输入值是布尔值。 如果提供了多个值,则按顺序计算每个值,直到获得布尔值。 如果没有输入是布尔值,则表达式是错误的。
["boolean", value]: boolean
["boolean", value, fallback: value, fallback: value, ...]: boolean
返回一个
collator
用于依赖于语言环境的比较操作。
在
case-sensitive
和
diacritic-sensitive
选项默认为
false
。
该
locale
参数指定要使用的语言环境的IETF语言标记。
如果未提供,则使用默认语言环境。
如果请求的语言环境不可用,
collator
则将使用系统定义的回退语言环境。
使用
resolved-locale
测试的现场备用行为的结果。
["collator",
{ "case-sensitive": boolean, "diacritic-sensitive": boolean, "locale": string }
]: collator
返回
formatted
包含注释的文本,以便在混合格式
text-field
条目中使用。
如果设置,则
text-font
参数将覆盖根布局属性指定的字体。
如果设置,则
font-scale
参数指定相对于
text-size
根布局属性中
指定的缩放系数
。
["format",
input_1: string, options_1: { "font-scale": number, "text-font": array<string> },
...,
input_n: string, options_n: { "font-scale": number, "text-font": array<string> }
]: formatted
提供文字数组或对象值。
["literal", [...] (JSON array literal)]: array<T, N>
["literal", {...} (JSON object literal)]: Object
断言输入值是一个数值。 如果提供多个值,则按顺序评估每个值,直到获得数值。 如果没有输入是数值,则表达式是错误。
["number", value]: number
["number", value, fallback: value, fallback: value, ...]: number
断言输入值是对象。 如果提供了多个值,则按顺序评估每个值,直到获得对象。 如果没有输入是对象,则表达式是错误。
["object", value]: object
["object", value, fallback: value, fallback: value, ...]: object
断言输入值是字符串。 如果提供了多个值,则按顺序评估每个值,直到获得字符串。 如果没有输入是字符串,则表达式是错误的。
["string", value]: string
["string", value, fallback: value, fallback: value, ...]: string
将输入值转换为布尔值。
其结果是
false
,当接着输入是空字符串,0,
,
false
,
null
或
NaN
;
否则就是
true
。
["to-boolean", value]: boolean
将输入值转换为颜色。 如果提供了多个值,则按顺序评估每个值,直到获得第一次成功转换。 如果没有任何输入可以转换,则表达式是错误的。
["to-color", value, fallback: value, fallback: value, ...]: color
如果可能,将输入值转换为数值。
如果输入是
null
或
false
,则结果为0.如果输入是
true
,则结果为1.如果输入是字符串,则将其转换为
ECMAScript
的
“ToNumber
Applied to the String Type”算法
所指定的数值
语言规范。
如果提供了多个值,则按顺序评估每个值,直到获得第一次成功转换。
如果没有任何输入可以转换,则表达式是错误的。
["to-number", value, fallback: value, fallback: value, ...]: number
将输入值转换为字符串。
如果是输入
null
,结果是
""
。
如果输入是布尔值,则结果为
"true"
或
"false"
。
如果输入是数值,则将其转换为
ECMAScript语言规范
的
“NumberToString”算法
所指定的字符串
。
如果输入是一种颜色,则将其转换为形式的字符串
"rgba(r,g,b,a)"
,其中
r
,,
g
和
b
为0到255之间的数值,
a
范围从0到1.否则,输入将转换为指定格式的字符串。
JSON.stringify
ECMAScript语言规范
的
功能。
["to-string", value]: string
返回描述给定值类型的字符串。
["typeof", value]: string
Feature data
从当前要素的状态中检索属性值。 如果请求的属性不存在于功能的状态,则返回null。 要素的状态不是GeoJSON或矢量切片数据的一部分,必须以编程方式在每个要素上设置。 请注意, [“feature-state”] 只能与支持数据驱动样式的绘制属性一起使用。
["feature-state", string]: value
获取要素的几何类型:Point,MultiPoint,LineString,MultiLineString,Polygon,MultiPolygon。
["geometry-type"]: string
获取要素的ID(如果有)。
["id"]: value
获取要素属性对象。 请注意,在某些情况下,直接使用 [“get”,“property_name”] 可能更有效 。
["properties"]: object
Lookup
从数组中检索项目。
["at", number, array]: ItemType
从当前要素的属性检索属性值,如果提供了第二个参数,则从另一个对象检索属性值。 如果缺少请求的属性,则返回null。
["get", string]: value
["get", string, object]: value
测试当前要素属性中是否存在属性值,如果提供了第二个参数,则测试另一个对象。
["has", string]: boolean
["has", string, object]: boolean
获取数组或字符串的长度。
["length", string | array | value]: number
Decision
本节中的表达式可用于向样式添加条件逻辑。
例如,
'case'
表达式提供基本的“if /
then /
else”逻辑,并
'match'
允许您将输入表达式的特定值映射到不同的输出表达式。
逻辑否定。
true
如果输入是
false
,并且
输入是
,
false
则
返回
true
。
["!", boolean]: boolean
true
如果输入值不相等
false
则
返回
,
否则返回。
比较是严格类型的:不同运行时类型的值始终被视为不相等。
已知在解析时类型不同的情况被视为无效并将产生解析错误。
接受可选
collator
参数以控制依赖于区域设置的字符串比较。
["!=", value, value]: boolean
["!=", value, value, collator]: boolean
true
如果第一个输入严格小于第二个输入则
返回
,
false
否则返回。
参数必须是字符串或两个数值;
如果在评估期间它们不是,则表达式评估会产生错误。
知道此约束在解析时不保持的情况被认为是有效的并且将产生解析错误。
接受可选
collator
参数以控制依赖于区域设置的字符串比较。
["<", value, value]: boolean
["<", value, value, collator]: boolean
true
如果第一个输入小于或等于第二个输入则
返回
,
false
否则返回。
参数必须是字符串或两个数值;
如果在评估期间它们不是,则表达式评估会产生错误。
知道此约束在解析时不保持的情况被认为是有效的并且将产生解析错误。
接受可选
collator
参数以控制依赖于区域设置的字符串比较。
["<=", value, value]: boolean
["<=", value, value, collator]: boolean
true
如果输入值相等
false
则
返回
,
否则
返回
。
比较是严格类型的:不同运行时类型的值始终被视为不相等。
已知在解析时类型不同的情况被视为无效并将产生解析错误。
接受可选
collator
参数以控制依赖于区域设置的字符串比较。
["==", value, value]: boolean
["==", value, value, collator]: boolean
true
如果第一个输入严格大于第二个输入则
返回
,
false
否则返回。
参数必须是字符串或两个数值;
如果在评估期间它们不是,则表达式评估会产生错误。
知道此约束在解析时不保持的情况被认为是有效的并且将产生解析错误。
接受可选
collator
参数以控制依赖于区域设置的字符串比较。
[">", value, value]: boolean
[">", value, value, collator]: boolean
true
如果第一个输入大于或等于第二个输入则
返回
,
false
否则返回。
参数必须是字符串或两个数值;
如果在评估期间它们不是,则表达式评估会产生错误。
知道此约束在解析时不保持的情况被认为是有效的并且将产生解析错误。
接受可选
collator
参数以控制依赖于区域设置的字符串比较。
[">=", value, value]: boolean
[">=", value, value, collator]: boolean
否则
,
返回
true
所有输入
。
按顺序评估输入,并且评估是短路的:一旦输入表达式求值
,结果就是
并且不再评估其他输入表达式。
true
false
false
false
["all", boolean, boolean]: boolean
["all", boolean, boolean, ...]: boolean
否则
,
返回
true
任何输入
。
按顺序评估输入,并且评估是短路的:一旦输入表达式求值
,结果就是
并且不再评估其他输入表达式。
true
false
true
true
["any", boolean, boolean]: boolean
["any", boolean, boolean, ...]: boolean
选择相应测试条件评估为true的第一个输出。
["case",
condition: boolean, output: OutputType, condition: boolean, output: OutputType, ...,
default: OutputType
]: OutputType
依次计算每个表达式,直到获得第一个非空值,并返回该值。
["coalesce", OutputType, OutputType, ...]: OutputType
选择标签值与输入值匹配的输出,如果未找到匹配则选择回退值。
输入可以是任何表达式(例如
["get", "building_type"]
)。
每个标签必须是单个文字值或文字值数组(例如
"a"
或
["c", "b"]
),并且这些值必须是所有字符串或所有数值。
(值
"1"
并且
1
不能都是同一匹配表达式中的标签。)如果输入类型与标签的类型不匹配,则结果将是回退值。
["match",
input: InputType (number or string),
label_1: InputType | [InputType, InputType, ...], output_1: OutputType,
label_n: InputType | [InputType, InputType, ...], output_n: OutputType, ...,
default: OutputType
]: OutputType
Ramps, scales, curves
通过在输入和输出值对之间进行插值(“停止”),产生连续,平滑的结果。
的
input
可以是任何数值表达式(例如,
["get", "population"]
)。
停止输入必须是严格按升序排列的数值文字。
输出类型必须是
number
,
array<number>
,或
color
。
插值类型:
["linear"]
:在一对停止之间线性插值,小于和略大于输入。["exponential", base]
:在停靠点之间以指数方式插值,小于和大于输入。base
控制输出增加的速率:较高的值使输出增加到更高的范围。 当值接近1时,输出线性增加。["cubic-bezier", x1, y1, x2, y2]
:使用给定控制点定义的三次贝塞尔曲线进行插值。
["interpolate",
interpolation: ["linear"] | ["exponential", base] | ["cubic-bezier", x1, y1, x2, y2 ],
input: number,
stop_input_1: number, stop_output_1: OutputType,
stop_input_n: number, stop_output_n: OutputType, ...
]: OutputType (number, array<number>, or Color)
通过在输入和输出值对之间进行插值(“停止”),产生连续,平滑的结果。
类似
interpolate
,但输出类型必须是
color
,并且插值在Hue-Chroma-Luminance颜色空间中执行。
["interpolate-hcl",
interpolation: ["linear"] | ["exponential", base] | ["cubic-bezier", x1, y1, x2, y2 ],
input: number,
stop_input_1: number, stop_output_1: Color,
stop_input_n: number, stop_output_n: Color, ...
]: Color
通过在输入和输出值对之间进行插值(“停止”),产生连续,平滑的结果。
类似
interpolate
,但输出类型必须是
color
,并且插值在CIELAB颜色空间中执行。
["interpolate-lab",
interpolation: ["linear"] | ["exponential", base] | ["cubic-bezier", x1, y1, x2, y2 ],
input: number,
stop_input_1: number, stop_output_1: Color,
stop_input_n: number, stop_output_n: Color, ...
]: Color
通过评估由输入和输出值对(“停止”)定义的分段常数函数,生成离散的步进结果。
的
input
可以是任何数值表达式(例如,
["get", "population"]
)。
停止输入必须是严格按升序排列的数值文字。
返回小于输入的停止输出值,如果输入小于第一个停止,则返回第一个输入。
["step",
input: number,
stop_output_0: OutputType,
stop_input_1: number, stop_output_1: OutputType,
stop_input_n: number, stop_output_n: OutputType, ...
]: OutputType
Variable binding
将表达式绑定到命名变量,然后可以使用 [“var”,“variable_name”] 在结果表达式中引用它们 。
["let",
string (alphanumeric literal), any, string (alphanumeric literal), any, ...,
OutputType
]: OutputType
使用“let”引用变量绑定。
["var", previously bound variable name]: the type of the bound expression
String
返回
string
由输入的串联组成的。
每个输入都转换为字符串,就像是
to-string
。
["concat", value, value, ...]: string
返回转换为小写的输入字符串。 遵循Unicode默认大小写转换算法和Unicode字符数据库中的区分大小写的大小写映射。
["downcase", string]: string
返回
true
是否期望输入字符串清晰呈现。
返回
false
输入字符串是否包含无法呈现而没有潜在意义丧失的部分(例如,需要复杂文本整形的印度语脚本,或者如果
mapbox-gl-rtl-text
插件未使用,则为
从右到左的脚本
)。
["is-supported-script", string]: boolean
返回提供的语言环境的IETF语言标记
collator
。
这可用于确定默认系统区域设置,或确定是否已成功加载请求的区域设置。
["resolved-locale", collator]: string
返回转换为大写的输入字符串。 遵循Unicode默认大小写转换算法和Unicode字符数据库中的区分大小写的大小写映射。
["upcase", string]: string
Color
从红色,绿色和蓝色分量创建颜色值,其范围必须介于0到255之间,alpha分量设置为1.如果任何分量超出范围,则表达式为错误。
["rgb", number, number, number]: color
从红色,绿色,蓝色组件创建颜色值,颜色值必须介于0到255之间,alpha组件必须介于0和1之间。如果任何组件超出范围,则表达式是错误。
["rgba", number, number, number, number]: color
返回一个包含输入颜色的红色,绿色,蓝色和alpha分量的四元素数组。
["to-rgba", color]: array<number, 4>
Math
对于两个输入,返回从第一个输入中减去第二个输入的结果。 对于单个输入,返回从0减去的结果。
["-", number, number]: number
["-", number]: number
返回输入的乘积。
["*", number, number, ...]: number
返回第二个输入的第一个输入的浮点除法的结果。
["/", number, number]: number
返回第一个输入的整数除法后的余数。
["%", number, number]: number
返回将第一个输入提升到第二个指定幂的结果。
["^", number, number]: number
返回输入的总和。
["+", number, number, ...]: number
返回输入的绝对值。
["abs", number]: number
返回输入的反余弦值。
["acos", number]: number
返回输入的反正弦值。
["asin", number]: number
返回输入的反正切值。
["atan", number]: number
返回大于或等于输入的最小整数。
["ceil", number]: number
返回输入的余弦值。
["cos", number]: number
返回数学常数e。
["e"]: number
返回小于或等于输入的最大整数。
["floor", number]: number
返回输入的自然对数。
["ln", number]: number
返回数学常数ln(2)。
["ln2"]: number
返回输入的十进制对数。
["log10", number]: number
返回输入的基数 - 2对数。
["log2", number]: number
返回输入的最大值。
["max", number, number, ...]: number
返回输入的最小值。
["min", number, number, ...]: number
返回数学常数pi。
["pi"]: number
将输入舍入为最接近的整数。
中途值从零开始舍入。
例如,
["round", -1.5]
计算结果为-2。
["round", number]: number
返回输入的正弦值。
["sin", number]: number
返回输入的平方根。
["sqrt", number]: number
返回输入的正切值。
["tan", number]: number
Zoom
获取当前缩放级别。 请注意,在样式布局和绘画属性中, [“缩放”] 可能仅显示为顶级“步”或“插值”表达式的输入。
["zoom"]: number
Heatmap
获取热图图层中像素的核密度估计值,该值是对特定像素周围拥挤的数据点的相对度量。
只能在
heatmap-color
酒店使用。
["heatmap-density"]: number
获取渐变线的进度。
只能在
line-gradient
酒店使用。
["line-progress"]: number
Other
Function
可以将任何布局或绘制属性的值指定为 函数 。 函数允许您使用当前缩放级别和/或要素的属性更改地图要素的外观。
fill-color
属性中
使用的函数的停止输出值
必须是
颜色
。
"identity"
,
"exponential"
,
"interval"
,或
"categorical"
。
"identity"
- 将输入作为输出返回的函数。
"exponential"
- 通过在停止之间进行插值来生成输出的函数,该函数仅小于且大于函数输入。 域(输入值)必须是数值,样式属性必须支持插值。 支持插值的样式属性标记为 ,“指数”符号和 指数 是这些属性的默认函数类型。
"interval"
- 一个函数,它返回stop的输出值,小于函数输入。 域(输入值)必须是数值。 任何样式属性都可以使用区间函数。 对于标有的属性 ,“interval”符号,这是默认的函数类型。
"categorical"
- 返回stop的输出值等于函数输入的函数。
- 在分类函数中,当特征值与任何停止域值不匹配时。
- 在属性和缩放和属性函数中,当要素不包含指定属性的值时。
- 在标识函数中,当特征值对样式属性无效时(例如,如果该函数用于 circle-color 属性,但feature属性值不是字符串或不是有效颜色)。
- 在区间或指数属性和缩放和属性函数中,当特征值不是数值时。
"rgb"
,
"lab"
,
"hcl"
。
"rgb"
- 使用RGB颜色空间插入颜色值
"lab"
- 使用LAB颜色空间插入颜色值。
"hcl"
- 使用HCL颜色空间插入颜色值,分别插入Hue,Chroma和Luminance通道。
缩放功能 允许地图特征的外观随地图的缩放级别而变化。 缩放功能可用于创建深度和控制数据密度的错觉。 每个停靠点都是一个包含两个元素的数组:第一个是缩放级别,第二个是函数输出值。
{
"circle-radius": {
"stops": [
// zoom is 5 -> circle radius will be 1px
[5, 1],
// zoom is 10 -> circle radius will be 2px
[10, 2]
]
}
}
颜色 , 数值 和 数组 属性 的渲染值 在停靠点之间进行插值。 无法插入 布尔值 和 字符串 属性值,因此它们的渲染值仅在指定的停靠点处更改。
缩放函数为
布局
和
绘制
属性
呈现的方式之间存在重要差异
。
每当缩放级别改变时,连续地重新评估绘制属性,甚至是小数。
涂料性能的渲染值会发生变化,例如,作为地图缩放级别之间移动
4.1
和
4.6
。
另一方面,布局属性仅针对每个整数缩放级别计算一次。
要继续前面的例子:布局属性的渲染将
不会
缩放级别之间的变化
4.1
和
4.6
,无论被指定为何种停止;
但在缩放级别
5
,函数将根据函数重新评估,属性的渲染值将发生变化。
(您可以在布局属性缩放功能中包含小数缩放级别,它会影响生成的值;但是,渲染只会在整数缩放级别更改。)
属性函数 允许地图特征的外观随其属性而变化。 属性函数可用于在视觉上区分同一层内的特征类型或创建数据可视化。 每个停靠点都是一个包含两个元素的数组,第一个是属性输入值,第二个是函数输出值。 请注意,目前并非所有属性和平台都支持属性功能。
{
"circle-color": {
"property": "temperature",
"stops": [
// "temperature" is 0 -> circle color will be blue
[0, 'blue'],
// "temperature" is 100 -> circle color will be red
[100, 'red']
]
}
}
缩放和属性功能 允许地图特征的外观随其属性 和 缩放 而变化 。 每个停靠点都是一个包含两个元素的数组,第一个是具有属性输入值和缩放的对象,第二个是函数输出值。 请注意,对属性函数的支持尚未完成。
{
"circle-radius": {
"property": "rating",
"stops": [
// zoom is 0 and "rating" is 0 -> circle radius will be 0px
[{zoom: 0, value: 0}, 0],
// zoom is 0 and "rating" is 5 -> circle radius will be 5px
[{zoom: 0, value: 5}, 5],
// zoom is 20 and "rating" is 0 -> circle radius will be 0px
[{zoom: 20, value: 0}, 0],
// zoom is 20 and "rating" is 5 -> circle radius will be 20px
[{zoom: 20, value: 5}, 20]
]
}
}
Filter (deprecated syntax)
在样式规范的先前版本中, 使用下面记录的弃用语法定义 过滤器 。 虽然使用此语法定义的过滤器将继续有效,但我们建议使用更灵活的 表达式 语法。 下面的表达式语法和不推荐使用的语法不能在单个过滤器定义中混合使用。
Existential Filters
["has", key]
功能[键]
存在
["!has", key]
功能[键]
不存在
Comparison Filters
["==", key, value]
相等:
功能[键]
=
值
["!=", key, value]
不等式:
feature
[key]
≠
value
[">", key,
value]
大于:
feature
[key]
>
value
[">=", key,
value]
大于或等于:
feature
[key]
≥
值
["<", key,
value]
小于:
feature
[key]
<
value
["<=", key,
value]
小于等于:
feature
[key]
≤
值
Set Membership Filters
["in", key,
v0,
..., vn]
设置包含:
feature
[key]
∈
{
v0
,...,
vn
}
["!in", key,
v0,
..., vn]
设置排除:
功能[键]
∉
{
v0
,...,
vn
}
Combining Filters
["all", f0, ...,
fn]
逻辑
AND
:
F0
∧...∧
FN
["any", f0, ...,
fn]
逻辑
OR
:
F0
∨...∨
FN
["none", f0, ...,
fn]
逻辑
NOR
:¬
F0
∧...∧¬
FN
一 键 必须标识功能属性的字符串,或以下特殊键之一:
"$type"
:要素类型。 此键可以与使用"=="
,"!="
,"in"
,和"!in"
运营商。 可能的值是"Point"
,"LineString"
和"Polygon"
。"$id"
:功能标识符。 此键可以与使用"=="
,"!="
,"has"
,"!has"
,"in"
,和"!in"
运营商。
一个 值 (和 V0 ,..., VN 为集经营者)必须是一个 字符串 , 数值 或 布尔值 进行比较的属性值。
设置成员资格过滤器是一种紧凑而有效的方法,用于测试字段是否与多个值匹配。
比较和集合成员过滤器实现严格类型的比较;
例如,以下所有的评估为假:
0
< "1"
,
2 ==
"2"
,
"true"
in
[true, false]
。
的
"all"
,
"any"
和
"none"
过滤运营商用于创建化合物的过滤器。
值
f0
,...,
fn
必须是过滤器表达式本身。
["==", "$type", "LineString"]
此过滤器要求
class
每个要素
的
属性等于“street_major”,“street_minor”或“street_limited”。
["in", "class", "street_major", "street_minor", "street_limited"]
组合过滤器“all”采用
class
其后
的三个其他过滤器,并且要求所有这些过滤器都包含一个要素:一个要素必须
等于“street_limited”,它
admin_level
必须大于或等于3,它的类型不能是多边形。
您可以将组合过滤器更改为“任意”,以允许包含与任何这些条件匹配的要素
- 多边形的要素,但具有不同的
class
值,依此类推。
[
"all",
["==", "class", "street_limited"],
[">=", "admin_level", 3],
["!in", "$type", "Polygon"]
]