类型
MapLibre样式包含各种类型的值,最常见的是作为图层样式属性的值;
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"
}
Formatted
formatted
类型是一个带有单独格式化选项注释的各部分的字符串;
{
"text-field": ["format",
"foo", { "font-scale": 1.2 },
"bar", { "font-scale": 0.8 }
]
}
ResolvedImage
resolvedImage
类型是在图层中使用的图像(例如图标或图案)。image
表达式运算符的输入会根据当前地图样式检查它是否可用于渲染,结果以resolvedImage
类型返回。这种方法允许开发者定义一系列图像,如果之前的图像未找到,地图可以回退到这些图像,这通过仅提供icon-image
的普通字符串是无法实现的(因为多个字符串不能提供给icon-image
,并且多个图像不能在字符串中定义);
{
"icon-image": ["coalesce", ["image", "myImage"], ["image", "fallbackImage"]]
}
String
字符串是文本。在MapLibre样式中,字符串使用引号;
{
"source": "mySource"
}
Boolean
布尔值是表示真或假的值。在MapLibre样式中,布尔值是不带引号的literal true
或false
;
{
"fill-antialias": true
}
Number
数字是数值。在MapLibre样式中,数字是不带引号的浮点值或整数;
{
"text-size": 24
}
Array
数组是值的有序列表。在MapLibre样式中,数组元素通常必须是相同类型的。例外情况是围绕表达式的括号;
{
"line-dasharray": [2, 4]
}
Point
点是可以以数组形式表示的位置;
{
// 经度, 纬度
"point": [-76.0, 42.0]
}
Enum
枚举是一组预定义的常量中的一个,表示为未加引号的字符串或字符串数组;
{
"text-transform": "uppercase"
}
Padding
填充是描述顶部、右侧、底部和左侧四个方向填充量的数字数组。它可以是两个值的简写数组,其中第一个值表示垂直填充(顶部/底部),第二个值表示水平填充(左/右);
{
"icon-text-fit-padding": [5, 10]
}
{
"icon-text-fit-padding": [5, 10, 5, 10]
}
ProjectionDefinition
投影定义是对地图的地理投影的定义。它可以是字符串(预设投影)、投影转换状态或插值表达式;
预设投影
可以使用的预设投影:
投影 | 描述 |
---|---|
albers | 基于圆锥投影的投影,主要用于绘制美国地图 |
equalEarth | 等面积伪圆柱投影,保持区域面积的准确性 |
equirectangular | 等距长方形投影,简单的笛卡尔投影 |
lambertConformalConic | 保角圆锥投影 |
mercator | 默认的墨卡托投影 |
naturalEarth | 伪圆柱投影,设计用于小比例尺世界地图 |
winkelTripel | 复合伪圆柱投影,用于世界地图 |
globe | 球形地球投影 |
vertical-perspective | 垂直透视投影,模拟从太空观看地球的视角 |
投影转换状态
投影转换状态是一个数组,形式为[from投影
, to投影
, transition
]。其中from投影
和to投影
是预设投影之一,transition
是从0到1的插值值,0表示在from
投影中,1表示在to
投影中;
如果from
和to
相同,则transition
将没有效果;
示例
在离散缩放级别之间切换投影
使用相机表达式,在特定缩放级别上离散地在投影之间切换;
type: ["step", ["zoom"],
"vertical-perspective",
11, "mercator"
]
缩放级别10.9的输出: "vertical-perspective"
缩放级别11.0的输出: "vertical-perspective"
缩放级别11.1的输出: "mercator"
基于缩放级别在不同投影之间动画
使用相机表达式,基于缩放级别在投影之间动画,使用插值函数。下面的例子将产生一个自适应地球,在缩放级别10到12之间从vertical-perspective
插值到mercator
;
type: ["interpolate", ["linear"], ["zoom"],
10,"vertical-perspective",
12,"mercator"
]
缩放级别9.9的输出: "vertical-perspective"
缩放级别11的输出: ["vertical-perspective", "mercator", 0.5]
缩放级别12的输出: ["vertical-perspective", "mercator", 1]
缩放级别12.1的输出: "mercator"
提供一个projection
type: ["vertical-perspective", "mercator", 0.7]
使用投影预设
还有一些额外的预设,可以产生常用的表达式:
预设 | 完整值 | 描述 |
---|---|---|
globe | ["interpolate", ["linear"], ["zoom"],10, "vertical-perspective", 12, "mercator"] | 自适应地球:在缩放级别10和12之间从垂直透视插值到墨卡托投影 |
numberArray
单个数值,或数值数组;
{
"hillshade-illumination-direction": 24,
"hillshade-illumination-direction": [45, 57.3]
}
colorArray
单个颜色值,或颜色值数组;
{
"hillshade-highlight-color": "#ffff00",
"hillshade-highlight-color": ["#ffff00", "rgb(255, 255, 0)", "yellow"]
}