Root¶
Root level properties of a MapLibre style specify the map's layers, tile sources and other resources, and default values for the initial camera position when not specified elsewhere.
{
"version": 8,
"name": "MapLibre Demo Tiles",
"sprite": "https://demotiles.maplibre.org/styles/osm-bright-gl-style/sprite",
"glyphs": "https://demotiles.maplibre.org/font/{fontstack}/{range}.pbf",
"sources": {... },
"layers": [...]
}
version¶
Required enum.
Style specification version number. Must be 8.
name¶
Optional string.
A human-readable name for the style.
metadata¶
Optional.
Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'maplibre:'.
metadata: {
"styleeditor:slimmode": true,
"styleeditor:comment": "Style generated 1677776383",
"styleeditor:version": "3.14.159265",
"example:object": {
"String": "one",
"Number": 2,
"Boolean": false
}
}
center¶
Optional array.
Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).
centerAltitude¶
Optional number.
Default map center altitude in meters above sea level. The style center altitude defines the altitude where the camera is looking at and will be used only if the map has not been positioned by other means (e.g. map options or user interaction).
SDK Support | MapLibre GL JS | MapLibre Native Android |
MapLibre Native iOS |
---|---|---|---|
basic functionality | 5.0.0 | ❌ (#2980) | ❌ (#2980) |
zoom¶
Optional number.
Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).
bearing¶
Optional number. Units in degrees. Defaults to 0
.
Default bearing, in degrees. The bearing is the compass direction that is "up"; for example, a bearing of 90° orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).
pitch¶
Optional number. Units in degrees. Defaults to 0
.
Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).
SDK Support | MapLibre GL JS | MapLibre Native Android |
MapLibre Native iOS |
---|---|---|---|
0-60 degrees | 0.8.0 | 1.0.0 | 1.0.0 |
0-85 degrees | 2.0.0 | ❌ (#1909) | ❌ (#1909) |
0-180 degrees | 5.0.0 | ❌ (#1909) | ❌ (#1909) |
roll¶
Optional number. Units in degrees. Defaults to 0
.
Default roll, in degrees. The roll angle is measured counterclockwise about the camera boresight. The style roll will be used only if the map has not been positioned by other means (e.g. map options or user interaction).
SDK Support | MapLibre GL JS | MapLibre Native Android |
MapLibre Native iOS |
---|---|---|---|
basic functionality | 5.0.0 | ❌ (#2941) | ❌ (#2941) |
light¶
Optional light.
The global light source.
sky¶
Optional sky.
The map's sky configuration. Note: this definition is still experimental and is under development in maplibre-gl-js.
sky: {
"sky-color": "#199EF3",
"sky-horizon-blend": 0.5,
"horizon-color": "#ffffff",
"horizon-fog-blend": 0.5,
"fog-color": "#0000ff",
"fog-ground-blend": 0.5,
"atmosphere-blend": [
"interpolate",
["linear"],
["zoom"],
0,
1,
10,
1,
12,
0
]
}
projection¶
Optional projection.
The projection configuration
projection: {
"type": [
"interpolate",
["linear"],
["zoom"],
10,
"vertical-perspective",
12,
"mercator"
]
}
terrain¶
Optional terrain.
The terrain configuration.
sources¶
Required sources.
Sources state which data the map should display. Specify the type of source with the type
property. Adding a source isn't enough to make data appear on the map because sources don't contain styling details like color or width. Layers refer to a source and give it a visual representation. This makes it possible to style the same source in different ways, like differentiating between types of roads in a highways layer.
Tiled sources (vector and raster) must specify their details according to the TileJSON specification.
sources: {
"maplibre-demotiles": {
"type": "vector",
"url": "https://demotiles.maplibre.org/tiles/tiles.json"
},
"maplibre-tilejson": {
"type": "vector",
"url": "http://api.example.com/tilejson.json"
},
"maplibre-streets": {
"type": "vector",
"tiles": [
"http://a.example.com/tiles/{z}/{x}/{y}.pbf",
"http://b.example.com/tiles/{z}/{x}/{y}.pbf"
],
"maxzoom": 14
},
"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
}
}
sprite¶
Optional sprite.
An array of {id: 'my-sprite', url: 'https://example.com/sprite'}
objects. Each object should represent a unique URL to load a sprite from and and a unique ID to use as a prefix when referencing images from that sprite (i.e. 'my-sprite:image'). All the URLs are internally extended to load both .json and .png files. If the id
field is equal to 'default', the prefix is omitted (just 'image' instead of 'default:image'). All the IDs and URLs must be unique. For backwards compatibility, instead of an array, one can also provide a single string that represent a URL to load the sprite from. The images in this case won't be prefixed.
glyphs¶
Optional string.
A URL template for loading signed-distance-field glyph sets in PBF format.
The URL must include:
-
{fontstack}
- When requesting glyphs, this token is replaced with a comma separated list of fonts from a font stack specified in the text-font property of a symbol layer. -
{range}
- When requesting glyphs, this token is replaced with a range of 256 Unicode code points. For example, to load glyphs for the Unicode Basic Latin and Basic Latin-1 Supplement blocks, the range would be 0-255. The actual ranges that are loaded are determined at runtime based on what text needs to be displayed.
This property is required if any layer uses the text-field
layout property. The URL must be absolute, containing the scheme, authority and path components.
transition¶
Optional transition.
A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's transition
property.
layers¶
Required array.
A style's layers
property lists all the layers available in that style. The type of layer is specified by the type
property, and must be one of background
, fill
, line
, symbol
, raster
, circle
, fill-extrusion
, heatmap
, hillshade
.
Except for layers of the background
type, each layer needs to refer to a source. Layers take the data that they get from a source, optionally filter features, and then define how those features are styled.