diff --git a/web/assets/map-styles/streets-v2-style.json b/web/assets/map-styles/streets-v2-style.json
new file mode 100644
index 00000000..60515e13
--- /dev/null
+++ b/web/assets/map-styles/streets-v2-style.json
@@ -0,0 +1,8121 @@
+{
+ "version": 8,
+ "id": "streets-v2",
+ "name": "Streets",
+ "sources": {
+ "maptiler_attribution": {
+ "attribution": "© MapTiler © OpenStreetMap contributors",
+ "type": "vector"
+ },
+ "maptiler_planet": {
+ "url": "https://api.maptiler.com/tiles/v3/tiles.json?key=MZEJTanw3WpxRvt7qDfo",
+ "type": "vector"
+ }
+ },
+ "layers": [
+ {
+ "id": "Background",
+ "type": "background",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "background-color": {
+ "stops": [
+ [
+ 6,
+ "hsl(47,79%,94%)"
+ ],
+ [
+ 14,
+ "hsl(42,49%,93%)"
+ ]
+ ]
+ }
+ }
+ },
+ {
+ "id": "Meadow",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "globallandcover",
+ "maxzoom": 8,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(75,51%,85%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 0,
+ 1
+ ],
+ [
+ 8,
+ 0.1
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "class",
+ "grass"
+ ]
+ },
+ {
+ "id": "Scrub",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "globallandcover",
+ "maxzoom": 8,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(97,51%,80%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 0,
+ 1
+ ],
+ [
+ 8,
+ 0.1
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "class",
+ "scrub"
+ ]
+ },
+ {
+ "id": "Crop",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "globallandcover",
+ "maxzoom": 8,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(50,67%,86%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 0,
+ 1
+ ],
+ [
+ 8,
+ 0.1
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "class",
+ "crop"
+ ]
+ },
+ {
+ "id": "Glacier",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landcover",
+ "maxzoom": 24,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(0,0%,100%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 0,
+ 1
+ ],
+ [
+ 10,
+ 0.7
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "class",
+ "ice"
+ ]
+ },
+ {
+ "id": "Forest",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "globallandcover",
+ "maxzoom": 8,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(119,38%,76%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 1,
+ 0.8
+ ],
+ [
+ 8,
+ 0
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "in",
+ "class",
+ "forest",
+ "tree"
+ ]
+ },
+ {
+ "id": "Sand",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landcover",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": false,
+ "fill-color": "hsl(52,93%,89%)",
+ "fill-opacity": 0.85
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "class",
+ "sand"
+ ]
+ },
+ {
+ "id": "Wood",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landcover",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "hsl(87,46%,85%)",
+ "fill-opacity": 1
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "class",
+ "wood"
+ ]
+ },
+ {
+ "id": "Residential",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landuse",
+ "maxzoom": 24,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": {
+ "base": 1,
+ "stops": [
+ [
+ 4,
+ "hsl(44,34%,87%)"
+ ],
+ [
+ 16,
+ "hsl(54, 45%, 91%)"
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "class",
+ "residential",
+ "suburbs",
+ "neighbourhood"
+ ]
+ },
+ {
+ "id": "Industrial",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landuse",
+ "maxzoom": 24,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 9,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "industrial"
+ ],
+ "hsl(40,67%,90%)",
+ "quarry",
+ "hsla(32, 47%, 87%, 0.2)",
+ "hsl(60, 31%, 87%)"
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "industrial"
+ ],
+ "hsl(49,54%,90%)",
+ "quarry",
+ "hsla(32, 47%, 87%, 0.5)",
+ "hsl(60, 31%, 87%)"
+ ]
+ ],
+ "fill-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 1,
+ 9,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "quarry",
+ 0,
+ 1
+ ],
+ 10,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "class",
+ "industrial",
+ "quarry"
+ ]
+ },
+ {
+ "id": "Grass",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landcover",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": false,
+ "fill-color": "hsl(103, 40%, 85%)",
+ "fill-opacity": 0.5
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "class",
+ "grass"
+ ]
+ },
+ {
+ "id": "Airport zone",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "aeroway",
+ "minzoom": 11,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "hsl(0,0%,93%)",
+ "fill-opacity": 1
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "$type",
+ "Polygon"
+ ]
+ },
+ {
+ "id": "Pedestrian",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "hsl(43,100%,99%)",
+ "fill-opacity": 0.7
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "!has",
+ "brunnel"
+ ],
+ [
+ "!in",
+ "class",
+ "bridge",
+ "pier"
+ ],
+ [
+ "in",
+ "subclass",
+ "pedestrian",
+ "platform"
+ ]
+ ]
+ },
+ {
+ "id": "Cemetery",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landuse",
+ "minzoom": 9,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(0,0%,88%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 9,
+ 0.25
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "class",
+ "cemetery"
+ ]
+ },
+ {
+ "id": "Hospital",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landuse",
+ "minzoom": 9,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(12,63%,94%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 9,
+ 0.25
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "class",
+ "hospital"
+ ]
+ },
+ {
+ "id": "Stadium",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landuse",
+ "minzoom": 9,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(94, 100%, 88%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 9,
+ 0.25
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "class",
+ "pitch",
+ "stadium",
+ "playground"
+ ]
+ },
+ {
+ "id": "School",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "landuse",
+ "minzoom": 9,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(194,52%,94%)",
+ "fill-opacity": {
+ "stops": [
+ [
+ 9,
+ 0.25
+ ],
+ [
+ 16,
+ 1
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "class",
+ "college",
+ "school",
+ "university"
+ ]
+ },
+ {
+ "id": "River tunnel",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "waterway",
+ "minzoom": 14,
+ "layout": {
+ "line-cap": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(210,73%,78%)",
+ "line-dasharray": [
+ 2,
+ 4
+ ],
+ "line-opacity": 0.5,
+ "line-width": {
+ "base": 1.3,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 20,
+ 6
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "brunnel",
+ "tunnel"
+ ]
+ },
+ {
+ "id": "River",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "waterway",
+ "layout": {
+ "line-cap": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(210,73%,78%)",
+ "line-width": {
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 20,
+ 6
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ]
+ },
+ {
+ "id": "Water intermittent",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "water",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(205,91%,83%)",
+ "fill-opacity": 0.85
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "intermittent",
+ 1
+ ]
+ },
+ {
+ "id": "Water",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "water",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(204,92%,75%)",
+ "fill-opacity": [
+ "match",
+ [
+ "get",
+ "intermittent"
+ ],
+ 1,
+ 0.85,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "!=",
+ "intermittent",
+ 1
+ ]
+ },
+ {
+ "id": "Aeroway",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "aeroway",
+ "minzoom": 11,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,100%)",
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 11,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "runway"
+ ],
+ 3,
+ 0.5
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "runway"
+ ],
+ 16,
+ 6
+ ]
+ ]
+ },
+ "metadata": {}
+ },
+ {
+ "id": "Heliport",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "aeroway",
+ "minzoom": 11,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "hsl(0,0%,100%)",
+ "fill-opacity": 1
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "class",
+ "helipad",
+ "heliport"
+ ]
+ },
+ {
+ "id": "Ferry line",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 6,
+ "layout": {
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 10,
+ "hsl(205,61%,63%)"
+ ],
+ [
+ 16,
+ "hsl(205,67%,47%)"
+ ]
+ ]
+ },
+ "line-dasharray": [
+ 2,
+ 2
+ ],
+ "line-opacity": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ 0.5,
+ 7,
+ 0.8,
+ 8,
+ 1
+ ],
+ "line-width": {
+ "stops": [
+ [
+ 10,
+ 0.5
+ ],
+ [
+ 14,
+ 1.1
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "class",
+ "ferry"
+ ]
+ },
+ {
+ "id": "Tunnel outline",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "motorway",
+ "hsl(28,72%,69%)",
+ [
+ "trunk",
+ "primary"
+ ],
+ "hsl(28,72%,69%)",
+ "hsl(36,5%,80%)"
+ ],
+ "line-dasharray": [
+ 0.5,
+ 0.25
+ ],
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ 0,
+ 7,
+ 0.5,
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 0,
+ 2.5
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 2,
+ 0
+ ],
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 2,
+ 6
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 3,
+ [
+ "secondary",
+ "tertiary"
+ ],
+ 2,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 1,
+ 0.5
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 5,
+ 8
+ ],
+ [
+ "trunk"
+ ],
+ 4,
+ [
+ "primary"
+ ],
+ 6,
+ [
+ "secondary"
+ ],
+ 6,
+ [
+ "tertiary"
+ ],
+ 4,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 3,
+ 3
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway",
+ "trunk",
+ "primary"
+ ],
+ 10,
+ [
+ "secondary"
+ ],
+ 8,
+ [
+ "tertiary"
+ ],
+ 8,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 4,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway",
+ "trunk",
+ "primary"
+ ],
+ 26,
+ [
+ "secondary"
+ ],
+ 26,
+ [
+ "tertiary"
+ ],
+ 26,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 18,
+ 18
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "class",
+ "bridge",
+ "ferry",
+ "rail",
+ "transit",
+ "pier",
+ "path",
+ "aerialway",
+ "motorway_construction",
+ "trunk_construction",
+ "primary_construction",
+ "secondary_construction",
+ "tertiary_construction",
+ "minor_construction",
+ "service_construction",
+ "track_construction"
+ ]
+ ]
+ },
+ {
+ "id": "Tunnel",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "motorway",
+ "hsl(35,100%,76%)",
+ [
+ "trunk",
+ "primary"
+ ],
+ "hsl(48,100%,88%)",
+ "hsl(0,0%,96%)"
+ ],
+ "line-opacity": 1,
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 5,
+ 0,
+ 6,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "brunnel"
+ ],
+ [
+ "bridge"
+ ],
+ 0,
+ 1
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 0,
+ 0
+ ],
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 0,
+ 2.5
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 1.5,
+ 1
+ ],
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 1,
+ 4
+ ],
+ [
+ "trunk"
+ ],
+ 2.5,
+ [
+ "primary"
+ ],
+ 2.5,
+ [
+ "secondary",
+ "tertiary"
+ ],
+ 1.5,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 1,
+ 1
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 5,
+ 6
+ ],
+ [
+ "trunk"
+ ],
+ 3,
+ [
+ "primary"
+ ],
+ 5,
+ [
+ "secondary"
+ ],
+ 4,
+ [
+ "tertiary"
+ ],
+ 3,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 2,
+ 2
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway",
+ "trunk",
+ "primary"
+ ],
+ 8,
+ [
+ "secondary"
+ ],
+ 7,
+ [
+ "tertiary"
+ ],
+ 6,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 4,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway",
+ "trunk",
+ "primary"
+ ],
+ 24,
+ [
+ "secondary"
+ ],
+ 24,
+ [
+ "tertiary"
+ ],
+ 24,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 16,
+ 16
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "class",
+ "ferry",
+ "rail",
+ "transit",
+ "pier",
+ "bridge",
+ "path",
+ "aerialway",
+ "motorway_construction",
+ "trunk_construction",
+ "primary_construction",
+ "secondary_construction",
+ "tertiary_construction",
+ "minor_construction",
+ "service_construction",
+ "track_construction"
+ ]
+ ]
+ },
+ {
+ "id": "Railway tunnel",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,73%)",
+ "line-opacity": 0.5,
+ "line-width": {
+ "base": 1.4,
+ "stops": [
+ [
+ 14,
+ 0.4
+ ],
+ [
+ 15,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "rail"
+ ]
+ ]
+ },
+ {
+ "id": "Railway tunnel hatching",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,73%)",
+ "line-dasharray": [
+ 0.2,
+ 8
+ ],
+ "line-opacity": 0.5,
+ "line-width": {
+ "base": 1.4,
+ "stops": [
+ [
+ 14.5,
+ 0
+ ],
+ [
+ 15,
+ 3
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "rail"
+ ]
+ ]
+ },
+ {
+ "id": "Footway tunnel outline",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 12,
+ "layout": {
+ "line-cap": "round",
+ "line-join": "miter",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,100%)",
+ "line-opacity": 1,
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 16,
+ 0
+ ],
+ [
+ 18,
+ 4
+ ],
+ [
+ 22,
+ 8
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "brunnel",
+ "tunnel"
+ ]
+ ]
+ },
+ {
+ "id": "Footway tunnel",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 12,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,63%)",
+ "line-dasharray": {
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0.5
+ ]
+ ],
+ [
+ 18,
+ [
+ 1,
+ 0.25
+ ]
+ ]
+ ]
+ },
+ "line-opacity": 0.4,
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 16,
+ 1
+ ],
+ [
+ 18,
+ 2
+ ],
+ [
+ 22,
+ 5
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ],
+ [
+ "==",
+ "brunnel",
+ "tunnel"
+ ]
+ ]
+ },
+ {
+ "id": "Pier",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(42,49%,93%)"
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "==",
+ "class",
+ "pier"
+ ]
+ ]
+ },
+ {
+ "id": "Pier road",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(42,49%,93%)",
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 15,
+ 1
+ ],
+ [
+ 17,
+ 4
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "class",
+ "pier"
+ ]
+ ]
+ },
+ {
+ "id": "Bridge",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-antialias": true,
+ "fill-color": "hsl(42,49%,93%)",
+ "fill-opacity": 0.6
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Polygon"
+ ],
+ [
+ "==",
+ "brunnel",
+ "bridge"
+ ]
+ ]
+ },
+ {
+ "id": "Minor road outline",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(36,5%,80%)",
+ "line-opacity": 1,
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ 0,
+ 7,
+ 0.5,
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "secondary",
+ "tertiary"
+ ],
+ 2,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 1,
+ 0.5
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "secondary"
+ ],
+ 6,
+ [
+ "tertiary"
+ ],
+ 4,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 3,
+ 3
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "secondary"
+ ],
+ 8,
+ [
+ "tertiary"
+ ],
+ 8,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 4,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "secondary"
+ ],
+ 26,
+ [
+ "tertiary"
+ ],
+ 26,
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 18,
+ 18
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "class",
+ "aerialway",
+ "bridge",
+ "ferry",
+ "minor_construction",
+ "motorway",
+ "motorway_construction",
+ "path",
+ "path_construction",
+ "pier",
+ "primary",
+ "primary_construction",
+ "rail",
+ "secondary_construction",
+ "service_construction",
+ "tertiary_construction",
+ "track_construction",
+ "transit",
+ "trunk_construction"
+ ]
+ ]
+ },
+ {
+ "id": "Major road outline",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,20%)",
+ "line-opacity": 1,
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ 0,
+ 7,
+ 0.5,
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 2.4,
+ 0
+ ],
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 3,
+ 0.5
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk"
+ ],
+ 4,
+ [
+ "primary"
+ ],
+ 6,
+ 3
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 10,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 26,
+ 18
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "trunk"
+ ]
+ ]
+ },
+ {
+ "id": "Highway outline",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(28,72%,69%)",
+ "line-opacity": 1,
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ 0,
+ 7,
+ 0.5,
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 0,
+ 2.5
+ ],
+ 0
+ ],
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 2,
+ 6
+ ],
+ 0.5
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 5,
+ 8
+ ],
+ 3
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ 10,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ 26,
+ 18
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ },
+ {
+ "id": "Road under construction",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "square",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "motorway_construction",
+ "hsl(35,100%,76%)",
+ [
+ "trunk_construction",
+ "primary_construction"
+ ],
+ "hsl(48,100%,83%)",
+ "hsl(0,0%,100%)"
+ ],
+ "line-dasharray": [
+ 2,
+ 2
+ ],
+ "line-opacity": [
+ "case",
+ [
+ "==",
+ [
+ "get",
+ "brunnel"
+ ],
+ "tunnel"
+ ],
+ 0.7,
+ 1
+ ],
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 5,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway_construction"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "brunnel"
+ ],
+ [
+ "bridge"
+ ],
+ 0,
+ 0.5
+ ],
+ [
+ "trunk_construction",
+ "primary_construction"
+ ],
+ 0,
+ 0
+ ],
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway_construction"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 0,
+ 2.5
+ ],
+ [
+ "trunk_construction",
+ "primary_construction"
+ ],
+ 1.5,
+ 1
+ ],
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway_construction"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 1,
+ 4
+ ],
+ [
+ "trunk_construction"
+ ],
+ 2.5,
+ [
+ "primary_construction"
+ ],
+ 2.5,
+ [
+ "secondary_construction",
+ "tertiary_construction"
+ ],
+ 1.5,
+ [
+ "minor_construction",
+ "service_construction",
+ "track_construction"
+ ],
+ 1,
+ 1
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway_construction"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 5,
+ 6
+ ],
+ [
+ "trunk_construction"
+ ],
+ 3,
+ [
+ "primary_construction"
+ ],
+ 5,
+ [
+ "secondary_construction"
+ ],
+ 4,
+ [
+ "tertiary_construction"
+ ],
+ 3,
+ [
+ "minor_construction",
+ "service_construction",
+ "track_construction"
+ ],
+ 2,
+ 2
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway_construction",
+ "trunk_construction",
+ "primary_construction"
+ ],
+ 8,
+ [
+ "secondary_construction"
+ ],
+ 7,
+ [
+ "tertiary_construction"
+ ],
+ 6,
+ [
+ "minor_construction",
+ "service_construction",
+ "track_construction"
+ ],
+ 4,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway_construction",
+ "trunk_construction",
+ "primary_construction"
+ ],
+ 24,
+ [
+ "secondary_construction"
+ ],
+ 24,
+ [
+ "tertiary_construction"
+ ],
+ 24,
+ [
+ "minor_construction",
+ "service_construction",
+ "track_construction"
+ ],
+ 16,
+ 16
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "class",
+ "motorway_construction",
+ "trunk_construction",
+ "primary_construction",
+ "secondary_construction",
+ "tertiary_construction",
+ "minor_construction",
+ "service_construction",
+ "track_construction"
+ ]
+ },
+ {
+ "id": "Minor road",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,100%)",
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 5,
+ 0.5,
+ 10,
+ 1,
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 1,
+ 1
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 2,
+ 2
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 4,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "minor",
+ "service",
+ "track"
+ ],
+ 16,
+ 16
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "!in",
+ "class",
+ "aerialway",
+ "bridge",
+ "ferry",
+ "minor_construction",
+ "motorway",
+ "motorway_construction",
+ "path",
+ "path_construction",
+ "pier",
+ "primary",
+ "primary_construction",
+ "primary_link",
+ "trunk",
+ "trunk_link",
+ "secondary",
+ "secondary_link",
+ "tertiary",
+ "tertiary_link",
+ "rail",
+ "secondary_construction",
+ "service_construction",
+ "tertiary_construction",
+ "track_construction",
+ "transit",
+ "trunk_construction"
+ ]
+ ]
+ },
+ {
+ "id": "Major road",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0, 0%, 50%)",
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 1.5,
+ 1
+ ],
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 2.5,
+ 1
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk"
+ ],
+ 3,
+ [
+ "primary"
+ ],
+ 5,
+ 2
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 8,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "trunk",
+ "primary"
+ ],
+ 24,
+ 16
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "in",
+ "class",
+ "primary",
+ "primary_link",
+ "trunk",
+ "trunk_link",
+ "secondary",
+ "secondary_link",
+ "tertiary",
+ "tertiary_link"
+ ]
+ ]
+ },
+ {
+ "id": "Highway",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 4,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0, 0%, 50%)",
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 2
+ ],
+ [
+ "zoom"
+ ],
+ 5,
+ 0.5,
+ 6,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "brunnel"
+ ],
+ [
+ "bridge"
+ ],
+ 0,
+ 1
+ ],
+ 0
+ ],
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 0,
+ 2.5
+ ],
+ 1
+ ],
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 1,
+ 4
+ ],
+ 1
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ [
+ "match",
+ [
+ "get",
+ "ramp"
+ ],
+ 1,
+ 5,
+ 6
+ ],
+ 2
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ 8,
+ 4
+ ],
+ 20,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "motorway"
+ ],
+ 24,
+ 16
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "motorway"
+ ]
+ ]
+ },
+ {
+ "id": "Path outline",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 12,
+ "layout": {
+ "line-cap": "round",
+ "line-join": "miter",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,100%)",
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 14,
+ 0
+ ],
+ [
+ 16,
+ 0
+ ],
+ [
+ 18,
+ 4
+ ],
+ [
+ 22,
+ 8
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ],
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ]
+ ]
+ },
+ {
+ "id": "Path minor",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 12,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0, 0%, 79%)",
+ "line-dasharray": {
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0.5
+ ]
+ ],
+ [
+ 18,
+ [
+ 1,
+ 0.25
+ ]
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 16,
+ 1
+ ],
+ [
+ 18,
+ 2
+ ],
+ [
+ 22,
+ 5
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "class",
+ "path_pedestrian"
+ ],
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ]
+ ]
+ },
+ {
+ "id": "Path",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 12,
+ "layout": {
+ "line-cap": "butt",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0, 0%, 79%)",
+ "line-dasharray": {
+ "stops": [
+ [
+ 14,
+ [
+ 1,
+ 0.5
+ ]
+ ],
+ [
+ 18,
+ [
+ 1,
+ 0.25
+ ]
+ ]
+ ]
+ },
+ "line-width": {
+ "base": 1.2,
+ "stops": [
+ [
+ 14,
+ 0.5
+ ],
+ [
+ 16,
+ 1
+ ],
+ [
+ 18,
+ 2
+ ],
+ [
+ 22,
+ 5
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "class",
+ "path",
+ "pedestrian"
+ ],
+ [
+ "!=",
+ "brunnel",
+ "tunnel"
+ ]
+ ]
+ },
+ {
+ "id": "Major rail",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": {
+ "stops": [
+ [
+ 8,
+ "hsl(0,0%,72%)"
+ ],
+ [
+ 16,
+ "hsl(0,0%,70%)"
+ ]
+ ]
+ },
+ "line-opacity": [
+ "match",
+ [
+ "get",
+ "service"
+ ],
+ "yard",
+ 0.5,
+ 1
+ ],
+ "line-width": {
+ "base": 1.4,
+ "stops": [
+ [
+ 14,
+ 0.4
+ ],
+ [
+ 15,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!in",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "rail"
+ ]
+ ]
+ },
+ {
+ "id": "Major rail hatching",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,72%)",
+ "line-dasharray": [
+ 0.2,
+ 9
+ ],
+ "line-opacity": [
+ "match",
+ [
+ "get",
+ "service"
+ ],
+ "yard",
+ 0.5,
+ 1
+ ],
+ "line-width": {
+ "base": 1.4,
+ "stops": [
+ [
+ 14.5,
+ 0
+ ],
+ [
+ 15,
+ 3
+ ],
+ [
+ 20,
+ 8
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!in",
+ "brunnel",
+ "tunnel"
+ ],
+ [
+ "==",
+ "class",
+ "rail"
+ ]
+ ]
+ },
+ {
+ "id": "Minor rail",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,73%)",
+ "line-width": {
+ "base": 1.4,
+ "stops": [
+ [
+ 14,
+ 0.4
+ ],
+ [
+ 15,
+ 0.75
+ ],
+ [
+ 20,
+ 2
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "subclass",
+ "light_rail",
+ "tram"
+ ]
+ },
+ {
+ "id": "Minor rail hatching",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,73%)",
+ "line-dasharray": [
+ 0.2,
+ 4
+ ],
+ "line-width": {
+ "base": 1.4,
+ "stops": [
+ [
+ 14.5,
+ 0
+ ],
+ [
+ 15,
+ 2
+ ],
+ [
+ 20,
+ 6
+ ]
+ ]
+ }
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "subclass",
+ "tram",
+ "light_rail"
+ ]
+ },
+ {
+ "id": "Building",
+ "type": "fill",
+ "source": "maptiler_planet",
+ "source-layer": "building",
+ "minzoom": 13,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "fill-color": "hsla(30, 6%, 50%)",
+ "fill-opacity": 0.4,
+ "fill-outline-color": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ "hsla(35, 6%, 50%, 0.2)"
+ ],
+ [
+ 14,
+ "hsla(35, 6%, 50%, 1.0)"
+ ]
+ ]
+ }
+ },
+ "metadata": {}
+ },
+ {
+ "id": "Aqueduct outline",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "waterway",
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,51%)",
+ "line-width": {
+ "base": 1.3,
+ "stops": [
+ [
+ 14,
+ 1
+ ],
+ [
+ 20,
+ 6
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "brunnel",
+ "bridge"
+ ]
+ },
+ {
+ "id": "Aqueduct",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "waterway",
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(204,92%,75%)",
+ "line-width": {
+ "base": 1.3,
+ "stops": [
+ [
+ 12,
+ 0.5
+ ],
+ [
+ 20,
+ 5
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "brunnel",
+ "bridge"
+ ]
+ ]
+ },
+ {
+ "id": "Cablecar",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 13,
+ "layout": {
+ "line-cap": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-blur": 1,
+ "line-color": "hsl(0,0%,100%)",
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 2
+ ],
+ [
+ 19,
+ 4
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "class",
+ "aerialway"
+ ]
+ },
+ {
+ "id": "Cablecar dash",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 13,
+ "layout": {
+ "line-cap": "round",
+ "line-join": "bevel",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0,0%,64%)",
+ "line-dasharray": [
+ 2,
+ 2
+ ],
+ "line-width": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 1
+ ],
+ [
+ 19,
+ 2
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "class",
+ "aerialway"
+ ]
+ },
+ {
+ "id": "Other border",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "boundary",
+ "minzoom": 3,
+ "layout": {
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0, 0%, 70%)",
+ "line-dasharray": [
+ 2,
+ 1
+ ],
+ "line-width": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 3,
+ 0.75,
+ 4,
+ 0.8,
+ 11,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "admin_level"
+ ],
+ 6
+ ],
+ 1.75,
+ 1.5
+ ],
+ 18,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "admin_level"
+ ],
+ 6
+ ],
+ 3,
+ 2
+ ]
+ ]
+ },
+ "filter": [
+ "all",
+ [
+ "in",
+ "admin_level",
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ]
+ },
+ {
+ "id": "Disputed border",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "boundary",
+ "minzoom": 0,
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0, 0%, 63%)",
+ "line-dasharray": [
+ 2,
+ 2
+ ],
+ "line-width": {
+ "stops": [
+ [
+ 1,
+ 0.5
+ ],
+ [
+ 5,
+ 1.5
+ ],
+ [
+ 10,
+ 2
+ ],
+ [
+ 24,
+ 12
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "disputed",
+ 1
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ]
+ },
+ {
+ "id": "Country border",
+ "type": "line",
+ "source": "maptiler_planet",
+ "source-layer": "boundary",
+ "minzoom": 0,
+ "layout": {
+ "line-cap": "round",
+ "line-join": "round",
+ "visibility": "visible"
+ },
+ "paint": {
+ "line-color": "hsl(0, 0%, 54%)",
+ "line-width": {
+ "stops": [
+ [
+ 1,
+ 0.5
+ ],
+ [
+ 5,
+ 1.5
+ ],
+ [
+ 10,
+ 2
+ ],
+ [
+ 24,
+ 12
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "all",
+ [
+ "==",
+ "admin_level",
+ 2
+ ],
+ [
+ "==",
+ "disputed",
+ 0
+ ],
+ [
+ "==",
+ "maritime",
+ 0
+ ]
+ ]
+ },
+ {
+ "id": "River labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "waterway",
+ "minzoom": 13,
+ "layout": {
+ "symbol-placement": "line",
+ "symbol-spacing": 400,
+ "text-field": [
+ "coalesce",
+ [
+ "get",
+ "name:en"
+ ],
+ [
+ "get",
+ "name"
+ ]
+ ],
+ "text-font": [
+ "Roboto Italic",
+ "Noto Sans Italic"
+ ],
+ "text-letter-spacing": 0.2,
+ "text-max-width": 5,
+ "text-rotation-alignment": "map",
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 8
+ ],
+ [
+ 16,
+ 14
+ ],
+ [
+ 22,
+ 20
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(205,84%,39%)",
+ "text-halo-blur": 1,
+ "text-halo-color": "hsl(202, 76%, 82%)",
+ "text-halo-width": {
+ "stops": [
+ [
+ 10,
+ 1
+ ],
+ [
+ 18,
+ 2
+ ]
+ ]
+ }
+ },
+ "filter": [
+ "==",
+ "$type",
+ "LineString"
+ ]
+ },
+ {
+ "id": "Ocean labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "water_name",
+ "minzoom": 0,
+ "layout": {
+ "symbol-placement": "point",
+ "text-field": "{name:en}",
+ "text-font": [
+ "Roboto Italic",
+ "Noto Sans Italic"
+ ],
+ "text-max-width": 5,
+ "text-size": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 1,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "ocean"
+ ],
+ 14,
+ 10
+ ],
+ 3,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "ocean"
+ ],
+ 18,
+ 14
+ ],
+ 9,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "ocean"
+ ],
+ 22,
+ 18
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "lake"
+ ],
+ 14,
+ [
+ "sea"
+ ],
+ 20,
+ 26
+ ]
+ ],
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": {
+ "stops": [
+ [
+ 1,
+ "hsl(203,54%,54%)"
+ ],
+ [
+ 4,
+ "hsl(203,72%,39%)"
+ ]
+ ]
+ },
+ "text-halo-blur": 1,
+ "text-halo-color": {
+ "stops": [
+ [
+ 1,
+ "hsla(196, 72%, 80%, 0.05)"
+ ],
+ [
+ 3,
+ "hsla(200, 100%, 88%, 0.75)"
+ ]
+ ]
+ },
+ "text-halo-width": 1,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 1,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "ocean"
+ ],
+ 1,
+ 0
+ ],
+ 3,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "has",
+ "name"
+ ],
+ [
+ "!=",
+ "class",
+ "lake"
+ ]
+ ]
+ },
+ {
+ "id": "Lake labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "water_name",
+ "minzoom": 0,
+ "layout": {
+ "symbol-placement": "line",
+ "text-field": [
+ "coalesce",
+ [
+ "get",
+ "name:en"
+ ],
+ [
+ "get",
+ "name"
+ ]
+ ],
+ "text-font": [
+ "Roboto Italic",
+ "Noto Sans Italic"
+ ],
+ "text-letter-spacing": 0.1,
+ "text-max-width": 5,
+ "text-size": {
+ "stops": [
+ [
+ 10,
+ 13
+ ],
+ [
+ 14,
+ 16
+ ],
+ [
+ 22,
+ 20
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(205,84%,39%)",
+ "text-halo-color": "hsla(0, 100%, 100%, 0.45)",
+ "text-halo-width": 1.5
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "class",
+ "lake"
+ ]
+ ]
+ },
+ {
+ "id": "Housenumber",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "housenumber",
+ "minzoom": 18,
+ "layout": {
+ "text-field": "{housenumber}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-size": 10,
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(26,10%,44%)",
+ "text-halo-blur": 1,
+ "text-halo-color": "hsl(21,64%,96%)",
+ "text-halo-width": 1
+ }
+ },
+ {
+ "id": "Gondola",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 13,
+ "layout": {
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-field": [
+ "coalesce",
+ [
+ "get",
+ "name:en"
+ ],
+ [
+ "get",
+ "name"
+ ]
+ ],
+ "text-font": [
+ "Roboto Italic",
+ "Noto Sans Italic"
+ ],
+ "text-offset": [
+ 0.8,
+ 0.8
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 11
+ ],
+ [
+ 15,
+ 12
+ ],
+ [
+ 18,
+ 13
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(0,0%,40%)",
+ "text-halo-blur": 1,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1
+ },
+ "metadata": {},
+ "filter": [
+ "in",
+ "subclass",
+ "gondola",
+ "cable_car"
+ ]
+ },
+ {
+ "id": "Ferry",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 12,
+ "layout": {
+ "symbol-placement": "line",
+ "text-anchor": "center",
+ "text-field": [
+ "coalesce",
+ [
+ "get",
+ "name:en"
+ ],
+ [
+ "get",
+ "name"
+ ]
+ ],
+ "text-font": [
+ "Roboto Italic",
+ "Noto Sans Italic"
+ ],
+ "text-offset": [
+ 0.8,
+ 0.8
+ ],
+ "text-size": {
+ "base": 1,
+ "stops": [
+ [
+ 13,
+ 11
+ ],
+ [
+ 15,
+ 12
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(205,84%,39%)",
+ "text-halo-blur": 0.5,
+ "text-halo-color": "hsla(0, 0%, 100%, 0.15)",
+ "text-halo-width": 1
+ },
+ "filter": [
+ "==",
+ "class",
+ "ferry"
+ ]
+ },
+ {
+ "id": "Oneway",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation",
+ "minzoom": 16,
+ "layout": {
+ "icon-image": "oneway",
+ "icon-padding": 2,
+ "icon-rotate": [
+ "match",
+ [
+ "get",
+ "oneway"
+ ],
+ 1,
+ 0,
+ 0
+ ],
+ "icon-rotation-alignment": "map",
+ "icon-size": {
+ "stops": [
+ [
+ 16,
+ 0.7
+ ],
+ [
+ 19,
+ 1
+ ]
+ ]
+ },
+ "symbol-placement": "line",
+ "symbol-spacing": 75,
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(0, 0%, 65%)",
+ "icon-opacity": 0.5
+ },
+ "filter": [
+ "all",
+ [
+ "has",
+ "oneway"
+ ],
+ [
+ "in",
+ "class",
+ "motorway",
+ "trunk",
+ "primary",
+ "secondary",
+ "tertiary",
+ "minor",
+ "service"
+ ]
+ ]
+ },
+ {
+ "id": "Road labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 8,
+ "layout": {
+ "icon-allow-overlap": false,
+ "icon-ignore-placement": false,
+ "icon-keep-upright": false,
+ "symbol-placement": "line",
+ "symbol-spacing": [
+ "step",
+ [
+ "zoom"
+ ],
+ 250,
+ 22,
+ 500
+ ],
+ "text-allow-overlap": false,
+ "text-anchor": "center",
+ "text-field": [
+ "coalesce",
+ [
+ "get",
+ "name:en"
+ ],
+ [
+ "get",
+ "name"
+ ]
+ ],
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-ignore-placement": false,
+ "text-justify": "center",
+ "text-max-width": 10,
+ "text-offset": [
+ 0,
+ 0.15
+ ],
+ "text-optional": false,
+ "text-size": {
+ "stops": [
+ [
+ 13,
+ 10
+ ],
+ [
+ 14,
+ 11
+ ],
+ [
+ 18,
+ 13
+ ],
+ [
+ 22,
+ 15
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(0, 0%, 16%)",
+ "text-color": "hsl(0, 0%, 16%)",
+ "text-halo-blur": 0.5,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "!in",
+ "subclass",
+ "gondola",
+ "cable_car"
+ ],
+ [
+ "!in",
+ "class",
+ "ferry",
+ "service"
+ ]
+ ]
+ },
+ {
+ "id": "Highway junction",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 16,
+ "layout": {
+ "icon-image": "exit_{ref_length}",
+ "icon-rotation-alignment": "viewport",
+ "icon-size": 1,
+ "symbol-avoid-edges": true,
+ "symbol-placement": "point",
+ "symbol-spacing": 200,
+ "symbol-z-order": "auto",
+ "text-field": "{ref}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-offset": [
+ 0,
+ 0.1
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-size": 9,
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(0,0%,21%)",
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1
+ },
+ "filter": [
+ "all",
+ [
+ ">",
+ "ref_length",
+ 0
+ ],
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "==",
+ "subclass",
+ "junction"
+ ]
+ ]
+ },
+ {
+ "id": "Highway shield",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 8,
+ "layout": {
+ "icon-image": "road_{ref_length}",
+ "icon-rotation-alignment": "viewport",
+ "icon-size": 1,
+ "symbol-avoid-edges": true,
+ "symbol-placement": "line",
+ "symbol-spacing": {
+ "stops": [
+ [
+ 10,
+ 200
+ ],
+ [
+ 18,
+ 400
+ ]
+ ]
+ },
+ "text-field": "{ref}",
+ "text-font": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "motorway",
+ [
+ "literal",
+ [
+ "Roboto Bold",
+ "Noto Sans Bold"
+ ]
+ ],
+ [
+ "literal",
+ [
+ "Roboto Regular"
+ ]
+ ]
+ ],
+ "text-offset": [
+ 0,
+ 0.05
+ ],
+ "text-padding": 2,
+ "text-rotation-alignment": "viewport",
+ "text-size": 10,
+ "text-transform": "uppercase",
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "hsl(0, 0%, 29%)",
+ "icon-halo-width": 1,
+ "text-color": "hsl(0, 0%, 29%)",
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 1
+ },
+ "filter": [
+ "all",
+ [
+ "<=",
+ "ref_length",
+ 6
+ ],
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "!in",
+ "network",
+ "us-interstate",
+ "us-highway",
+ "us-state"
+ ],
+ [
+ "!in",
+ "class",
+ "path"
+ ]
+ ]
+ },
+ {
+ "id": "Highway shield (US)",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 7,
+ "layout": {
+ "icon-image": "{network}_{ref_length}",
+ "icon-rotation-alignment": "viewport",
+ "icon-size": 1.1,
+ "symbol-avoid-edges": true,
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "point"
+ ],
+ [
+ 7,
+ "line"
+ ],
+ [
+ 8,
+ "line"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "text-field": "{ref}",
+ "text-font": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "motorway",
+ [
+ "literal",
+ [
+ "Roboto Bold",
+ "Noto Sans Bold"
+ ]
+ ],
+ [
+ "literal",
+ [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ]
+ ]
+ ],
+ "text-offset": [
+ 0,
+ 0.05
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-size": 9,
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "hsl(0, 0%, 29%)",
+ "icon-halo-width": 1,
+ "text-color": "hsl(0, 0%, 29%)",
+ "text-halo-color": "rgba(255, 255, 255, 1)",
+ "text-halo-width": 0
+ },
+ "filter": [
+ "all",
+ [
+ "<=",
+ "ref_length",
+ 6
+ ],
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "in",
+ "network",
+ "us-highway",
+ "us-state"
+ ],
+ [
+ "!in",
+ "class",
+ "path"
+ ]
+ ]
+ },
+ {
+ "id": "Highway shield interstate top (US)",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 7,
+ "layout": {
+ "icon-image": "{network}_{ref_length}",
+ "icon-rotation-alignment": "viewport",
+ "icon-size": 1,
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "point"
+ ],
+ [
+ 7,
+ "line"
+ ],
+ [
+ 8,
+ "line"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "text-field": "{ref}",
+ "text-font": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "motorway",
+ [
+ "literal",
+ [
+ "Roboto Bold",
+ "Noto Sans Bold"
+ ]
+ ],
+ [
+ "literal",
+ [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ]
+ ]
+ ],
+ "text-offset": [
+ 0,
+ 0.1
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-size": 9,
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(21, 100%, 45%)",
+ "icon-halo-color": "rgba(255, 255, 255, 1)",
+ "icon-halo-width": 1,
+ "icon-translate": [
+ 0,
+ -4
+ ],
+ "icon-translate-anchor": "viewport",
+ "text-color": "hsl(21, 100%, 45%)",
+ "text-halo-color": "rgba(255, 255, 255, 1)",
+ "text-halo-width": 0
+ },
+ "filter": [
+ "all",
+ [
+ "<=",
+ "ref_length",
+ 6
+ ],
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "network",
+ "us-interstate"
+ ],
+ [
+ "!in",
+ "class",
+ "path"
+ ]
+ ]
+ },
+ {
+ "id": "Highway shield interstate (US)",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "transportation_name",
+ "minzoom": 7,
+ "layout": {
+ "icon-image": "{network}_{ref_length}",
+ "icon-rotation-alignment": "viewport",
+ "icon-size": 1,
+ "symbol-placement": {
+ "base": 1,
+ "stops": [
+ [
+ 7,
+ "point"
+ ],
+ [
+ 7,
+ "line"
+ ],
+ [
+ 8,
+ "line"
+ ]
+ ]
+ },
+ "symbol-spacing": 200,
+ "text-field": "{ref}",
+ "text-font": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "motorway",
+ [
+ "literal",
+ [
+ "Roboto Bold",
+ "Noto Sans Bold"
+ ]
+ ],
+ [
+ "literal",
+ [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ]
+ ]
+ ],
+ "text-offset": [
+ 0,
+ 0.1
+ ],
+ "text-rotation-alignment": "viewport",
+ "text-size": 9,
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(212, 79%, 42%)",
+ "icon-halo-color": "rgba(255, 255, 255, 1)",
+ "icon-halo-width": 1,
+ "text-color": "hsl(0, 0%, 100%)",
+ "text-halo-color": "rgba(255, 255, 255, 1)",
+ "text-halo-width": 0,
+ "text-translate": [
+ 0,
+ -0.5
+ ]
+ },
+ "filter": [
+ "all",
+ [
+ "<=",
+ "ref_length",
+ 6
+ ],
+ [
+ "==",
+ "$type",
+ "LineString"
+ ],
+ [
+ "==",
+ "network",
+ "us-interstate"
+ ],
+ [
+ "!in",
+ "class",
+ "path"
+ ]
+ ]
+ },
+ {
+ "id": "Public",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 16,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "atm",
+ "bank",
+ "bbq",
+ "cemetery",
+ "courthouse",
+ "drinking_water",
+ "fire_station",
+ "fountain",
+ "hairdresser",
+ "office",
+ "post",
+ "prison",
+ "recycling",
+ "shower",
+ "telephone",
+ "toilets",
+ "townhall",
+ "town_hall"
+ ],
+ [
+ "get",
+ "class"
+ ],
+ [
+ "case",
+ [
+ "has",
+ "class"
+ ],
+ "",
+ "dot"
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(51, 10%, 40%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "atm",
+ "bank",
+ "cemetery",
+ "courthouse",
+ "townhall",
+ "town_hall"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "atm",
+ "bank",
+ "cemetery",
+ "courthouse",
+ "fire_station",
+ "townhall",
+ "town_hall",
+ "post"
+ ],
+ 1,
+ 0
+ ],
+ 18,
+ 1
+ ],
+ "text-color": "hsl(51, 10%, 40%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "atm",
+ "bank",
+ "cemetery",
+ "courthouse",
+ "townhall",
+ "town_hall"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "atm",
+ "bank",
+ "cemetery",
+ "courthouse",
+ "fire_station",
+ "townhall",
+ "town_hall",
+ "post"
+ ],
+ 1,
+ 0
+ ],
+ 18,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "atm",
+ "bank",
+ "bbq",
+ "cemetery",
+ "courthouse",
+ "drinking_water",
+ "fire_station",
+ "fountain",
+ "hairdresser",
+ "office",
+ "post",
+ "prison",
+ "recycling",
+ "shower",
+ "telephone",
+ "toilets",
+ "townhall",
+ "town_hall"
+ ]
+ ]
+ },
+ {
+ "id": "Sport",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 16,
+ "layout": {
+ "icon-image": [
+ "coalesce",
+ [
+ "image",
+ [
+ "get",
+ "subclass"
+ ]
+ ],
+ [
+ "image",
+ [
+ "get",
+ "class"
+ ]
+ ],
+ [
+ "image",
+ "dot"
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(129, 65%, 30%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "playground",
+ "pitch",
+ "stadium",
+ "sports_hall",
+ "swimming_pool"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(129, 65%, 30%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "playground",
+ "pitch",
+ "stadium",
+ "sports_hall",
+ "swimming_pool"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "american_football",
+ "athletics",
+ "archery",
+ "baseball",
+ "basketball",
+ "climbing",
+ "equestrian",
+ "fitness",
+ "fitness_centre",
+ "golf",
+ "motor",
+ "multi",
+ "playground",
+ "pitch",
+ "running",
+ "sauna",
+ "soccer",
+ "sport",
+ "stadium",
+ "sports_centre",
+ "sports_hall",
+ "swimming",
+ "swimming_area",
+ "swimming_pool",
+ "tennis",
+ "volleyball",
+ "water_park"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Education",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 15,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "college",
+ "childcare",
+ "dancing_school",
+ "driving_school",
+ "kindergarten",
+ "school",
+ "university"
+ ],
+ [
+ "get",
+ "class"
+ ],
+ [
+ "case",
+ [
+ "has",
+ "class"
+ ],
+ "",
+ "dot"
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(175, 50%, 40%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 15,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "university"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "school",
+ "university"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(175, 50%, 40%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 15,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "university"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "school",
+ "university"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "college",
+ "childcare",
+ "dancing_school",
+ "driving_school",
+ "kindergarten",
+ "school",
+ "university"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Tourism",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 14,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "apartment",
+ "aquarium",
+ "attraction",
+ "campsite",
+ "camp_site",
+ "caravan_site",
+ "castle",
+ "chalet",
+ "guest_house",
+ "hotel",
+ "hostel",
+ "information",
+ "lodging",
+ "motel",
+ "reservoir",
+ "ruins",
+ "theme_park",
+ "zoo"
+ ],
+ [
+ "get",
+ "class"
+ ],
+ [
+ "case",
+ [
+ "has",
+ "class"
+ ],
+ "",
+ "dot"
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(283, 55%, 35%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "attraction"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "attraction",
+ "castle",
+ "hotel",
+ "zoo"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(283, 55%, 35%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "attraction"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "attraction",
+ "castle",
+ "hotel",
+ "zoo"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "apartment",
+ "aquarium",
+ "attraction",
+ "campsite",
+ "camp_site",
+ "caravan_site",
+ "castle",
+ "chalet",
+ "guest_house",
+ "hotel",
+ "hostel",
+ "information",
+ "lodging",
+ "motel",
+ "reservoir",
+ "ruins",
+ "theme_park",
+ "zoo"
+ ],
+ [
+ "!=",
+ "subclass",
+ "board"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Culture",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 14,
+ "layout": {
+ "icon-image": [
+ "coalesce",
+ [
+ "image",
+ [
+ "get",
+ "subclass"
+ ]
+ ],
+ [
+ "image",
+ [
+ "get",
+ "class"
+ ]
+ ],
+ [
+ "image",
+ "dot"
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(315, 35%, 50%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "museum"
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "cinema",
+ "art_gallery",
+ "museum",
+ "theatre"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "cinema",
+ "art_gallery",
+ "library",
+ "museum",
+ "place_of_worship",
+ "theatre"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(315, 35%, 50%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "museum"
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "cinema",
+ "art_gallery",
+ "museum",
+ "theatre"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "cinema",
+ "art_gallery",
+ "library",
+ "museum",
+ "place_of_worship",
+ "theatre"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "art_gallery",
+ "archeological_site",
+ "cinema",
+ "community_centre",
+ "gallery",
+ "library",
+ "monastery",
+ "monument",
+ "museum",
+ "opera",
+ "place_of_worship",
+ "planetarium",
+ "theatre"
+ ],
+ [
+ "!=",
+ "subclass",
+ "artwork"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Shopping",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 14,
+ "layout": {
+ "icon-image": [
+ "coalesce",
+ [
+ "image",
+ [
+ "get",
+ "subclass"
+ ]
+ ],
+ [
+ "image",
+ [
+ "get",
+ "class"
+ ]
+ ],
+ [
+ "image",
+ "dot"
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(18, 17%, 30%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "mall"
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "mall",
+ "supermarket"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "bakery",
+ "chemist",
+ "mall",
+ "supermarket"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(18, 17%, 30%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "mall"
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "mall",
+ "supermarket"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "bakery",
+ "chemist",
+ "mall",
+ "supermarket"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "all",
+ [
+ "in",
+ "class",
+ "alcohol_shop",
+ "bakery",
+ "book",
+ "books",
+ "butcher",
+ "chemist",
+ "clothing_store",
+ "convenience",
+ "gift",
+ "grocery",
+ "laundry",
+ "mall",
+ "music",
+ "shop",
+ "supermarket"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ ]
+ },
+ {
+ "id": "Food",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 14,
+ "maxzoom": 22,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "bar",
+ "beer",
+ "cafe",
+ "fast_food",
+ "ice_cream",
+ "restaurant"
+ ],
+ [
+ "get",
+ "class"
+ ],
+ [
+ "biergarten",
+ "pub"
+ ],
+ "beer",
+ "",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "food_court"
+ ],
+ "restaurant",
+ "dot"
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(18, 24%, 44%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 20
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 99
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 499
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(18, 24%, 44%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 20
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 99
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 499
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "bar",
+ "beer",
+ "biergarten",
+ "cafe",
+ "fast_food",
+ "food_court",
+ "ice_cream",
+ "pub",
+ "restaurant"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Transport",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 14,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "aerialway",
+ "bicycle",
+ "bicycle_parking",
+ "car",
+ "car_rental",
+ "car_repair",
+ "charging_station",
+ "cycle_barrier",
+ "ferry_terminal",
+ "fuel",
+ "harbor",
+ "motorcycle_parking",
+ "parking",
+ "parking_garage",
+ "parking_paid"
+ ],
+ [
+ "get",
+ "class"
+ ],
+ [
+ "case",
+ [
+ "has",
+ "class"
+ ],
+ "dot",
+ ""
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(215, 81%, 35%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "ferry_terminal",
+ "fuel",
+ "terminal"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "car",
+ "car_rental",
+ "car_repair",
+ "charging_station",
+ "ferry_terminal",
+ "fuel",
+ "harbor",
+ "heliport",
+ "highway_rest_area",
+ "terminal",
+ "toll"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "car",
+ "car_rental",
+ "car_repair",
+ "charging_station",
+ "ferry_terminal",
+ "fuel",
+ "harbor",
+ "heliport",
+ "highway_rest_area",
+ "parking",
+ "parking_garage",
+ "parking_paid",
+ "terminal",
+ "toll"
+ ],
+ 1,
+ 0
+ ],
+ 18,
+ 1
+ ],
+ "text-color": "hsl(215, 81%, 35%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "ferry_terminal",
+ "fuel",
+ "terminal"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "car",
+ "car_rental",
+ "car_repair",
+ "charging_station",
+ "ferry_terminal",
+ "fuel",
+ "harbor",
+ "heliport",
+ "highway_rest_area",
+ "terminal",
+ "toll"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "car",
+ "car_rental",
+ "car_repair",
+ "charging_station",
+ "ferry_terminal",
+ "fuel",
+ "harbor",
+ "heliport",
+ "highway_rest_area",
+ "parking",
+ "parking_garage",
+ "parking_paid",
+ "terminal",
+ "toll"
+ ],
+ 1,
+ 0
+ ],
+ 18,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "bicycle",
+ "bicycle_parking",
+ "bicycle_rental",
+ "car",
+ "car_rental",
+ "car_repair",
+ "charging_station",
+ "ferry_terminal",
+ "fuel",
+ "harbor",
+ "heliport",
+ "highway_rest_area",
+ "motorcycle_parking",
+ "parking",
+ "parking_garage",
+ "parking_paid",
+ "scooter",
+ "terminal",
+ "toll"
+ ]
+ ]
+ },
+ {
+ "id": "Park",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 14,
+ "layout": {
+ "icon-anchor": "center",
+ "icon-image": "park",
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(82, 83%, 25%)",
+ "icon-halo-blur": 0,
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 10
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 99
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ 1
+ ],
+ "text-color": "hsl(82, 83%, 25%)",
+ "text-halo-blur": 0,
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 10
+ ],
+ 1,
+ 0
+ ],
+ 15,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 99
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "class",
+ "park"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Healthcare",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 14,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "clinic",
+ "dentist",
+ "doctors",
+ "doctor",
+ "first_aid",
+ "hospital",
+ "pharmacy",
+ "veterinary"
+ ],
+ [
+ "get",
+ "class"
+ ],
+ [
+ "case",
+ [
+ "has",
+ "class"
+ ],
+ "",
+ "dot"
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 12,
+ 10
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 14
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(6, 96%, 35%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "hospital"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "clinic",
+ "hospital"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(6, 96%, 35%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "hospital"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "clinic",
+ "hospital"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "$type",
+ "Point"
+ ],
+ [
+ "in",
+ "class",
+ "clinic",
+ "dentist",
+ "doctors",
+ "first_aid",
+ "hospital",
+ "pharmacy",
+ "veterinary"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Place labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "place",
+ "minzoom": 4,
+ "layout": {
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "center",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-letter-spacing": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "suburb",
+ "neighborhood",
+ "neighbourhood",
+ "quarter",
+ "island"
+ ],
+ 0.2,
+ 0
+ ],
+ "text-max-width": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "island"
+ ],
+ 6,
+ 8
+ ],
+ "text-offset": [
+ 0,
+ 0
+ ],
+ "text-padding": 2,
+ "text-size": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 3,
+ 11,
+ 8,
+ 13,
+ 11,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "village",
+ 12,
+ [
+ "suburb",
+ "neighbourhood",
+ "quarter",
+ "hamlet",
+ "isolated_dwelling"
+ ],
+ 9,
+ "island",
+ 8,
+ 12
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "village",
+ 18,
+ [
+ "suburb",
+ "neighbourhood",
+ "quarter",
+ "hamlet",
+ "isolated_dwelling"
+ ],
+ 15,
+ "island",
+ 11,
+ 16
+ ]
+ ],
+ "text-transform": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "suburb",
+ "neighborhood",
+ "neighbourhood",
+ "quarter",
+ "island"
+ ],
+ "uppercase",
+ "none"
+ ],
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(0,0%,25%)",
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1.2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 1,
+ 8,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "island"
+ ],
+ 0,
+ 1
+ ],
+ 9,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ [
+ "island"
+ ],
+ 1,
+ 1
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "!in",
+ "class",
+ "continent",
+ "country",
+ "state",
+ "region",
+ "province",
+ "city",
+ "town",
+ "place"
+ ]
+ },
+ {
+ "id": "Station",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "poi",
+ "minzoom": 12,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "bus_stop",
+ "subway"
+ ],
+ [
+ "get",
+ "subclass"
+ ],
+ "bus_station",
+ "bus_stop",
+ "station",
+ "railway",
+ "tram_stop",
+ "tramway",
+ [
+ "case",
+ [
+ "has",
+ "subclass"
+ ],
+ "dot",
+ ""
+ ]
+ ],
+ "icon-size": 1,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": "{name}",
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-line-height": 0.9,
+ "text-max-width": 9,
+ "text-offset": [
+ 0,
+ 0.9
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 13,
+ 11
+ ],
+ [
+ 16,
+ 12
+ ],
+ [
+ 22,
+ 16
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(215, 83%, 53%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.8,
+ 16,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": 2,
+ "icon-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "station"
+ ],
+ 1,
+ 0
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "station",
+ "subway",
+ "tram_stop"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "bus_stop",
+ "station",
+ "subway",
+ "tram_stop"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ],
+ "text-color": "hsl(215, 83%, 53%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 12,
+ 1,
+ 14,
+ 0.5,
+ 16,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": 2,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 12,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "station"
+ ],
+ 1,
+ 0
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "station",
+ "subway",
+ "tram_stop"
+ ],
+ 1,
+ 0
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "subclass"
+ ],
+ [
+ "bus_stop",
+ "station",
+ "subway",
+ "tram_stop"
+ ],
+ 1,
+ 0
+ ],
+ 17,
+ 1
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "bus",
+ "railway"
+ ],
+ [
+ "has",
+ "name"
+ ]
+ ]
+ },
+ {
+ "id": "Airport gate",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "aeroway",
+ "minzoom": 15,
+ "layout": {
+ "text-field": "{ref}",
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-size": {
+ "stops": [
+ [
+ 15,
+ 10
+ ],
+ [
+ 22,
+ 18
+ ]
+ ]
+ },
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(0,0%,40%)",
+ "text-halo-blur": 0.5,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1
+ },
+ "filter": [
+ "==",
+ "class",
+ "gate"
+ ]
+ },
+ {
+ "id": "Airport",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "aerodrome_label",
+ "minzoom": 8,
+ "layout": {
+ "icon-image": [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "international",
+ "airport",
+ "airfield"
+ ],
+ "icon-size": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 8,
+ 0.6,
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "international",
+ 0.8,
+ 0.6
+ ],
+ 16,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "international",
+ 1,
+ 0.8
+ ]
+ ],
+ "text-anchor": "top",
+ "text-field": {
+ "stops": [
+ [
+ 8,
+ " "
+ ],
+ [
+ 9,
+ "{iata}"
+ ],
+ [
+ 12,
+ "{name:en}"
+ ]
+ ]
+ },
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-line-height": 1.2,
+ "text-max-width": 9,
+ "text-offset": [
+ 0,
+ 0.8
+ ],
+ "text-optional": true,
+ "text-padding": 2,
+ "text-size": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 9,
+ 9,
+ 10,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "international",
+ 10,
+ 7
+ ],
+ 14,
+ [
+ "match",
+ [
+ "get",
+ "class"
+ ],
+ "international",
+ 13,
+ 11
+ ]
+ ],
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(215, 83%, 53%)",
+ "icon-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 8,
+ 1,
+ 10,
+ 0.5,
+ 12,
+ 0
+ ],
+ "icon-halo-color": "hsl(0, 0%, 100%)",
+ "icon-halo-width": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 8,
+ 1,
+ 12,
+ 2
+ ],
+ "icon-opacity": 1,
+ "text-color": "hsl(215, 83%, 53%)",
+ "text-halo-blur": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 8,
+ 1,
+ 10,
+ 0.5,
+ 12,
+ 0
+ ],
+ "text-halo-color": "hsl(0, 0%, 100%)",
+ "text-halo-width": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 8,
+ 1,
+ 12,
+ 2
+ ]
+ },
+ "filter": [
+ "all",
+ [
+ "has",
+ "iata"
+ ],
+ [
+ "!in",
+ "class",
+ "public"
+ ]
+ ]
+ },
+ {
+ "id": "State labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "place",
+ "minzoom": 3,
+ "maxzoom": 9,
+ "layout": {
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-field": [
+ "coalesce",
+ [
+ "get",
+ "name:en"
+ ],
+ [
+ "get",
+ "name"
+ ]
+ ],
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-letter-spacing": 0.1,
+ "text-max-width": 8,
+ "text-padding": 2,
+ "text-size": {
+ "stops": [
+ [
+ 3,
+ 9
+ ],
+ [
+ 5,
+ 10
+ ],
+ [
+ 6,
+ 11
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(48,4%,44%)",
+ "text-halo-color": "hsla(0,0%,100%,0.75)",
+ "text-halo-width": 0.8,
+ "text-opacity": [
+ "step",
+ [
+ "zoom"
+ ],
+ 0,
+ 3,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 3
+ ],
+ 1,
+ 0
+ ],
+ 8,
+ [
+ "case",
+ [
+ "==",
+ [
+ "get",
+ "rank"
+ ],
+ 0
+ ],
+ 0,
+ 1
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "in",
+ "class",
+ "state",
+ "province"
+ ],
+ [
+ "<=",
+ "rank",
+ 6
+ ]
+ ]
+ },
+ {
+ "id": "Town labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "place",
+ "minzoom": 4,
+ "maxzoom": 16,
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": {
+ "stops": [
+ [
+ 6,
+ "circle"
+ ],
+ [
+ 12,
+ " "
+ ]
+ ]
+ },
+ "icon-optional": false,
+ "icon-size": [
+ "interpolate",
+ [
+ "exponential",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ 0.3,
+ 14,
+ 0.4
+ ],
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "bottom",
+ "text-field": [
+ "coalesce",
+ [
+ "get",
+ "name:en"
+ ],
+ [
+ "get",
+ "name"
+ ]
+ ],
+ "text-font": [
+ "Roboto Regular",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ -0.15
+ ],
+ "text-size": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 12
+ ],
+ 11,
+ 10
+ ],
+ 9,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 15
+ ],
+ 13,
+ 12
+ ],
+ 16,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 15
+ ],
+ 22,
+ 20
+ ]
+ ],
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(0, 20%, 99%)",
+ "icon-halo-color": "hsl(0, 0%, 29%)",
+ "icon-halo-width": 1,
+ "text-color": [
+ "interpolate",
+ [
+ "linear"
+ ],
+ [
+ "zoom"
+ ],
+ 6,
+ "hsl(0,0%,20%)",
+ 12,
+ "hsl(0,0%,0%)"
+ ],
+ "text-halo-blur": 0.5,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "class",
+ "town"
+ ]
+ },
+ {
+ "id": "City labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "place",
+ "minzoom": 4,
+ "maxzoom": 16,
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "step",
+ [
+ "zoom"
+ ],
+ "circle",
+ 13,
+ ""
+ ],
+ "icon-optional": false,
+ "icon-size": 0.4,
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "bottom",
+ "text-field": "{name:en}",
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ -0.15
+ ],
+ "text-size": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 4,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 2
+ ],
+ 14,
+ 12
+ ],
+ 8,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 4
+ ],
+ 18,
+ 14
+ ],
+ 12,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 4
+ ],
+ 24,
+ 18
+ ],
+ 16,
+ [
+ "case",
+ [
+ "<=",
+ [
+ "get",
+ "rank"
+ ],
+ 4
+ ],
+ 32,
+ 26
+ ]
+ ],
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "hsl(0, 0%, 29%)",
+ "icon-halo-width": 1,
+ "icon-opacity": 1,
+ "text-color": "hsl(0,0%,20%)",
+ "text-halo-blur": 0.5,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 0.8
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "class",
+ "city"
+ ],
+ [
+ "!=",
+ "capital",
+ 2
+ ]
+ ]
+ },
+ {
+ "id": "Capital city labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "place",
+ "minzoom": 4,
+ "maxzoom": 16,
+ "layout": {
+ "icon-allow-overlap": true,
+ "icon-image": [
+ "step",
+ [
+ "zoom"
+ ],
+ "circle",
+ 13,
+ ""
+ ],
+ "icon-optional": false,
+ "icon-size": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 4,
+ 0.45,
+ 10,
+ 0.5,
+ 11,
+ 0.6
+ ],
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-anchor": "bottom",
+ "text-field": "{name:en}",
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-max-width": 8,
+ "text-offset": [
+ 0,
+ -0.15
+ ],
+ "text-size": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 4,
+ 14,
+ 8,
+ 18,
+ 12,
+ 24,
+ 16,
+ 32
+ ],
+ "visibility": "visible"
+ },
+ "paint": {
+ "icon-color": "hsl(0, 0%, 100%)",
+ "icon-halo-color": "hsl(0, 0%, 29%)",
+ "icon-halo-width": 1,
+ "icon-opacity": 1,
+ "text-color": "hsl(0,0%,20%)",
+ "text-halo-blur": 0.5,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 0.8
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "class",
+ "city"
+ ],
+ [
+ "==",
+ "capital",
+ 2
+ ]
+ ]
+ },
+ {
+ "id": "Country labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "place",
+ "minzoom": 1,
+ "maxzoom": 12,
+ "layout": {
+ "symbol-sort-key": [
+ "to-number",
+ [
+ "get",
+ "rank"
+ ]
+ ],
+ "text-allow-overlap": false,
+ "text-field": "{name:en}",
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-letter-spacing": 0.07,
+ "text-max-width": {
+ "stops": [
+ [
+ 1,
+ 5
+ ],
+ [
+ 5,
+ 8
+ ]
+ ]
+ },
+ "text-padding": 1,
+ "text-size": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 0,
+ 8,
+ 1,
+ 10,
+ 4,
+ [
+ "case",
+ [
+ ">",
+ [
+ "get",
+ "rank"
+ ],
+ 2
+ ],
+ 15,
+ 17
+ ],
+ 8,
+ [
+ "case",
+ [
+ ">",
+ [
+ "get",
+ "rank"
+ ],
+ 2
+ ],
+ 19,
+ 23
+ ]
+ ],
+ "text-transform": "none",
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(0, 0%, 20%)",
+ "text-halo-blur": 0.8,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1,
+ "text-opacity": [
+ "interpolate",
+ [
+ "linear",
+ 1
+ ],
+ [
+ "zoom"
+ ],
+ 4,
+ [
+ "case",
+ [
+ ">",
+ [
+ "get",
+ "rank"
+ ],
+ 4
+ ],
+ 0,
+ 1
+ ],
+ 5.9,
+ [
+ "case",
+ [
+ ">",
+ [
+ "get",
+ "rank"
+ ],
+ 4
+ ],
+ 0,
+ 1
+ ],
+ 6,
+ [
+ "case",
+ [
+ ">",
+ [
+ "get",
+ "rank"
+ ],
+ 4
+ ],
+ 1,
+ 1
+ ]
+ ]
+ },
+ "metadata": {},
+ "filter": [
+ "all",
+ [
+ "==",
+ "class",
+ "country"
+ ],
+ [
+ "has",
+ "iso_a2"
+ ],
+ [
+ "!=",
+ "iso_a2",
+ "VA"
+ ]
+ ]
+ },
+ {
+ "id": "Continent labels",
+ "type": "symbol",
+ "source": "maptiler_planet",
+ "source-layer": "place",
+ "maxzoom": 1,
+ "layout": {
+ "text-field": "{name:en}",
+ "text-font": [
+ "Roboto Medium",
+ "Noto Sans Regular"
+ ],
+ "text-justify": "center",
+ "text-size": {
+ "stops": [
+ [
+ 0,
+ 12
+ ],
+ [
+ 2,
+ 13
+ ]
+ ]
+ },
+ "text-transform": "uppercase",
+ "visibility": "visible"
+ },
+ "paint": {
+ "text-color": "hsl(0,0%,19%)",
+ "text-halo-blur": 1,
+ "text-halo-color": "hsl(0,0%,100%)",
+ "text-halo-width": 1
+ },
+ "metadata": {},
+ "filter": [
+ "==",
+ "class",
+ "continent"
+ ]
+ }
+ ],
+ "metadata": {
+ "maptiler:copyright": "You are licensed to use the style or its derivate for serving map tiles exclusively with MapTiler Server or MapTiler Cloud and in accordance with their licenses and terms. If you plan to use the style in a different way, contact us at sales@maptiler.com.",
+ "spaceColor": "hsl(203, 100%, 85%)"
+ },
+ "glyphs": "https://api.maptiler.com/fonts/{fontstack}/{range}.pbf?key=MZEJTanw3WpxRvt7qDfo",
+ "sprite": "https://api.maptiler.com/maps/streets-v2/sprite",
+ "bearing": 0,
+ "pitch": 0,
+ "center": [
+ 0,
+ 0
+ ],
+ "zoom": 1,
+ "light": {
+ "anchor": "viewport",
+ "color": "#FFFFFF",
+ "intensity": 0.5,
+ "position": [
+ 1.15,
+ 180,
+ 0
+ ]
+ }
+}
diff --git a/web/src/App.svelte b/web/src/App.svelte
index 1f66b2ad..9b41162c 100644
--- a/web/src/App.svelte
+++ b/web/src/App.svelte
@@ -24,6 +24,7 @@
sidebarContents,
topContents,
} from "svelte-utils/top_bar_layout";
+ import streetsMapStyleUrl from "../assets/map-styles/streets-v2-style.json?url";
import AutoBoundariesMode from "./AutoBoundariesMode.svelte";
import { DisableInteractiveLayers, layerId, StreetView } from "./common";
import DebugDemandMode from "./DebugDemandMode.svelte";
@@ -102,20 +103,13 @@
async function getStyle(
basemap: string,
): Promise {
- if (basemap != "streets-v2") {
+ // streets-v2 uses a fill-extrusion layer for 3D buildings that's very distracting, so we have a custom version
+ // NOTE: our maptiler apiKey is baked into the downloaded style, so if we rotate keys, we'll need to regenerate this file.
+ if (basemap == "streets-v2") {
+ return streetsMapStyleUrl;
+ } else {
return `https://api.maptiler.com/maps/${basemap}/style.json?key=${maptilerApiKey}`;
}
-
- // streets-v2 uses a fill-extrusion layer for 3D buildings that's very distracting. Remove it, and make the regular buildings layer display at high zoom instead.
- let resp = await fetch(
- `https://api.maptiler.com/maps/${basemap}/style.json?key=${maptilerApiKey}`,
- );
- let json = await resp.json();
-
- json.layers = json.layers.filter((l: any) => l.id != "Building 3D");
- delete json.layers.find((l: any) => l.id == "Building")!.maxzoom;
-
- return json;
}
diff --git a/web/src/layers/CellLayer.svelte b/web/src/layers/CellLayer.svelte
index 18252805..9c051dda 100644
--- a/web/src/layers/CellLayer.svelte
+++ b/web/src/layers/CellLayer.svelte
@@ -12,7 +12,8 @@
}}
paint={{
"fill-color": ["get", "color"],
- "fill-opacity": 0.8,
+ "fill-opacity": 0.5,
+ "fill-outline-color": "hsla(0, 0%, 0%, 0.3)",
}}
/>
diff --git a/web/src/stores.ts b/web/src/stores.ts
index 4e0e2957..8d1a8eab 100644
--- a/web/src/stores.ts
+++ b/web/src/stores.ts
@@ -9,6 +9,7 @@ import { type AreaProps } from "route-snapper-ts";
import { get, writable, type Writable } from "svelte/store";
import type { Backend } from "./wasm";
+// NOTE: our maptiler apiKey is baked into the customized assets/map-styles/, so if we rotate keys, we'll need to update that file too.
export const maptilerApiKey = "MZEJTanw3WpxRvt7qDfo";
export type Mode =