What is @maplibre/maplibre-gl-style-spec?
@maplibre/maplibre-gl-style-spec is a package that provides a specification for defining styles for MapLibre GL maps. It allows developers to create, validate, and manipulate map styles in a structured and standardized way.
What are @maplibre/maplibre-gl-style-spec's main functionalities?
Style Validation
This feature allows you to validate a MapLibre GL style object against the style specification. The code sample demonstrates how to validate a style and check for any errors.
const { validate } = require('@maplibre/maplibre-gl-style-spec');
const style = {
"version": 8,
"sources": {},
"layers": []
};
const errors = validate(style);
if (errors.length) {
console.error('Style validation errors:', errors);
} else {
console.log('Style is valid!');
}
Style Parsing
This feature allows you to parse a MapLibre GL style object. The code sample shows how to parse a style and log the parsed result.
const { parse } = require('@maplibre/maplibre-gl-style-spec');
const style = {
"version": 8,
"sources": {},
"layers": []
};
const parsedStyle = parse(style);
console.log('Parsed style:', parsedStyle);
Style Generation
This feature allows you to generate a MapLibre GL style object. The code sample demonstrates how to generate a style from a given configuration.
const { generate } = require('@maplibre/maplibre-gl-style-spec');
const style = generate({
version: 8,
sources: {},
layers: []
});
console.log('Generated style:', style);
Other packages similar to @maplibre/maplibre-gl-style-spec
mapbox-gl-style-spec
mapbox-gl-style-spec is a package provided by Mapbox that offers similar functionalities for defining and validating styles for Mapbox GL maps. It is very similar to @maplibre/maplibre-gl-style-spec but is specifically tailored for use with Mapbox GL.
leaflet-styleeditor
leaflet-styleeditor is a plugin for Leaflet, another popular mapping library. It allows users to interactively edit the styles of Leaflet map layers. Although it provides style editing capabilities, it is designed for use with Leaflet rather than MapLibre GL.
MapLibre Style Specification & Utilities
This repository contains code and reference files that define the MapLibre style specification and provides some utilities for working with MapLibre styles.
The style specification is used in MapLibre GL JS and in MapLibre Native. Our long-term goal is to have feature parity between the web and the native libraries.
Contributing
If you want to contribute to the style specification, please open an issue with a design proposal. Once your design proposal has been accepted, you can open a pull request and implement your changes.
We aim to avoid breaking changes in the MapLibre style specification, because it makes life easier for our users.
Documentation
The documentation of the style specification also lives in this repository. We use MkDocs with the Material for MkDocs theme.
To work on the documentation locally, you need to have Docker installed and running. Start MkDocs with
npm run mkdocs
Most of the documentation is generated (from e.g. v8.json
). In another terminal, run:
WATCH=1 npm run generate-docs
This will re-run the generation script when needed.
Note that generated files should not be checked in and they are excluded in .gitignore
. Make sure to keep this file up-to-date and ignore generated files while making sure static Markdown files are not ignored.
NPM Package
The MapLibre style specification and utilities are published as a separate npm
package so that they can be installed without the bulk of GL JS.
npm install @maplibre/maplibre-gl-style-spec
CLI Tools
If you install this package globally, you will have access to several CLI tools.
npm install @maplibre/maplibre-gl-style-spec --global
gl-style-migrate
This repo contains scripts for migrating GL styles of any version to the latest version
(currently v8). Migrate a style like this:
$ gl-style-migrate bright-v7.json > bright-v8.json
To migrate a file in place, you can use the sponge
utility from the moreutils
package:
$ brew install moreutils
$ gl-style-migrate bright.json | sponge bright.json
gl-style-format
$ gl-style-format style.json
Will format the given style JSON to use standard indentation and sorted object keys.
gl-style-validate
$ gl-style-validate style.json
Will validate the given style JSON and print errors to stdout. Provide a
--json
flag to get JSON output.