Usage
Prepare your environment with:
nvm use
npm ci
Generate JSON styles
To generate a style.json for a default flavor and language:
npm run generate_style style.json https://example.com/tilejson.json light en
Protomaps basemap style for MapLibre GL
Prepare your environment with:
nvm use
npm ci
To generate a style.json for a default flavor and language:
npm run generate_style style.json https://example.com/tilejson.json light en
generate_style
to CLI bin pathgenerate_style
can take a .ts
or .js
ESM Flavor, or a .json
Flavorkind=address
in buildings
from building centroids via @pietervdvn [#387]protomaps-themes-base
to @protomaps/basemaps
protomaps-themes-base.js
to basemaps.js
Theme
type renamed to Flavor
CONTRAST
flavor to external repolayers
method. To migrate:Before:
default("example","light","en")
labels("example","light","en")
layersWithCustomTheme("example",theme,"en")
layersWithPartialCustomTheme("example",theme,"en")
noLabelsWithCustomTheme("example",theme)
labelsWithPartialCustomTheme("example",theme,"en")
After:
layers("example",namedFlavor("light"),{lang:"en"})
layers("example",namedFlavor("light"),{lang:"en",labelsOnly:true})
layers("example",flavor,{lang:"en"})
layers("example",{...flavor,buildings:"red"},{lang:"en"})
layers("example",flavor)
layers("example",{...flavor,buildings:"red"},{lang:"en",labelsOnly:true})
--clip
option to tile generation which clips the entire tileset by a polygon or multipolygon. [#51]$type
in water filters to be MapLibre v5.0 compatible.kind=ocean
via @dericke [#329]Theme
interfacemin_height
via @JfrAziz [#323]kind=runway
roads
kind=ferry
, remove ferry kind_detail
[#312]medium_road
transit
features into roads
pier
is now kind=path
kind_detail=pier
level
and layer
keyslink=1
to is_link=true
level=-1
and level=1
to is_bridge=true
and is_tunnel=true
transit_pier
theme propertykind_detail
in boundaries is the min admin levelsort_rank
to relevant layersele
to elevation
pmap:
prefixes from style (breaking change) (#282)pmap:
prefixes (breaking change) [#282]physical_point
, natural
and physical_line
layers.landuse
, water
, pois
and earth
layers to align with Tilezen. water
layer to kind=fountain
[#279]tsup
for building ESM/CJS/IIFE outputs via @iwpnd [#231]pmap:script
for non-latin names via @wipfli [#254]transit
layer. via @pietervdvn [#249] - example for `light` theme https://protomaps.github.io/basemaps-assets/sprites/v3/light`
- Style deployments need to depend on the spritesheet assets in addition to fonts.
village_green
, landuse
, allotments
to POI layer via @lenalebt [#204]landuse_urban_green
layervillage_green
and allotments
to landuse layer via @lenalebt [#206]pmap:kind
=bus_stop
to POIs. via @eikesdisputed
tag on boundaries consistent [#190]national_park
, protected_area
, and nature_reserve
to landuse layer from natural layer as they are not natural but cultural. #47leisure
tag are now mapped to individual kind values instead of all erroneously to park
. #47amenity
tag are mapped to individual kind values instead of all erroneously to school
when not hospital
. #47national_park
, protected_area
, and nature_reserve
to landuse layer. #47state
(province) is now region
(preparing for v4 Tilezen changes) #47city
is now locality
(preparing for v4 Tilezen changes) #47town
and village
are now locality
("city") instead of neighbourhood
(fixing v2 series bug and preparing for v4 Tilezen changes) #37pmap:kind
is present on every feature now in every layerpmap:kind_detail
is optionally present on some features in some layerspmap:
prefix will be removed (so pmap:kind
will become simply kind
)pmap:
prefix will be removed (so pmap:min_zoom
will become simply min_zoom
)disputed
lines #371
, 3
, 5
, and 7
– those generally aren't styled and are taking up a lot of file size even at very low zooms #47county
lines to show starting at zoom 8 instead of 10. #47building_part
kind features to later zooms (to reduce file size) #47height
tag at mid-zooms so more buildings merge in post-processing (to reduce file size) #47min_height
property to enable 2.5D and 3D visualizations #47kind
values for: beach
, pier
, zoo
, military
, naval_base
, airfield
, cemetery
, recreation_ground
, winter_sports
, quarry
, park
, and forest
. #47national_park
kind (versus park
), looking at operator
tag to derive this from OSM to emphasize US National Park Service in United States of America and elsewhere #47forest
kind (versus wood
), looking at operator
tag to derive this from OSM to emphasize National Forests in United States of America and elsewhere #47boundary
, landuse
, leisure
, and natural
properties from OSM tags (though don't use them to be v4 safe) #47 kind
value for grass
#47pmap:kind
coallesce as in the landuse layer #47boundary
and leisure
properties (they moved to landuse layer along with the relevant featurse) #47river
lines 3 zooms earlier at zoom 9. #47pmap:level
(same as roads layer) #47bridge
, tunnel
, and layer
properties from OSM. #47intermittent
boolean indicators. #47ocean
and sea
label points much earlier. #47lake
, reservoir
, swimming_pool
and other terrestial water features; and bay
, strait
, fjord
marine featuers) #47alkaline
, intermittent
, and reservoir
boolean indicators. #47natural
, landuse
, leisure
, water
, and waterway
properties from OSM (though don't use them to be v4 safe) #47locality
features (to reduce file size) #47country
and region
labels from mid- and high-zooms (still present at low-zooms) #47pmap:kind_detail
for original OSM "place" tag values (including "city" instead of "locality") #47pmap:population_rank
for a quantized and backfilled population approximation. #47min_zooms
for country
and region
(state/province) labels to removes many labels from early zooms when they couldn't reasonably be labeled anyhow (to reduce file size) #47national_park
kind (versus park
), looking at operator
tag to derive this from OSM to emphasize US National Park Service in United States of America and elsewhere #47forest
kind (versus wood
), looking at operator
tag to derive this from OSM to emphasize National Forests in United States of America and elsewhere #47beach
) and landuse (cemetery
, recreation_ground
, winter_sports
, quarry
, park
, forest
, military
) tags. #47amenity
, attraction
, boundary
(select), craft
, historic
, landuse
(select), natural
(select), shop
, railway
(select), and tourism
features and exported OSM tag to schema property (though don't use them to be v4 safe) #47attraction
, craft
, historic
, landuse
, leisure
, and natural
tags. This augments amenity
, railway
, shop
, and tourism
. #47cuisine
, religion
tags (though use pmap:kind_detail
instead to be v4 safe) #47iata
property on airport
kind features to indicate if they have international service. #47max_zoom
) #47aerodrome
, airfield
, cemetery
, college
, forest
, golf_course
, grocery
, hospital
, library
, marina
, military
, national_park
, nature_reserve
, naval_base
, park
, post_office
, protected_area
, stadium
, supermarket
, townhall
, university
, and zoo
, or very large building area derived labels, or very tall height building area derived labels. #47pmap:min_zoom
property when a feature first became eligible to be in tiles, and mark max_zoom
features to hide until later display zooms. Use this pmap:min_zoom
property to setup client-side labe collisions. NOTE: In v4 it'll be renamed to just min_zoom
. #47ref
tag values to remove some prefix values and remove whitespace values (for easier construction into client side shields with narrower graphics). #37shield_text_length
for the integer lenth of the ref
tag (with transformations) to more quickly converge towards Tilezen syntax. Can be paired with new network
property to display client-side road shields. #37network
with values of US:I
, US:US
or other
. Can be paired with new shield_text_length
and ref
properties to display client-side road shields. #37pmap:kind_detail
for values of service
tag for other
kind roads (eg for parking_aisle
features) #47pier
kind lines. See also new pier
areas in the landuse layer. #47runway
and taxiway
kinds earlier (zoom 9 and 10), show pier
, yard
, siding
, and crossover
kinds later (zoom 13). #47 light_rail
and disused
) later. #47pmap:kind_detail
the value of the relevant service
, ferry
, or aerialway
tags. #47pmap:level
(same as roads layer in v2), and layer
property. #47network
, ref
, route
, and service
properties. #47aerialway
, aeroway
, highspeed
, man_made
, and railway
properties (though don't use them to be v4 safe) #47kind
values to match new label points in physical points layer #47pmap:level
(same as roads layer in v2) and alkaline
, intermittent
, and reservoir
boolean indicators #47building
and building_part
. #47population
values to be comma safe. #38population
values to be null safe. #22pmap:kind
. #47area
regions (eg "monaco") in the CLI. #20Credits: @bdon
Initial open source release as a reimplementation of the Protomaps Basemap vector tile schema as a Planetiler schema in Java.
Credits: @bdon
Last closed source version of the Protomaps Basemap vector tile schema
Credits: @bdon
Initiial closed source version of the Protomaps Basemap vector tile schema
NOTE: Release numbers follow Semantic Versioning. See also current project VERSION, the release notes here are for tagged releases; pre-release development changes are often not summarized until a tagged release.