diff --git a/public/assets/protomaps.json b/public/assets/protomaps.json new file mode 100644 index 0000000000..bdc30a9dc8 --- /dev/null +++ b/public/assets/protomaps.json @@ -0,0 +1,423 @@ +{ + "attribution": "© OpenStreetMap", + "bounds": [ + -180, + -85.0511287, + 180, + 85.0511287 + ], + "center": [ + 0, + 0, + 0 + ], + "description": "Basemap layers derived from OpenStreetMap and Natural Earth, self-hosted", + "maxzoom": 15, + "minzoom": 0, + "name": "Protomaps Basemap", + "scheme": "xyz", + "tilejson": "3.0.0", + "tiles": [ + "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=e6cd5633d51d8e24" + ], + "vector_layers": [ + { + "fields": { + "brk_a3": "String", + "disputed": "Boolean", + "kind": "String", + "kind_detail": "Number", + "sort_rank": "Number" + }, + "id": "boundaries", + "maxzoom": 15, + "minzoom": 0 + }, + { + "fields": { + "addr_housenumber": "String", + "height": "Number", + "kind": "String", + "kind_detail": "String", + "layer": "Number", + "min_height": "Number", + "sort_rank": "Number" + }, + "id": "buildings", + "maxzoom": 15, + "minzoom": 11 + }, + { + "fields": { + "kind": "String", + "min_zoom": "Number", + "name": "String", + "name2": "String", + "name3": "String", + "name:ar": "String", + "name:bg": "String", + "name:cs": "String", + "name:da": "String", + "name:de": "String", + "name:el": "String", + "name:en": "String", + "name:es": "String", + "name:et": "String", + "name:fa": "String", + "name:fi": "String", + "name:fr": "String", + "name:ga": "String", + "name:he": "String", + "name:hi": "String", + "name:hr": "String", + "name:hu": "String", + "name:id": "String", + "name:it": "String", + "name:ja": "String", + "name:ko": "String", + "name:lt": "String", + "name:lv": "String", + "name:mr": "String", + "name:mt": "String", + "name:ne": "String", + "name:nl": "String", + "name:no": "String", + "name:pl": "String", + "name:pt": "String", + "name:ro": "String", + "name:ru": "String", + "name:sk": "String", + "name:sl": "String", + "name:sv": "String", + "name:tr": "String", + "name:uk": "String", + "name:ur": "String", + "name:vi": "String", + "name:zh-Hans": "String", + "name:zh-Hant": "String", + "pgf:name2": "String", + "pgf:name:hi": "String", + "pgf:name:mr": "String", + "pgf:name:ne": "String", + "script": "String", + "script2": "String", + "script3": "String" + }, + "id": "earth", + "maxzoom": 15, + "minzoom": 0 + }, + { + "fields": { + "kind": "String" + }, + "id": "landcover", + "maxzoom": 7, + "minzoom": 0 + }, + { + "fields": { + "kind": "String", + "sort_rank": "Number" + }, + "id": "landuse", + "maxzoom": 15, + "minzoom": 2 + }, + { + "fields": { + "capital": "String", + "kind": "String", + "kind_detail": "String", + "min_zoom": "Number", + "name": "String", + "name2": "String", + "name3": "String", + "name:ar": "String", + "name:bg": "String", + "name:cs": "String", + "name:da": "String", + "name:de": "String", + "name:el": "String", + "name:en": "String", + "name:es": "String", + "name:et": "String", + "name:fa": "String", + "name:fi": "String", + "name:fr": "String", + "name:ga": "String", + "name:he": "String", + "name:hi": "String", + "name:hr": "String", + "name:hu": "String", + "name:id": "String", + "name:it": "String", + "name:ja": "String", + "name:ko": "String", + "name:lt": "String", + "name:lv": "String", + "name:mr": "String", + "name:mt": "String", + "name:ne": "String", + "name:nl": "String", + "name:no": "String", + "name:pl": "String", + "name:pt": "String", + "name:ro": "String", + "name:ru": "String", + "name:sk": "String", + "name:sl": "String", + "name:sv": "String", + "name:tr": "String", + "name:uk": "String", + "name:ur": "String", + "name:vi": "String", + "name:zh-Hans": "String", + "name:zh-Hant": "String", + "pgf:name": "String", + "pgf:name2": "String", + "pgf:name:en": "String", + "pgf:name:hi": "String", + "pgf:name:mr": "String", + "pgf:name:ne": "String", + "population": "Number", + "population_rank": "Number", + "ref": "String", + "ref:FR:FANTOIR": "String", + "ref:FR:SIREN": "String", + "ref:RS:nkd": "String", + "ref:USCG": "String", + "ref:USPS": "String", + "ref:assessors_office": "String", + "ref:catasto": "String", + "ref:category": "String", + "ref:en": "String", + "ref:lzh": "String", + "ref:nid": "String", + "ref:se:pts:postort": "String", + "ref:vi": "String", + "ref:whc": "String", + "ref:xpcc": "String", + "ref:zh": "String", + "ref:zh-Hans": "String", + "ref:zh-Hant": "String", + "script": "String", + "script2": "String", + "script3": "String", + "sort_key": "Number", + "wikidata": "String" + }, + "id": "places", + "maxzoom": 15, + "minzoom": 0 + }, + { + "fields": { + "elevation": "String", + "iata": "String", + "kind": "String", + "kind_detail": "String", + "min_zoom": "Number", + "name": "String", + "name2": "String", + "name3": "String", + "name:ar": "String", + "name:bg": "String", + "name:cs": "String", + "name:da": "String", + "name:de": "String", + "name:el": "String", + "name:en": "String", + "name:es": "String", + "name:et": "String", + "name:fa": "String", + "name:fi": "String", + "name:fr": "String", + "name:ga": "String", + "name:he": "String", + "name:hi": "String", + "name:hr": "String", + "name:hu": "String", + "name:id": "String", + "name:it": "String", + "name:ja": "String", + "name:ko": "String", + "name:lt": "String", + "name:lv": "String", + "name:mr": "String", + "name:mt": "String", + "name:ne": "String", + "name:nl": "String", + "name:no": "String", + "name:pl": "String", + "name:pt": "String", + "name:ro": "String", + "name:ru": "String", + "name:sk": "String", + "name:sl": "String", + "name:sv": "String", + "name:tr": "String", + "name:uk": "String", + "name:ur": "String", + "name:vi": "String", + "name:zh-Hans": "String", + "name:zh-Hant": "String", + "pgf:name": "String", + "pgf:name2": "String", + "pgf:name3": "String", + "pgf:name:en": "String", + "pgf:name:he": "String", + "pgf:name:hi": "String", + "pgf:name:mr": "String", + "pgf:name:ne": "String", + "script": "String", + "script2": "String", + "script3": "String" + }, + "id": "pois", + "maxzoom": 15, + "minzoom": 5 + }, + { + "fields": { + "is_bridge": "Boolean", + "is_link": "Boolean", + "is_tunnel": "Boolean", + "kind": "String", + "kind_detail": "String", + "min_zoom": "Number", + "name": "String", + "name2": "String", + "name3": "String", + "name:ar": "String", + "name:bg": "String", + "name:cs": "String", + "name:da": "String", + "name:de": "String", + "name:el": "String", + "name:en": "String", + "name:es": "String", + "name:et": "String", + "name:fa": "String", + "name:fi": "String", + "name:fr": "String", + "name:ga": "String", + "name:he": "String", + "name:hi": "String", + "name:hr": "String", + "name:hu": "String", + "name:id": "String", + "name:it": "String", + "name:ja": "String", + "name:ko": "String", + "name:lt": "String", + "name:lv": "String", + "name:mr": "String", + "name:mt": "String", + "name:ne": "String", + "name:nl": "String", + "name:no": "String", + "name:pl": "String", + "name:pt": "String", + "name:ro": "String", + "name:ru": "String", + "name:sk": "String", + "name:sl": "String", + "name:sv": "String", + "name:tr": "String", + "name:uk": "String", + "name:ur": "String", + "name:vi": "String", + "name:zh-Hans": "String", + "name:zh-Hant": "String", + "network": "String", + "oneway": "String", + "pgf:name": "String", + "pgf:name2": "String", + "pgf:name:en": "String", + "pgf:name:hi": "String", + "pgf:name:mr": "String", + "pgf:name:ne": "String", + "ref": "String", + "route": "String", + "script": "String", + "script2": "String", + "script3": "String", + "service": "String", + "shield_text_length": "Number", + "sort_rank": "Number" + }, + "id": "roads", + "maxzoom": 15, + "minzoom": 3 + }, + { + "fields": { + "bridge": "String", + "kind": "String", + "kind_detail": "String", + "layer": "Number", + "min_zoom": "Number", + "name": "String", + "name2": "String", + "name3": "String", + "name:ar": "String", + "name:bg": "String", + "name:cs": "String", + "name:da": "String", + "name:de": "String", + "name:el": "String", + "name:en": "String", + "name:es": "String", + "name:et": "String", + "name:fa": "String", + "name:fi": "String", + "name:fr": "String", + "name:ga": "String", + "name:he": "String", + "name:hi": "String", + "name:hr": "String", + "name:hu": "String", + "name:id": "String", + "name:it": "String", + "name:ja": "String", + "name:ko": "String", + "name:lt": "String", + "name:lv": "String", + "name:mr": "String", + "name:mt": "String", + "name:ne": "String", + "name:nl": "String", + "name:no": "String", + "name:pl": "String", + "name:pt": "String", + "name:ro": "String", + "name:ru": "String", + "name:sk": "String", + "name:sl": "String", + "name:sv": "String", + "name:tr": "String", + "name:uk": "String", + "name:ur": "String", + "name:vi": "String", + "name:zh-Hans": "String", + "name:zh-Hant": "String", + "pgf:name": "String", + "pgf:name2": "String", + "pgf:name:en": "String", + "pgf:name:hi": "String", + "pgf:name:mr": "String", + "pgf:name:ne": "String", + "script": "String", + "script2": "String", + "script3": "String", + "sort_rank": "Number", + "tunnel": "String" + }, + "id": "water", + "maxzoom": 15, + "minzoom": 0 + } + ], + "version": "4.11.0" +} diff --git a/public/assets/sunny-hosted.json b/public/assets/sunny-hosted.json new file mode 100644 index 0000000000..7db18a2557 --- /dev/null +++ b/public/assets/sunny-hosted.json @@ -0,0 +1,4085 @@ +{ + "#": "AUTOMATICALLY GENERATED! Do not edit.", + "version": 8, + "name": "style@4.0.0-alpha.0 theme@sunny", + "glyphs": "https://protomaps.github.io/basemaps-assets/fonts/{fontstack}/{range}.pbf", + "sources": { + "protomaps": { + "attribution": "Protomaps © OpenStreetMap", + "type": "vector", + "maxzoom": 15, + "tiles": [ + "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=2af8b969a9e8b692" + ] + } + }, + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "#f0efdd" + } + }, + { + "id": "earth", + "type": "fill", + "source": "protomaps", + "source-layer": "earth", + "paint": { + "fill-color": "#fcf7e5" + } + }, + { + "id": "landcover_low_zooms", + "type": "fill", + "source": "protomaps", + "source-layer": "landcover", + "paint": { + "fill-color": [ + "match", + [ + "get", + "kind" + ], + "grassland", + "#e5f2c9", + "barren", + "rgba(255, 243, 215, 1)", + "urban_area", + "rgba(230, 230, 230, 1)", + "farmland", + "rgba(216, 239, 210, 1)", + "glacier", + "rgba(255, 255, 255, 1)", + "scrub", + "rgba(234, 239, 210, 1)", + "#f0efdd" + ], + "fill-opacity": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 5, + 1, + 7, + 0 + ] + } + }, + { + "id": "landuse_farmland", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "farmland" + ] + ], + "paint": { + "fill-color": "#EEF0D5" + } + }, + { + "id": "landuse_residential", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "residential" + ] + ], + "paint": { + "fill-color": "#f0ead9" + } + }, + { + "id": "landuse_park", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "national_park", + "park", + "cemetery", + "nature_reserve", + "golf_course" + ], + "paint": { + "fill-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 2, + "#f0efdd", + 10, + "#dfede5", + 18, + "#b0e9b0" + ] + } + }, + { + "id": "landuse_urban_green", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "allotments", + "village_green", + "playground" + ] + ], + "paint": { + "fill-color": "#9cd3b4", + "fill-opacity": 0.7 + } + }, + { + "id": "landuse_hospital", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "==", + "kind", + "hospital" + ] + ], + "paint": { + "fill-color": "#f9e1dc" + } + }, + { + "id": "landuse_industrial", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "==", + "kind", + "industrial" + ] + ], + "paint": { + "fill-color": "#efdfe8" + } + }, + { + "id": "landuse_school", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "school", + "university", + "college" + ] + ], + "paint": { + "fill-color": "#e4dec7" + } + }, + { + "id": "landuse_beach", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "beach" + ] + ], + "paint": { + "fill-color": "#e8e4d0" + } + }, + { + "id": "landuse_zoo", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "zoo" + ] + ], + "paint": { + "fill-color": "#c6dcdc" + } + }, + { + "id": "landuse_military", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "military", + "naval_base", + "airfield" + ] + ], + "paint": { + "fill-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 5, + "#f0efdd", + 8, + "#ecad9366" + ] + } + }, + { + "id": "natural_wood", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "wood", + "forest" + ], + "paint": { + "fill-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 2, + "#f0efdd", + 9, + "#d0ded0", + 13, + "#add19e", + 18, + "#add19e" + ] + } + }, + { + "id": "natural_scrub", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "scrub", + "grassland", + "grass" + ], + "paint": { + "fill-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 0, + "#cedcd7", + 12, + "#99d2bb" + ] + } + }, + { + "id": "natural_glacier", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "==", + "kind", + "glacier" + ], + "paint": { + "fill-color": "#e7e7e7" + } + }, + { + "id": "natural_sand", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "==", + "kind", + "sand" + ], + "paint": { + "fill-color": "#e2e0d7" + } + }, + { + "id": "landuse_park_line", + "type": "line", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "national_park", + "park", + "cemetery", + "nature_reserve", + "golf_course" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#fcf7e5", + 10, + "#afbdb5", + 16, + "#7cb384" + ] + } + }, + { + "id": "landuse_aerodrome", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "aerodrome" + ] + ], + "paint": { + "fill-color": "#dadbdf" + } + }, + { + "id": "roads_runway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "any", + [ + "in", + "kind_detail", + "runway" + ] + ], + "paint": { + "line-color": "#e9e9ed", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 10, + 0, + 12, + 4, + 18, + 30 + ] + } + }, + { + "id": "roads_taxiway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "any", + [ + "in", + "kind_detail", + "taxiway" + ] + ], + "paint": { + "line-color": "#e9e9ed", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 15, + 6 + ] + } + }, + { + "id": "landuse_runway", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "in", + "kind", + "runway", + "taxiway" + ] + ], + "paint": { + "fill-color": "#e9e9ed" + } + }, + { + "id": "water", + "type": "fill", + "source": "protomaps", + "source-layer": "water", + "filter": [ + "==", + "$type", + "Polygon" + ], + "paint": { + "fill-color": "#85c2e9" + } + }, + { + "id": "water_stream", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 10, + "filter": [ + "in", + "kind", + "stream" + ], + "paint": { + "line-color": "#85c2e9", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 18, + 10 + ] + } + }, + { + "id": "water_river", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 9, + "filter": [ + "in", + "kind", + "river" + ], + "paint": { + "line-color": "#85c2e9", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1, + 18, + 12 + ] + } + }, + { + "id": "water_underground_stream", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 14, + "filter": [ + "all", + [ + "in", + "kind", + "stream" + ], + [ + "has", + "is_tunnel" + ] + ], + "paint": { + "line-color": "#85c2e9", + "line-width": 0.5 + } + }, + { + "id": "water_underground_river", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 9, + "filter": [ + "all", + [ + "in", + "kind", + "river" + ], + [ + "has", + "is_tunnel" + ] + ], + "layout": { + "line-cap": "round" + }, + "paint": { + "line-color": "#85c2e9", + "line-dasharray": [ + 0.75, + 1.75 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1, + 18, + 6 + ] + } + }, + { + "id": "landuse_pedestrian", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "==", + "kind", + "pedestrian" + ] + ], + "paint": { + "fill-color": "#e3e0d4" + } + }, + { + "id": "landuse_pier", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "any", + [ + "==", + "kind", + "pier" + ] + ], + "paint": { + "fill-color": "#e0e0e0" + } + }, + { + "id": "roads_tunnels_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "in", + "kind", + "other", + "path" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_footway_casing_outer", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "in", + "kind_detail", + "footway", + "cycleway" + ] + ], + "paint": { + "line-color": "#888888", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 9 + ] + } + }, + { + "id": "roads_tunnels_footway_casing_inner", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "in", + "kind_detail", + "footway", + "cycleway" + ] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 8 + ] + } + }, + { + "id": "roads_tunnels_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 3, + 2 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "link", + 1 + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 3, + 2 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 3, + 2 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_highway_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!=", + "link", + 1 + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-dasharray": [ + 6, + 0.5 + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_tunnels_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "!=", + "kind_detail", + "footway" + ], + [ + "!=", + "kind_detail", + "cycleway" + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-dasharray": [ + 4.5, + 0.5 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_footway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "==", + "kind_detail", + "footway" + ] + ], + "paint": { + "line-color": "#d46710", + "line-dasharray": [ + 4, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 5 + ] + } + }, + { + "id": "roads_tunnels_cycleway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "==", + "kind_detail", + "cycleway" + ] + ], + "paint": { + "line-color": "#6099c9", + "line-dasharray": [ + 4, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 5 + ] + } + }, + { + "id": "roads_tunnels_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "link", + 1 + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_major_outline", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-dasharray": [ + 0.4, + 0.1 + ], + "line-color": "#d9a985", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 3.6, + 15, + 6, + 18, + 18 + ] + } + }, + { + "id": "roads_tunnels_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#f9d9b5", + 18, + "#f9b9a5" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_tunnels_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_tunnel" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!=", + "link", + 1 + ] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "roads_railway_tunnel", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "==", + "kind", + "rail" + ], + [ + "has", + "is_tunnel" + ] + ], + "paint": { + "line-dasharray": [ + 0.3, + 0.75 + ], + "line-opacity": 0.5, + "line-color": "#333333", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 0.15, + 18, + 9 + ] + } + }, + { + "id": "buildings", + "type": "fill", + "source": "protomaps", + "source-layer": "buildings", + "paint": { + "fill-color": "#cccccc", + "fill-opacity": 0.7, + "fill-outline-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 15, + "#cccccc", + 18, + "#aaaaaa" + ] + } + }, + { + "id": "transit_pier", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "==", + "kind_detail", + "pier" + ], + "paint": { + "line-color": "#e0e0e0", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 0.5, + 20, + 16 + ] + } + }, + { + "id": "roads_minor_service_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "==", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 18, + 8 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "!=", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 12, + "#dddddd", + 14, + "#aaaaaa", + 18, + "#888888" + ], + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "all", + [ + "==", + "link", + 1 + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1.5 + ] + } + }, + { + "id": "roads_major_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_highway_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!=", + "link", + 1 + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_footway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "==", + "kind_detail", + "footway" + ] + ], + "paint": { + "line-color": "#d46710", + "line-dasharray": [ + 3, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_cycleway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "==", + "kind_detail", + "cycleway" + ] + ], + "paint": { + "line-color": "#6099c9", + "line-dasharray": [ + 3, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "!=", + "kind_detail", + "cycleway" + ], + [ + "!=", + "kind_detail", + "footway" + ], + [ + "!=", + "kind_detail", + "pier" + ] + ], + "paint": { + "line-color": "#cbbbab", + "line-dasharray": [ + 3, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "link", + 1 + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#f9d9b5", + 18, + "#f9b9a5" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_minor_service", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "==", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": "#ebebeb", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 18, + 8 + ] + } + }, + { + "id": "roads_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ], + [ + "!=", + "kind_detail", + "service" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + "#ebebeb", + 16, + "#ffffff" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_major_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_major_outline", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#d9a985", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 3.6, + 15, + 6, + 18, + 18 + ] + } + }, + { + "id": "roads_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#f9d9b5", + 18, + "#f9b9a5" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_highway_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!=", + "link", + 1 + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 1 + ] + } + }, + { + "id": "roads_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "!has", + "is_tunnel" + ], + [ + "!has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!=", + "link", + 1 + ] + ], + "paint": { + "line-color": "#f9b9a5", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "roads_railway_bridge_centerline", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "==", + "kind", + "rail" + ], + [ + "has", + "is_bridge" + ] + ], + "paint": { + "line-opacity": 1, + "line-color": "#ccc", + "line-width": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 11, + 0, + 11.5, + 2, + 13, + 8, + 18, + 14 + ] + } + }, + { + "id": "roads_railway_centerline", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "==", + "kind", + "rail" + ], + [ + "!has", + "is_tunnel" + ] + ], + "paint": { + "line-opacity": 1, + "line-color": [ + "match", + [ + "get", + "kind_detail" + ], + "disused", + "#666666aa", + "tram", + "#999", + "subway", + "#999", + "#666" + ], + "line-width": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 11, + 0, + 11.5, + 1, + 13, + 3, + 18, + 6 + ] + } + }, + { + "id": "roads_railway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "==", + "kind", + "rail" + ] + ], + "paint": { + "line-dasharray": [ + 0.3, + 0.75 + ], + "line-opacity": 0.5, + "line-color": "#a7b1b3", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 3, + 0, + 6, + 0.15, + 18, + 9 + ] + } + }, + { + "id": "boundaries_country", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "filter": [ + "<=", + "kind_detail", + 2 + ], + "paint": { + "line-color": "#adadad", + "line-width": 1, + "line-dasharray": [ + 3, + 2 + ] + } + }, + { + "id": "boundaries", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "filter": [ + ">", + "kind_detail", + 2 + ], + "paint": { + "line-color": "#adadad", + "line-width": 0.5, + "line-dasharray": [ + 3, + 2 + ] + } + }, + { + "id": "roads_bridges_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 18, + 10, + 20, + 16 + ] + } + }, + { + "id": "roads_bridges_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "has", + "is_link" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 12, + 0, + 12.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_bridges_medium_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "medium_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 12, + 1.2, + 15, + 3, + 18, + 13 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 10, + 0, + 10.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": "#e0e0e0", + "line-gap-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 7.5, + 0.5, + 18, + 10 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 9, + 0, + 9.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_medium_outline", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "medium_road" + ] + ], + "paint": { + "line-color": "#7c6644", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 12, + 3.2, + 15, + 6, + 18, + 17 + ] + } + }, + { + "id": "roads_bridges_major_outline", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#a98985", + 18, + "#a97975" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 3.6, + 15, + 6, + 18, + 18 + ] + } + }, + { + "id": "roads_bridges_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "highway" + ], + [ + "!has", + "is_link" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#f9d9b5", + 18, + "#f9b9a5" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_bridges_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "minor_road" + ] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_bridges_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "has", + "is_link" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#f9d9b5", + 18, + "#f9b9a5" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_bridges_medium", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "medium_road" + ] + ], + "paint": { + "line-color": "#fcd6a4", + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 7, + 0, + 12, + 1.2, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_bridges_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "==", + "kind", + "major_road" + ] + ], + "paint": { + "line-color": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 8, + "#f9d9b5", + 18, + "#f9b9a5" + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_bridges_cycleway_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "==", + "kind_detail", + "cycleway" + ] + ], + "paint": { + "line-color": "#1069c9", + "line-dasharray": [ + 2, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_footway_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "==", + "kind_detail", + "footway" + ] + ], + "paint": { + "line-color": "#d46710", + "line-dasharray": [ + 2, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + [ + "has", + "is_bridge" + ], + [ + "in", + "kind", + "other", + "path" + ], + [ + "!=", + "kind_detail", + "cycleway" + ], + [ + "!=", + "kind_detail", + "footway" + ] + ], + "paint": { + "line-color": "#ebebeb", + "line-dasharray": [ + 2, + 1 + ], + "line-width": [ + "interpolate", + [ + "exponential", + 1.6 + ], + [ + "zoom" + ], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "address_label", + "type": "symbol", + "source": "protomaps", + "source-layer": "buildings", + "minzoom": 17, + "filter": [ + "==", + "kind", + "address" + ], + "layout": { + "symbol-placement": "point", + "text-font": [ + "Noto Sans Italic" + ], + "text-field": [ + "get", + "addr_housenumber" + ], + "text-size": 14 + }, + "paint": { + "text-color": "#555", + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "water_waterway_label", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "minzoom": 13, + "filter": [ + "in", + "kind", + "river", + "stream" + ], + "layout": { + "symbol-placement": "line", + "text-font": [ + "Noto Sans Regular" + ], + "text-field": [ + "get", + "name" + ], + "text-size": 12, + "text-letter-spacing": 0.3 + }, + "paint": { + "text-color": "#ffffff" + } + }, + { + "id": "pois_peak", + "type": "symbol", + "source": "protomaps", + "source-layer": "pois", + "filter": [ + "any", + [ + "==", + "kind", + "peak" + ] + ], + "layout": { + "text-font": [ + "Noto Sans Italic" + ], + "text-field": [ + "get", + "name" + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 10, + 8, + 16, + 12 + ], + "text-letter-spacing": 0.1, + "text-max-width": 9 + }, + "paint": { + "text-color": "#7e9aa0", + "text-halo-width": 1.5 + } + }, + { + "id": "roads_labels_minor", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 15, + "filter": [ + "any", + [ + "in", + "kind", + "minor_road", + "other", + "path" + ] + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "symbol-placement": "line", + "text-font": [ + "Noto Sans Regular" + ], + "text-field": [ + "get", + "name" + ], + "text-size": 12 + }, + "paint": { + "text-color": "#91888b", + "text-halo-color": "#ffffff", + "text-halo-width": 2 + } + }, + { + "id": "water_label_ocean", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": [ + "any", + [ + "in", + "kind", + "sea", + "ocean", + "lake", + "water", + "bay", + "strait", + "fjord" + ] + ], + "layout": { + "text-font": [ + "Noto Sans Medium" + ], + "text-field": [ + "get", + "name" + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 3, + 10, + 10, + 12 + ], + "text-letter-spacing": 0.1, + "text-max-width": 9, + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#ffffff" + } + }, + { + "id": "water_label_lakes", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": [ + "any", + [ + "in", + "kind", + "lake", + "water" + ] + ], + "layout": { + "text-font": [ + "Noto Sans Medium" + ], + "text-field": [ + "get", + "name" + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 3, + 0, + 6, + 12, + 10, + 12 + ], + "text-letter-spacing": 0.1, + "text-max-width": 9 + }, + "paint": { + "text-color": "#ffffff" + } + }, + { + "id": "roads_labels_major", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 11, + "filter": [ + "any", + [ + "in", + "kind", + "major_road", + "medium_road" + ] + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "symbol-placement": "line", + "text-font": [ + "Noto Sans Regular" + ], + "text-field": [ + "get", + "name" + ], + "text-size": 12 + }, + "paint": { + "text-color": "#938a8d", + "text-halo-color": "#ffffff", + "text-halo-width": 2 + } + }, + { + "id": "places_subplace", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "neighbourhood" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "text-field": [ + "get", + "name" + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-max-width": 7, + "text-letter-spacing": 0.1, + "text-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 5, + 2, + 8, + 4, + 12, + 18, + 15, + 20 + ], + "text-size": [ + "interpolate", + [ + "exponential", + 1.2 + ], + [ + "zoom" + ], + 11, + 8, + 14, + 14, + 18, + 24 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#8f8f8f", + "text-halo-color": "#e0e0e0", + "text-halo-width": 2 + } + }, + { + "id": "pois", + "type": "symbol", + "source": "protomaps", + "source-layer": "pois", + "filter": [ + "any", + [ + "<", + [ + "get", + "min_zoom" + ], + 13 + ] + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-field": [ + "get", + "name" + ], + "text-size": 11, + "text-max-width": 9, + "icon-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 0, + 2, + 14, + 2, + 16, + 20, + 17, + 2, + 22, + 2 + ] + }, + "paint": { + "text-color": "#8f8f8f", + "text-halo-color": "#e0e0e0", + "text-halo-width": 1.5 + } + }, + { + "id": "places_locality_circle", + "type": "circle", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "locality" + ], + "paint": { + "circle-radius": 2, + "circle-stroke-width": 1.5, + "circle-stroke-color": "#a3a3a3", + "circle-color": "#ffffff", + "circle-translate": [ + -6, + 0 + ] + }, + "maxzoom": 8 + }, + { + "id": "places_locality", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "locality" + ], + "layout": { + "text-field": [ + "get", + "name" + ], + "text-font": [ + "case", + [ + "<=", + [ + "get", + "min_zoom" + ], + 5 + ], + [ + "literal", + [ + "Noto Sans Medium" + ] + ], + [ + "literal", + [ + "Noto Sans Regular" + ] + ] + ], + "text-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 5, + 3, + 8, + 7, + 12, + 11 + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 2, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 13 + ], + 8, + [ + ">=", + [ + "get", + "population_rank" + ], + 13 + ], + 13, + 0 + ], + 4, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 13 + ], + 10, + [ + ">=", + [ + "get", + "population_rank" + ], + 13 + ], + 15, + 0 + ], + 6, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 12 + ], + 11, + [ + ">=", + [ + "get", + "population_rank" + ], + 12 + ], + 17, + 0 + ], + 8, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 11 + ], + 11, + [ + ">=", + [ + "get", + "population_rank" + ], + 11 + ], + 18, + 0 + ], + 10, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 9 + ], + 12, + [ + ">=", + [ + "get", + "population_rank" + ], + 9 + ], + 20, + 0 + ], + 15, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 8 + ], + 12, + [ + ">=", + [ + "get", + "population_rank" + ], + 8 + ], + 22, + 0 + ] + ], + "icon-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 0, + 2, + 8, + 4, + 10, + 8, + 12, + 6, + 22, + 2 + ], + "text-anchor": [ + "step", + [ + "zoom" + ], + "left", + 8, + "center" + ], + "text-radial-offset": 0.2 + }, + "paint": { + "text-color": "#5c5c5c", + "text-halo-color": "#e0e0e0", + "text-halo-width": 1 + } + }, + { + "id": "places_region", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "region" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "text-field": [ + "step", + [ + "zoom" + ], + [ + "get", + "name:short" + ], + 6, + [ + "get", + "name" + ] + ], + "text-font": [ + "Noto Sans Regular" + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 3, + 11, + 7, + 16 + ], + "text-radial-offset": 0.2, + "text-anchor": "center", + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#b3b3b3", + "text-halo-color": "#e0e0e0", + "text-halo-width": 2 + } + }, + { + "id": "places_country", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": [ + "==", + "kind", + "country" + ], + "layout": { + "symbol-sort-key": [ + "get", + "min_zoom" + ], + "text-field": [ + "get", + "name" + ], + "text-font": [ + "Noto Sans Medium" + ], + "text-size": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 2, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 10 + ], + 8, + [ + ">=", + [ + "get", + "population_rank" + ], + 10 + ], + 12, + 0 + ], + 6, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 8 + ], + 10, + [ + ">=", + [ + "get", + "population_rank" + ], + 8 + ], + 18, + 0 + ], + 8, + [ + "case", + [ + "<", + [ + "get", + "population_rank" + ], + 7 + ], + 11, + [ + ">=", + [ + "get", + "population_rank" + ], + 7 + ], + 20, + 0 + ] + ], + "icon-padding": [ + "interpolate", + [ + "linear" + ], + [ + "zoom" + ], + 0, + 2, + 14, + 2, + 16, + 20, + 17, + 2, + 22, + 2 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#a3a3a3" + } + } + ] +} \ No newline at end of file diff --git a/public/assets/sunny-unlabeled.json b/public/assets/sunny-unlabeled.json index 8ac9d1b940..9bb5ea58dc 100644 --- a/public/assets/sunny-unlabeled.json +++ b/public/assets/sunny-unlabeled.json @@ -7,9 +7,7 @@ "protomaps": { "attribution": "Protomaps © OpenStreetMap", "type": "vector", - "tiles": [ - "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=2af8b969a9e8b692" - ], + "url": "pmtiles://https://cache.mapcomplete.org/planet-latest.pmtiles", "maxzoom": 15 } }, diff --git a/public/assets/sunny.json b/public/assets/sunny.json index 5409ebb80f..9f7001be38 100644 --- a/public/assets/sunny.json +++ b/public/assets/sunny.json @@ -6,9 +6,7 @@ "protomaps": { "attribution": "Protomaps © OpenStreetMap", "type": "vector", - "tiles": [ - "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=2af8b969a9e8b692" - ], + "url": "pmtiles://https://cache.mapcomplete.org/planet-latest.pmtiles", "maxzoom": 15 } }, diff --git a/scripts/generateSunnyUnlabeled.ts b/scripts/generateSunnyUnlabeled.ts index 51ca4c1a67..09729d45eb 100644 --- a/scripts/generateSunnyUnlabeled.ts +++ b/scripts/generateSunnyUnlabeled.ts @@ -16,8 +16,21 @@ export class GenerateSunnyUnlabeled extends Script { writeFileSync("public/assets/sunny-unlabeled.json", JSON.stringify(unlabeled, null, " ")) } + /** + * Generates a variation hosted by api.protomaps + */ + generateHosted() { + const tilesource = "https://api.protomaps.com/tiles/v4/{z}/{x}/{y}.mvt?key=2af8b969a9e8b692" + const hosted = { "#": "AUTOMATICALLY GENERATED! Do not edit.", ...sunny } + delete hosted.sources.protomaps.url + hosted.sources.protomaps["tiles"] = [tilesource] + writeFileSync("public/assets/sunny-hosted.json", JSON.stringify(hosted, null, " ")) + + } + async main(args: string[]): Promise { this.generateUnlabeled() + this.generateHosted() } } diff --git a/src/Models/RasterLayers.ts b/src/Models/RasterLayers.ts index 01547cc117..d9d67fdc26 100644 --- a/src/Models/RasterLayers.ts +++ b/src/Models/RasterLayers.ts @@ -70,12 +70,13 @@ export class AvailableRasterLayers { throw "Detected invalid global layer with invalid id" } return joined.map( - (properties) => - { + (properties) => { + return { type: "Feature", properties, geometry: BBox.global.asGeometry(), } + } ) } diff --git a/src/assets/global-raster-layers.json b/src/assets/global-raster-layers.json index 883b28dd41..130dde5369 100644 --- a/src/assets/global-raster-layers.json +++ b/src/assets/global-raster-layers.json @@ -1,14 +1,28 @@ { "layers": [ { - "url": "pmtiles://https://api.protomaps.com/tiles/v4.json?key=2af8b969a9e8b692", - "style": "assets/sunny.json", + "style": "assets/sunny-hosted.json", "connect-src": [ "https://protomaps.github.io" ], "best": true, "id": "protomaps.sunny", - "name": "Protomaps Sunny", + "name": "Protomaps Sunny (Hosted by Protomaps)", + "type": "vector", + "category": "osmbasedmap", + "attribution": { + "text": "Protomaps", + "url": "https://protomaps.com/" + } + }, + { + "style": "assets/sunny.json", + "connect-src": [ + "https://protomaps.github.io" + ], + "best": true, + "id": "protomaps.sunny-self", + "name": "Protomaps Sunny (Hosted by pietervdvn)", "type": "vector", "category": "osmbasedmap", "attribution": {