mirror of
https://github.com/maplibre/martin.git
synced 2024-12-19 12:51:37 +03:00
a5c5505713
Dynamically create image sprites for MapLibre rendering, given a directory with images. ### TODO * [x] Work with @flother to merge these PRs * [x] https://github.com/flother/spreet/pull/59 (must have) * [x] https://github.com/flother/spreet/pull/57 * [x] https://github.com/flother/spreet/pull/56 * [ ] https://github.com/flother/spreet/pull/62 (not required but nice to have, can upgrade later without any code changes) * [x] Add docs to the book * [x] Add CLI param, e.g. `--sprite <dir_path>` * [x] Don't output `.sprites` in auto-genned config when not in use ### API Per [MapLibre sprites API](https://maplibre.org/maplibre-style-spec/sprite/), we need to support the following: * `/sprite/<sprite_id>.json` metadata about the sprite file - all coming from a single directory * `/sprite/<sprite_id>.png` all images combined into a single PNG * `/sprite/<sprite_id>@2x.json` same but for high DPI devices * `/sprite/<sprite_id>@2x.png` Multiple sprite_id values can be combined into one sprite with the same pattern as for tile joining: `/sprite/<sprite_id1>,<sprite_id2>,...,<sprite_idN>[.json|.png|@2x.json|@2x.png]`. No ID renaming is done, so identical names will override one another. ### Configuration [Config file](https://maplibre.org/martin/config-file.html) and possibly CLI should have a simple option to serve sprites. The configuration may look similar to how mbtiles and pmtiles are configured: ```yaml # Publish sprite images sprites: paths: # scan this whole dir, matching all image files, and publishing it as "my_images" sprite source - /path/to/my_images sources: # named source matching source name to a directory my_sprites: /path/to/some_dir ``` Implement #705
31 lines
412 B
JSON
31 lines
412 B
JSON
{
|
|
"another_bicycle": {
|
|
"height": 15,
|
|
"pixelRatio": 1,
|
|
"width": 15,
|
|
"x": 20,
|
|
"y": 16
|
|
},
|
|
"bear": {
|
|
"height": 16,
|
|
"pixelRatio": 1,
|
|
"width": 16,
|
|
"x": 20,
|
|
"y": 0
|
|
},
|
|
"bicycle": {
|
|
"height": 15,
|
|
"pixelRatio": 1,
|
|
"width": 15,
|
|
"x": 35,
|
|
"y": 16
|
|
},
|
|
"sub/circle": {
|
|
"height": 20,
|
|
"pixelRatio": 1,
|
|
"width": 20,
|
|
"x": 0,
|
|
"y": 0
|
|
}
|
|
}
|