From 69aa8bd51eb5eac666f023451edbce11f5f002a5 Mon Sep 17 00:00:00 2001 From: Frank Elsinga Date: Thu, 2 Jan 2025 17:29:16 +0100 Subject: [PATCH] removed the buggy tileserver bindings --- deployment/README.md | 5 +- docker-compose.local.yml | 2 - docker-compose.yml | 54 - map/styles/navigatum-basemap.json | 6156 ----------------- resources/documentation/Dependencies.md | 3 +- server/README.md | 14 +- server/src/external/download_map_image.rs | 2 +- .../app/components/DetailsInteractiveMap.vue | 4 +- webclient/app/components/IndoorMap.vue | 4 +- webclient/nuxt.config.ts | 1 - webclient/public/navigatum-basemap.json | 2297 ++++++ 11 files changed, 2309 insertions(+), 6233 deletions(-) delete mode 100644 map/styles/navigatum-basemap.json create mode 100644 webclient/public/navigatum-basemap.json diff --git a/deployment/README.md b/deployment/README.md index afbf4b213..2a549974c 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -35,7 +35,8 @@ We are confindent that even if we were to add more universities, more load would On every of these nodes we run the following supporting services: - [traefik](https://traefik.io/) as a reverse proxy -- [`prometeus`](https://prometheus.io/), [`alertmanager`](https://prometheus.io/docs/alerting/latest/alertmanager/), [`loki`](https://grafana.com/), +- [`prometeus`](https://prometheus.io/), [`alertmanager`](https://prometheus.io/docs/alerting/latest/alertmanager/), [ + `loki`](https://grafana.com/), and [`grafana`](https://grafana.com/), [uptime-kuma](https://github.com/louislam/uptime-kuma) for monitoring purposes - [watchtower](https://containrrr.dev/watchtower/) to update our deployments @@ -44,8 +45,6 @@ We run the following components at these paths: - `/` [webclient](../webclient) written in [`Vue`](https://vuejs.org/)/[`nuxt-4`](https://nuxt.dev) - `/api/` [server](../server) written in [`Rust`](https://www.rust-lang.org/)/[`actix-web`](https://actix.rs/) - `/tiles/` [`martin`](https://martin.maplibre.org/) tiles from OSM -- `/map/` [`tileserver-gl`](https://github.com/maptiler/tileserver-gl) rendering tiles from OSM - slated to be removed in favor of `/tiles/` - `/cdn` nginx server serving the static files we need slated to be folded into the `server`-startup diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 2d045eae9..d122bb576 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -6,7 +6,6 @@ services: - "3000:3000" environment: TZ: Europe/Berlin - NUXT_PUBLIC_MAPS_URL: https://nav.tum.de/maps NUXT_PUBLIC_CDN_URL: http://data:3002 NUXT_PUBLIC_API_URL: http://server:3003 # cdn @@ -33,7 +32,6 @@ services: LOG_LEVEL: ${LOG_LEVEL-debug} MIELI_URL: http://meilisearch:7700 MEILI_MASTER_KEY: ${MEILI_MASTER_KEY} - TILESERVER_URL: https://nav.tum.de/maps CDN_URL: http://data:3002/cdn POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_USER: ${POSTGRES_USER} diff --git a/docker-compose.yml b/docker-compose.yml index 2ab39bf49..9fede0312 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,61 +14,8 @@ services: - "3000" environment: TZ: Europe/Berlin - NUXT_PUBLIC_MAPS_URL: https://nav.tum.de NUXT_PUBLIC_CDN_URL: https://nav.tum.de NUXT_PUBLIC_API_URL: https://nav.tum.de - # maps - tileserver-init-config: - image: alpine:latest - command: - - /bin/sh - - -c - - | - rm -f /data/*.json - cp /map/*.json /data/ - - rm -fr /data/sprites/ - mkdir -p /data/sprites/ - cp /map/sprites/* /data/sprites/ - - rm -fr /data/styles/ - mkdir -p /data/styles/ - cp /map/styles/* /data/styles/ - - mkdir -p /data/fonts/ - volumes: - - tileserver-src:/data - - ./map/:/map/:ro - environment: - TZ: Europe/Berlin - tileserver: - image: maptiler/tileserver-gl:v5.0.0 - restart: unless-stopped - labels: - - "traefik.enable=true" - - "traefik.http.routers.navigatum-tileserver.entrypoints=webs" - - "traefik.http.routers.navigatum-tileserver.tls.certresolver=leacme" - - "traefik.http.routers.navigatum-tileserver.rule=Host(`nav.tum.de`) && PathPrefix(`/maps/`)" - - "traefik.http.routers.navigatum-tileserver.middlewares=navigatum-maps-stripprefix@docker, navigatum-compress@docker, navigatum-cache-2m@docker" - - "traefik.http.middlewares.navigatum-maps-stripprefix.stripprefix.prefixes=/maps" - - "traefik.http.middlewares.navigatum-compress.compress=true" - - "traefik.http.middlewares.navigatum-cache-2m.headers.customrequestheaders.Cache-Control=public, max-age=5184000" - - "traefik.http.services.navigatum-tileserver.loadbalancer.server.port=8080" - networks: - - traefik_traefik - expose: - - "8080" - command: /usr/src/app/docker-entrypoint.sh --public_url=https://nav.tum.de/maps/ - environment: - TZ: Europe/Berlin - tmpfs: - - /tmp - volumes: - - tileserver-src:/data/:ro - read_only: true - depends_on: - tileserver-init-config: - condition: service_completed_successfully # cdn data: image: ghcr.io/tum-dev/navigatum-data:main @@ -105,7 +52,6 @@ services: LOG_LEVEL: ${LOG_LEVEL-info} MIELI_URL: http://meilisearch:7700 MEILI_MASTER_KEY: ${MEILI_MASTER_KEY} - TILESERVER_URL: http://tileserver:8080 CDN_URL: http://data:3002/cdn POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_USER: ${POSTGRES_USER} diff --git a/map/styles/navigatum-basemap.json b/map/styles/navigatum-basemap.json deleted file mode 100644 index 58f6aed88..000000000 --- a/map/styles/navigatum-basemap.json +++ /dev/null @@ -1,6156 +0,0 @@ -{ - "version": 8, - "name": "NavigaTUM Basemap", - "metadata": { - "maputnik:license": "https://github.com/maputnik/osm-liberty/blob/gh-pages/LICENSE.md", - "maputnik:renderer": "mbgljs", - "openmaptiles:version": "3.x" - }, - "sources": { - "nav": { - "type": "vector", - "url": "https://nav.tum.de/tiles/openmaptiles,recreational_nodes" - }, - "natural_earth_shaded_relief": { - "maxzoom": 6, - "tileSize": 256, - "tiles": [ - "https://nav.tum.de/cdn/natural_earth_2_shaded_relief.raster/{z}/{x}/{y}.png" - ], - "type": "raster" - } - }, - "sprite": "https://nav.tum.de/tiles/sdf_sprite/maki,navigatum", - "glyphs": "https://nav.tum.de/tiles/font/{fontstack}/{range}", - "layers": [ - { - "id": "background", - "type": "background", - "source": "nav", - "paint": { - "background-color": "rgb(239,239,239)" - } - }, - { - "id": "natural_earth", - "type": "raster", - "source": "natural_earth_shaded_relief", - "maxzoom": 6, - "paint": { - "raster-opacity": [ - "interpolate", - [ - "exponential", - 1.5 - ], - [ - "zoom" - ], - 4, - 0.7, - 6, - 0 - ] - } - }, - { - "id": "park", - "type": "fill", - "source": "nav", - "source-layer": "park", - "paint": { - "fill-color": "#d8e8c8", - "fill-opacity": 0.7, - "fill-outline-color": "rgba(95, 208, 100, 1)" - } - }, - { - "id": "park_outline", - "type": "line", - "source": "nav", - "source-layer": "park", - "paint": { - "line-dasharray": [ - 1, - 1.5 - ], - "line-color": "rgba(228, 241, 215, 1)" - } - }, - { - "id": "landcover_sand", - "type": "fill", - "source": "nav", - "source-layer": "landcover", - "filter": [ - "==", - [ - "get", - "class" - ], - "sand" - ], - "paint": { - "fill-color": "rgba(247, 239, 195, 1)" - } - }, - { - "id": "landcover_wood", - "type": "fill", - "source": "nav", - "source-layer": "landcover", - "filter": [ - "==", - [ - "get", - "class" - ], - "wood" - ], - "paint": { - "fill-antialias": false, - "fill-color": "hsla(98,61%,72%,0.7)", - "fill-opacity": 0.4 - } - }, - { - "id": "landcover_grass", - "type": "fill", - "source": "nav", - "source-layer": "landcover", - "filter": [ - "==", - [ - "get", - "class" - ], - "grass" - ], - "paint": { - "fill-antialias": false, - "fill-color": "rgba(176, 213, 154, 1)", - "fill-opacity": 0.3 - } - }, - { - "id": "landcover_ice", - "type": "fill", - "source": "nav", - "source-layer": "landcover", - "filter": [ - "==", - [ - "get", - "class" - ], - "ice" - ], - "paint": { - "fill-antialias": false, - "fill-color": "rgba(224, 236, 236, 1)", - "fill-opacity": 0.8 - } - }, - { - "id": "landcover_trees", - "type": "circle", - "source": "nav", - "source-layer": "recreational_nodes", - "minzoom": 17, - "filter": [ - "==", - [ - "get", - "natural" - ], - "tree" - ], - "paint": { - "circle-color": "rgba(94, 180, 100, 0.61)", - "circle-radius": { - "stops": [ - [ - 17, - 5 - ], - [ - 18, - 15 - ], - [ - 19, - 30 - ], - [ - 20, - 60 - ], - [ - 21, - 120 - ], - [ - 22, - 240 - ], - [ - 23, - 480 - ] - ] - }, - "circle-opacity": { - "stops": [ - [ - 17, - 0.1 - ], - [ - 18, - 0.3 - ], - [ - 19, - 0.4 - ] - ] - }, - "circle-blur": 0.4 - } - }, - { - "id": "landuse_residential", - "type": "fill", - "source": "nav", - "source-layer": "landuse", - "maxzoom": 8, - "filter": [ - "==", - [ - "get", - "class" - ], - "residential" - ], - "paint": { - "fill-color": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 9, - "hsla(0,3%,85%,0.84)", - 12, - "hsla(35,57%,88%,0.49)" - ] - } - }, - { - "id": "landuse_pitch", - "type": "fill", - "source": "nav", - "source-layer": "landuse", - "filter": [ - "==", - "class", - "pitch" - ], - "paint": { - "fill-color": "#DEE3CD" - } - }, - { - "id": "landuse_track", - "type": "fill", - "source": "nav", - "source-layer": "landuse", - "filter": [ - "==", - "class", - "track" - ], - "paint": { - "fill-color": "#DEE3CD" - } - }, - { - "id": "landuse_cemetery", - "type": "fill", - "source": "nav", - "source-layer": "landuse", - "filter": [ - "==", - [ - "get", - "class" - ], - "cemetery" - ], - "paint": { - "fill-color": "hsl(75,37%,81%)" - } - }, - { - "id": "landuse_hospital", - "type": "fill", - "source": "nav", - "source-layer": "landuse", - "filter": [ - "==", - [ - "get", - "class" - ], - "hospital" - ], - "paint": { - "fill-color": "#fde" - } - }, - { - "id": "landuse_school", - "type": "fill", - "source": "nav", - "source-layer": "landuse", - "filter": [ - "==", - [ - "get", - "class" - ], - "school" - ], - "paint": { - "fill-color": "rgb(236,238,204)" - } - }, - { - "id": "waterway_tunnel", - "type": "line", - "source": "nav", - "source-layer": "waterway", - "filter": [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - "paint": { - "line-color": "#a0c8f0", - "line-dasharray": [ - 3, - 3 - ], - "line-gap-width": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 12, - 0, - 20, - 6 - ], - "line-opacity": 1, - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 8, - 1, - 20, - 2 - ] - } - }, - { - "id": "waterway_river", - "type": "line", - "source": "nav", - "source-layer": "waterway", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "river" - ], - [ - "!=", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-cap": "round" - }, - "paint": { - "line-color": "#a0c8f0", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 11, - 0.5, - 20, - 6 - ] - } - }, - { - "id": "waterway_other", - "type": "line", - "source": "nav", - "source-layer": "waterway", - "filter": [ - "all", - [ - "!=", - [ - "get", - "class" - ], - "river" - ], - [ - "!=", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-cap": "round" - }, - "paint": { - "line-color": "#a0c8f0", - "line-width": [ - "interpolate", - [ - "exponential", - 1.3 - ], - [ - "zoom" - ], - 13, - 0.5, - 20, - 6 - ] - } - }, - { - "id": "waterway_water", - "type": "fill", - "source": "nav", - "source-layer": "water", - "filter": [ - "!=", - [ - "get", - "brunnel" - ], - "tunnel" - ], - "paint": { - "fill-color": "rgb(158,189,255)" - } - }, - { - "id": "aeroway_fill", - "type": "fill", - "source": "nav", - "source-layer": "aeroway", - "minzoom": 11, - "filter": [ - "in", - "$type", - "Polygon" - ], - "paint": { - "fill-color": "rgba(229, 228, 224, 1)", - "fill-opacity": 0.7 - } - }, - { - "id": "aeroway_runway", - "type": "line", - "source": "nav", - "source-layer": "aeroway", - "minzoom": 11, - "filter": [ - "all", - [ - "in", - "$type", - "LineString" - ], - [ - "==", - [ - "get", - "class" - ], - "runway" - ] - ], - "paint": { - "line-color": "#f0ede9", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 11, - 3, - 20, - 16 - ] - } - }, - { - "id": "aeroway_taxiway", - "type": "line", - "source": "nav", - "source-layer": "aeroway", - "minzoom": 11, - "filter": [ - "all", - [ - "in", - "$type", - "LineString" - ], - [ - "==", - [ - "get", - "class" - ], - "taxiway" - ] - ], - "paint": { - "line-color": "#f0ede9", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 11, - 0.5, - 20, - 6 - ] - } - }, - { - "id": "tunnel_motorway_link_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-dasharray": [ - 0.5, - 0.25 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 1, - 13, - 3, - 14, - 4, - 20, - 15 - ] - } - }, - { - "id": "tunnel_service_track_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "service", - "track" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#cfcdca", - "line-dasharray": [ - 0.5, - 0.25 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15, - 1, - 16, - 4, - 20, - 11 - ] - } - }, - { - "id": "tunnel_link_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 1, - 13, - 3, - 14, - 4, - 20, - 15 - ] - } - }, - { - "id": "tunnel_street_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "street", - "street_limited" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#cfcdca", - "line-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 12, - 0, - 12.5, - 1 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 0.5, - 13, - 1, - 14, - 4, - 20, - 15 - ] - } - }, - { - "id": "tunnel_secondary_tertiary_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "secondary", - "tertiary" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 8, - 1.5, - 20, - 17 - ] - } - }, - { - "id": "tunnel_trunk_primary_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "primary", - "trunk" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0.4, - 6, - 0.7, - 7, - 1.75, - 20, - 22 - ] - } - }, - { - "id": "tunnel_motorway_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-dasharray": [ - 0.5, - 0.25 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0.4, - 6, - 0.7, - 7, - 1.75, - 20, - 22 - ] - } - }, - { - "id": "tunnel_path_pedestrian", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "in", - "$type", - "LineString" - ], - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "path", - "pedestrian" - ], - true, - false - ], - [ - "!", - [ - "has", - "level" - ] - ] - ], - "paint": { - "line-color": "hsl(0,0%,100%)", - "line-dasharray": [ - 1, - 0.75 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 14, - 0.5, - 20, - 10 - ] - } - }, - { - "id": "tunnel_motorway_link", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fc8", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12.5, - 0, - 13, - 1.5, - 14, - 2.5, - 20, - 11.5 - ] - } - }, - { - "id": "tunnel_service_track", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "service", - "track" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fff", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15.5, - 0, - 16, - 2, - 20, - 7.5 - ] - } - }, - { - "id": "tunnel_link", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fff4c6", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12.5, - 0, - 13, - 1.5, - 14, - 2.5, - 20, - 11.5 - ] - } - }, - { - "id": "tunnel_minor", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "minor" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fff", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 13.5, - 0, - 14, - 2.5, - 20, - 11.5 - ] - } - }, - { - "id": "tunnel_secondary_tertiary", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "secondary", - "tertiary" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fff4c6", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 6.5, - 0, - 7, - 0.5, - 20, - 10 - ] - } - }, - { - "id": "tunnel_trunk_primary", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "primary", - "trunk" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fff4c6", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0, - 7, - 1, - 20, - 18 - ] - } - }, - { - "id": "tunnel_motorway", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#ffdaa6", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0, - 7, - 1, - 20, - 18 - ] - } - }, - { - "id": "tunnel_major_rail", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "rail" - ], - true, - false - ] - ], - "paint": { - "line-color": "#bbb", - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14, - 0.4, - 15, - 0.75, - 20, - 2 - ] - } - }, - { - "id": "tunnel_major_rail_hatching", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "==", - [ - "get", - "class" - ], - "rail" - ] - ], - "paint": { - "line-color": "#bbb", - "line-dasharray": [ - 0.2, - 8 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14.5, - 0, - 15, - 3, - 20, - 8 - ] - } - }, - { - "id": "tunnel_transit_rail", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 16, - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "==", - [ - "get", - "class" - ], - "transit" - ] - ], - "paint": { - "line-color": "#bbb", - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14, - 0.4, - 15, - 0.75, - 20, - 2 - ] - } - }, - { - "id": "tunnel_transit_rail_hatching", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 17, - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "tunnel" - ], - [ - "==", - [ - "get", - "class" - ], - "transit" - ] - ], - "paint": { - "line-color": "#bbb", - "line-dasharray": [ - 0.2, - 8 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14.5, - 0, - 15, - 3, - 20, - 8 - ] - } - }, - { - "id": "road_major_rail_hatching", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "class" - ], - "rail" - ] - ], - "paint": { - "line-color": "#bbb", - "line-dasharray": [ - 0.2, - 8 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14.5, - 0, - 15, - 3, - 20, - 8 - ] - } - }, - { - "id": "road_major_rail", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "class" - ], - "rail" - ] - ], - "paint": { - "line-color": "#bbb", - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14, - 0.4, - 15, - 0.75, - 20, - 2 - ] - } - }, - { - "id": "road_bridge_bg", - "type": "fill", - "source": "nav", - "source-layer": "transportation", - "minzoom": 15, - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "paint": { - "fill-color": "rgba(207, 207, 207, 1)", - "fill-antialias": true, - "fill-opacity": { - "stops": [ - [ - 15, - 0 - ], - [ - 16, - 0.8 - ] - ] - } - } - }, - { - "id": "road_motorway_link_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 12, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 1, - 13, - 3, - 14, - 4, - 20, - 15 - ] - } - }, - { - "id": "road_service_track_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 14, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "service", - "track" - ], - true, - false - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#cfcdca", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15, - 1, - 16, - 4, - 20, - 11 - ] - } - }, - { - "id": "road_link_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 13, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "motorway", - "path", - "pedestrian", - "service", - "track" - ], - false, - true - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 1, - 13, - 3, - 14, - 4, - 20, - 15 - ] - } - }, - { - "id": "road_minor_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "in", - "$type", - "LineString" - ], - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "minor" - ], - true, - false - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#cfcdca", - "line-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 12, - 0, - 12.5, - 1 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 0.5, - 13, - 1, - 14, - 4, - 20, - 20 - ] - } - }, - { - "id": "road_secondary_tertiary_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "secondary", - "tertiary" - ], - true, - false - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 8, - 1.5, - 20, - 17 - ] - } - }, - { - "id": "road_trunk_primary_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "primary", - "trunk" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0.4, - 6, - 0.7, - 7, - 1.75, - 20, - 22 - ] - } - }, - { - "id": "road_motorway_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 5, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0.4, - 6, - 0.7, - 7, - 1.75, - 20, - 22 - ] - } - }, - { - "id": "road_motorway_link", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 12, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#fc8", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12.5, - 0, - 13, - 1.5, - 14, - 2.5, - 20, - 11.5 - ] - } - }, - { - "id": "road_path_steps", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 15, - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "path" - ], - [ - "==", - [ - "get", - "subclass" - ], - "steps" - ], - [ - "!", - [ - "has", - "level" - ] - ] - ], - "layout": { - "line-cap": "butt", - "line-join": "bevel", - "visibility": "visible" - }, - "paint": { - "line-color": "rgba(255, 255, 255, 1)", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15.5, - 0, - 16, - 2, - 20, - 7.5 - ], - "line-opacity": 0.8, - "line-dasharray": [ - 1, - 0.7 - ] - } - }, - { - "id": "road_path", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 15, - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "path" - ], - [ - "!=", - [ - "get", - "subclass" - ], - "platform" - ], - [ - "!=", - [ - "get", - "subclass" - ], - "steps" - ], - [ - "!", - [ - "has", - "level" - ] - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round", - "visibility": "visible" - }, - "paint": { - "line-color": "#fff", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15.5, - 0, - 16, - 2, - 20, - 7.5 - ], - "line-opacity": 0.6 - } - }, - { - "id": "road_service_track", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 15, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "service", - "track" - ], - true, - false - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#fff", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15.5, - 0, - 16, - 2, - 20, - 7.5 - ] - } - }, - { - "id": "road_link", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 13, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ], - [ - "match", - [ - "get", - "class" - ], - [ - "motorway", - "path", - "pedestrian", - "service", - "track" - ], - false, - true - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#fea", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12.5, - 0, - 13, - 1.5, - 14, - 2.5, - 20, - 11.5 - ] - } - }, - { - "id": "road_minor", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "in", - "$type", - "LineString" - ], - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "minor" - ], - true, - false - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#fff", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 13.5, - 0, - 14, - 2.5, - 20, - 18 - ] - } - }, - { - "id": "road_secondary_tertiary", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "secondary", - "tertiary" - ], - true, - false - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "#fea", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 6.5, - 0, - 8, - 0.5, - 20, - 13 - ] - } - }, - { - "id": "road_trunk_primary", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "match", - [ - "get", - "class" - ], - [ - "primary", - "trunk" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fea", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0, - 7, - 1, - 20, - 18 - ] - } - }, - { - "id": "road_motorway", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 5, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 5, - "hsl(26,87%,62%)", - 6, - "#fc8" - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0, - 7, - 1, - 20, - 18 - ] - } - }, - { - "id": "road_transit_rail", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 14, - "filter": [ - "all", - [ - "match", - [ - "get", - "brunnel" - ], - [ - "bridge", - "tunnel" - ], - false, - true - ], - [ - "==", - [ - "get", - "class" - ], - "transit" - ] - ], - "paint": { - "line-color": "#bbb", - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14, - 0, - 15, - 1.5, - 20, - 2 - ] - } - }, - { - "id": "road_transit_rail_hatching", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "minzoom": 17, - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "platform" - ], - [ - "has", - "level" - ] - ], - "paint": { - "line-color": "#bbb", - "line-dasharray": [ - 0.2, - 8 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14.5, - 0, - 15, - 3, - 20, - 8 - ] - } - }, - { - "id": "road_one_way_arrow", - "type": "symbol", - "source": "nav", - "source-layer": "transportation", - "minzoom": 16, - "filter": [ - "==", - [ - "get", - "oneway" - ], - 1 - ], - "layout": { - "icon-image": "arrow", - "symbol-placement": "line", - "icon-optional": true, - "icon-size": { - "base": 1, - "stops": [ - [ - 15.5, - 0 - ], - [ - 20, - 1 - ] - ] - } - }, - "paint": { - "icon-opacity": 0.5 - } - }, - { - "id": "road_one_way_arrow_opposite", - "type": "symbol", - "source": "nav", - "source-layer": "transportation", - "minzoom": 16, - "filter": [ - "==", - [ - "get", - "oneway" - ], - -1 - ], - "layout": { - "icon-image": "arrow", - "symbol-placement": "line", - "icon-rotate": 180, - "icon-optional": true, - "icon-size": { - "base": 1, - "stops": [ - [ - 15.5, - 0 - ], - [ - 20, - 1 - ] - ] - } - } - }, - { - "id": "bridge_motorway_link_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 1, - 13, - 3, - 14, - 4, - 20, - 15 - ] - } - }, - { - "id": "bridge_service_track_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "service", - "track" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#cfcdca", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15, - 1, - 16, - 4, - 20, - 11 - ] - } - }, - { - "id": "bridge_link_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "link" - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 1, - 13, - 3, - 14, - 4, - 20, - 15 - ] - } - }, - { - "id": "bridge_street_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "street", - "street_limited" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "hsl(36,6%,74%)", - "line-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 12, - 0, - 12.5, - 1 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 0.5, - 13, - 1, - 14, - 4, - 20, - 25 - ] - } - }, - { - "id": "bridge_secondary_tertiary_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "secondary", - "tertiary" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 8, - 1.5, - 20, - 17 - ] - } - }, - { - "id": "bridge_trunk_primary_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "primary", - "trunk" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0.4, - 6, - 0.7, - 7, - 1.75, - 20, - 22 - ] - } - }, - { - "id": "bridge_motorway_casing", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#e9ac77", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0.4, - 6, - 0.7, - 7, - 1.75, - 20, - 22 - ] - } - }, - { - "id": "bridge_motorway_link", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "==", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fc8", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12.5, - 0, - 13, - 1.5, - 14, - 2.5, - 20, - 11.5 - ] - } - }, - { - "id": "bridge_service_track", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "service", - "track" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fff", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 15.5, - 0, - 16, - 2, - 20, - 7.5 - ] - } - }, - { - "id": "bridge_link", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "link" - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fea", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12.5, - 0, - 13, - 1.5, - 14, - 2.5, - 20, - 11.5 - ] - } - }, - { - "id": "bridge_street", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "minor" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fff", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 13.5, - 0, - 14, - 2.5, - 20, - 18 - ] - } - }, - { - "id": "bridge_secondary_tertiary", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "secondary", - "tertiary" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fea", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 6.5, - 0, - 7, - 0.5, - 20, - 10 - ] - } - }, - { - "id": "bridge_trunk_primary", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ], - [ - "match", - [ - "get", - "class" - ], - [ - "primary", - "trunk" - ], - true, - false - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fea", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0, - 7, - 1, - 20, - 18 - ] - } - }, - { - "id": "bridge_motorway", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "motorway" - ], - [ - "!=", - [ - "get", - "ramp" - ], - 1 - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#fc8", - "line-width": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 5, - 0, - 7, - 1, - 20, - 18 - ] - } - }, - { - "id": "bridge_major_rail", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "rail" - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "paint": { - "line-color": "#bbb", - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14, - 0.4, - 15, - 0.75, - 20, - 2 - ] - } - }, - { - "id": "bridge_major_rail_hatching", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "rail" - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "paint": { - "line-color": "#bbb", - "line-dasharray": [ - 0.2, - 8 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14.5, - 0, - 15, - 3, - 20, - 8 - ] - } - }, - { - "id": "bridge_transit_rail", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "transit" - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "paint": { - "line-color": "#bbb", - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14, - 0.4, - 15, - 0.75, - 20, - 2 - ] - } - }, - { - "id": "bridge_transit_rail_hatching", - "type": "line", - "source": "nav", - "source-layer": "transportation", - "filter": [ - "all", - [ - "==", - [ - "get", - "class" - ], - "transit" - ], - [ - "==", - [ - "get", - "brunnel" - ], - "bridge" - ] - ], - "paint": { - "line-color": "#bbb", - "line-dasharray": [ - 0.2, - 8 - ], - "line-width": [ - "interpolate", - [ - "exponential", - 1.4 - ], - [ - "zoom" - ], - 14.5, - 0, - 15, - 3, - 20, - 8 - ] - } - }, - { - "id": "building", - "type": "fill", - "source": "nav", - "source-layer": "building", - "minzoom": 12, - "paint": { - "fill-color": "rgba(152, 198, 234, 1)", - "fill-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 13, - 0, - 13.5, - 1, - 14, - 1, - 14.5, - 0, - 16.4, - 0, - 16.5, - 1 - ], - "fill-antialias": true, - "fill-outline-color": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 13, - "hsla(35,6%,79%,0.32)", - 14, - "hsl(35,6%,79%)" - ] - } - }, - { - "id": "building-3d", - "type": "fill-extrusion", - "source": "nav", - "source-layer": "building", - "minzoom": 13.5, - "maxzoom": 16.5, - "paint": { - "fill-extrusion-height": [ - "get", - "render_height" - ], - "fill-extrusion-base": [ - "get", - "render_min_height" - ], - "fill-extrusion-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 13.5, - 0, - 14, - 0.8, - 16.4, - 0.8, - 16.5, - 0.1, - 16.6, - 0 - ], - "fill-extrusion-color": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 13, - "#98c6ea", - 15, - "#64a0c8", - 20, - "#005293" - ] - } - }, - { - "id": "boundary_3", - "type": "line", - "source": "nav", - "source-layer": "boundary", - "minzoom": 8, - "filter": [ - "match", - [ - "get", - "admin_level" - ], - [ - 3, - 4 - ], - true, - false - ], - "layout": { - "line-join": "round" - }, - "paint": { - "line-color": "#9e9cab", - "line-dasharray": [ - 5, - 1 - ], - "line-width": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 4, - 0.4, - 5, - 1, - 12, - 1.8 - ] - } - }, - { - "id": "boundary_2_z0-4", - "type": "line", - "source": "nav", - "source-layer": "boundary", - "maxzoom": 5, - "filter": [ - "all", - [ - "==", - [ - "get", - "admin_level" - ], - 2 - ], - [ - "!", - [ - "has", - "claimed_by" - ] - ] - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "hsl(248,1%,41%)", - "line-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 0, - 0.4, - 4, - 1 - ], - "line-width": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 3, - 1, - 5, - 1.2, - 12, - 3 - ] - } - }, - { - "id": "boundary_2_z5-", - "type": "line", - "source": "nav", - "source-layer": "boundary", - "minzoom": 5, - "filter": [ - "==", - [ - "get", - "admin_level" - ], - 2 - ], - "layout": { - "line-cap": "round", - "line-join": "round" - }, - "paint": { - "line-color": "hsl(248,1%,41%)", - "line-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 0, - 0.4, - 4, - 1 - ], - "line-width": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 3, - 1, - 5, - 1.2, - 12, - 3 - ] - } - }, - { - "id": "water_name_line", - "type": "symbol", - "source": "nav", - "source-layer": "waterway", - "filter": [ - "in", - "$type", - "LineString" - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Regular" - ], - "text-max-width": 5, - "text-size": 12, - "symbol-placement": "line" - }, - "paint": { - "text-color": "#5d60be", - "text-halo-color": "rgba(255,255,255,0.7)", - "text-halo-width": 1 - } - }, - { - "id": "water_name_point", - "type": "symbol", - "source": "nav", - "source-layer": "water_name", - "filter": [ - "in", - "$type", - "Point" - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Regular" - ], - "text-max-width": 5, - "text-size": 12 - }, - "paint": { - "text-color": "#5d60be", - "text-halo-color": "rgba(255,255,255,0.7)", - "text-halo-width": 1 - } - }, - { - "id": "poi_gate", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 17, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "gate", - "tail_gate" - ], - true, - false - ], - "layout": { - "icon-image": "gate", - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-optional": true - }, - "paint": { - "text-color": "rgba(159, 159, 159, 1)", - "text-halo-color": "#fff", - "icon-color": "rgba(159, 159, 159, 1)", - "icon-halo-color": "#fff", - "text-halo-width": 1, - "text-halo-blur": 1, - "icon-halo-width": 2, - "icon-halo-blur": 1 - } - }, - { - "id": "poi_parking", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 16, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "bicycle_rental", - "parking", - "bicycle_parking", - "motorcycle_parking" - ], - [ - "!", - [ - "has", - "level" - ] - ], - false - ], - "layout": { - "icon-image": [ - "match", - [ - "get", - "class" - ], - [ - "bicycle_rental" - ], - [ - "literal", - "bicycle-share" - ], - [ - "bicycle_parking" - ], - [ - "literal", - "bicycle" - ], - [ - "literal", - "parking" - ] - ], - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-allow-overlap": false, - "icon-ignore-placement": false, - "icon-size": 1.2 - }, - "paint": { - "text-color": "#4898FF", - "text-halo-color": "#fff", - "icon-color": "#4898FF", - "icon-halo-color": "#fff", - "icon-halo-blur": 1, - "text-halo-width": 1, - "icon-halo-width": 2, - "text-halo-blur": 1, - "icon-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 16.5, - 0, - 17, - [ - "min", - [ - "/", - [ - "-", - [ - "literal", - 100 - ], - [ - "number", - [ - "get", - "rank" - ] - ] - ], - [ - "literal", - 70 - ] - ], - [ - "literal", - 1 - ] - ], - 20, - 1 - ], - "text-opacity": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 16.5, - 0, - 17, - [ - "min", - [ - "/", - [ - "-", - [ - "literal", - 100 - ], - [ - "number", - [ - "get", - "rank" - ] - ] - ], - [ - "literal", - 70 - ] - ], - [ - "literal", - 1 - ] - ], - 20, - 1 - ] - } - }, - { - "id": "poi_rest_areas", - "type": "symbol", - "source": "nav", - "source-layer": "recreational_nodes", - "minzoom": 18, - "filter": [ - "any", - [ - "in", - "amenity", - "bench", - "lounger" - ], - [ - "==", - "leisure", - "picnic_table" - ] - ], - "layout": { - "icon-optional": true, - "icon-image": [ - "match", - [ - "get", - "amenity" - ], - [ - "bench" - ], - [ - "literal", - "temaki-bench" - ], - [ - "lounger" - ], - [ - "literal", - "temaki-tree-and-bench" - ], - [ - "literal", - "highway-rest-area" - ] - ] - }, - "paint": { - "icon-color": "#725A51", - "icon-halo-color": "#fff", - "icon-halo-width": 2, - "icon-halo-blur": 1, - "icon-opacity": { - "stops": [ - [ - 18, - 0 - ], - [ - 19, - 1 - ] - ] - } - } - }, - { - "id": "poi_office", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 18, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "office", - "college" - ], - [ - "!", - [ - "has", - "level" - ] - ], - false - ], - "layout": { - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14 - }, - "paint": { - "text-color": "rgba(20, 39, 87, 1)", - "text-halo-color": "#fff", - "icon-color": [ - "match", - [ - "get", - "name" - ], - [ - "der tu film" - ], - [ - "literal", - "rgba(20, 39, 87, 1)" - ], - [ - "literal", - "rgba(0, 0, 0, 1)" - ] - ], - "icon-halo-color": "#fff", - "text-halo-width": 1, - "text-halo-blur": 1, - "icon-halo-width": 2, - "icon-halo-blur": 1 - } - }, - { - "id": "poi_fuel", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 16, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "fuel" - ], - true, - false - ], - "layout": { - "text-anchor": "left", - "text-field": "", - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-allow-overlap": false, - "icon-ignore-placement": false, - "icon-image": [ - "match", - [ - "get", - "subclass" - ], - [ - "charging_station" - ], - [ - "literal", - "charging-station" - ], - [ - "get", - "subclass" - ] - ] - }, - "paint": { - "text-color": "#4898FF", - "text-halo-color": "#fff", - "icon-color": "#4898FF", - "icon-halo-color": "#fff", - "icon-halo-blur": 1, - "text-halo-width": 1, - "icon-halo-width": 2, - "text-halo-blur": 1 - } - }, - { - "id": "poi_children", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 16, - "filter": [ - "==", - [ - "get", - "class" - ], - "school" - ], - "layout": { - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-image": "school" - }, - "paint": { - "text-color": "#725A51", - "text-halo-color": "#fff", - "icon-color": "#725A51", - "icon-halo-color": "#fff", - "icon-halo-width": 2, - "icon-halo-blur": 1, - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "poi_sports", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 16, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "pitch", - "climbing" - ], - true, - false - ], - "layout": { - "icon-image": [ - "match", - [ - "get", - "subclass" - ], - [ - "table_tennis" - ], - [ - "literal", - "table-tennis" - ], - [ - "beachvolleyball" - ], - [ - "literal", - "volleyball" - ], - [ - "american_football" - ], - [ - "literal", - "american-football" - ], - [ - "climbing" - ], - [ - "literal", - "mountain" - ], - [ - "multi" - ], - [ - "literal", - "pitch" - ], - [ - "fitness-centre" - ], - [ - "literal", - "fitness-centre" - ], - [ - "literal", - "pitch" - ] - ], - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14 - }, - "paint": { - "text-color": "#77A723", - "text-halo-color": "#fff", - "icon-color": "#77A723", - "icon-halo-color": "#fff", - "icon-halo-width": 2, - "icon-halo-blur": 1, - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "poi_amenity", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 17, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "lodging", - "shop", - "atm", - "museum", - "post", - "recycling", - "bank", - "cinema", - "theatre" - ], - [ - "!", - [ - "has", - "level" - ] - ], - false - ], - "layout": { - "icon-image": [ - "match", - [ - "get", - "class" - ], - [ - "atm" - ], - [ - "literal", - "bank" - ], - [ - "get", - "class" - ] - ], - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14 - }, - "paint": { - "text-color": "#725A51", - "text-halo-color": "#fff", - "icon-color": "#725A51", - "icon-halo-color": "#fff", - "icon-halo-width": 2, - "icon-halo-blur": 1, - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "poi_tu_film", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 14, - "filter": [ - "match", - [ - "get", - "name" - ], - [ - "der tu film" - ], - true, - false - ], - "layout": { - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-image": "cinema" - }, - "paint": { - "text-color": "rgba(102, 96, 190, 1.0)", - "text-halo-color": "#fff", - "icon-color": "rgba(102, 96, 190, 1.0)", - "icon-halo-color": "#fff", - "icon-halo-width": 2, - "icon-halo-blur": 1, - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "poi_food", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 16, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "restaurant", - "fast-food", - "grocery", - "ice-cream", - "cafe", - "alcohol-shop", - "bar", - "beer", - "bakery" - ], - [ - "!", - [ - "has", - "level" - ] - ], - false - ], - "layout": { - "icon-image": [ - "match", - [ - "get", - "subclass" - ], - [ - "fast_food" - ], - [ - "literal", - "fast-food" - ], - [ - "get", - "class" - ] - ], - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14 - }, - "paint": { - "text-color": "#D97201", - "text-halo-color": "#fff", - "icon-color": "#D97201", - "icon-halo-color": "#fff", - "icon-halo-width": 2, - "icon-halo-blur": 1, - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "poi_library", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 16, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "library" - ], - [ - "!", - [ - "has", - "level" - ] - ], - false - ], - "layout": { - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-image": "library" - }, - "paint": { - "text-halo-color": "#fff", - "icon-color": "rgba(20, 39, 87, 1)", - "icon-halo-color": "#fff", - "icon-halo-width": 2, - "icon-halo-blur": 1, - "text-halo-width": 1, - "text-halo-blur": 1, - "text-color": "rgba(20, 39, 87, 1)" - } - }, - { - "id": "poi_emergency", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 15, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "fire_station", - "hospital" - ], - true, - false - ], - "layout": { - "icon-image": [ - "match", - [ - "get", - "class" - ], - [ - "fire_station" - ], - [ - "literal", - "fire-station" - ], - [ - "get", - "class" - ] - ], - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14 - }, - "paint": { - "text-color": "#BA3827", - "text-halo-color": "#fff", - "icon-color": "#BA3827", - "icon-halo-color": "#fff", - "text-halo-width": 1, - "text-halo-blur": 1, - "icon-halo-width": 2, - "icon-halo-blur": 1 - } - }, - { - "id": "poi_transit_bus", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 15, - "filter": [ - "==", - [ - "get", - "class" - ], - "bus" - ], - "layout": { - "icon-image": "bus-munich", - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-allow-overlap": false, - "icon-optional": true, - "icon-size": 1.3, - "icon-offset": [ - -2, - -1 - ] - }, - "paint": { - "text-color": "#085d6f", - "text-halo-color": "#fff", - "text-halo-width": 1, - "icon-color": "#085d6f", - "icon-halo-color": "#fff", - "icon-halo-blur": 1, - "icon-halo-width": 2, - "text-halo-blur": 1 - } - }, - { - "id": "poi_transit_tram", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 15, - "filter": [ - "all", - [ - "match", - [ - "get", - "class" - ], - [ - "airport", - "rail", - "railway" - ], - true, - false - ], - [ - "==", - [ - "get", - "subclass" - ], - "tram_stop" - ] - ], - "layout": { - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-allow-overlap": false, - "text-allow-overlap": false, - "text-ignore-placement": false, - "icon-image": "tram-munich", - "icon-size": 1.2, - "icon-offset": [ - -2, - 0 - ] - }, - "paint": { - "text-color": "#d92727", - "text-halo-color": "#fff", - "icon-color": "#d92727", - "icon-halo-color": "#fff", - "text-halo-blur": 1, - "text-halo-width": 1, - "icon-halo-blur": 1, - "icon-halo-width": 4 - } - }, - { - "id": "poi_transit_important", - "type": "symbol", - "source": "nav", - "source-layer": "poi", - "minzoom": 13, - "filter": [ - "all", - [ - "in", - "class", - "airport", - "rail", - "railway" - ], - [ - "!in", - "subclass", - "halt", - "tram_stop" - ] - ], - "layout": { - "icon-image": [ - "match", - [ - "get", - "subclass" - ], - [ - "subway" - ], - [ - "literal", - "u-bahn-munich" - ], - [ - "station" - ], - [ - "literal", - "s-bahn-munich" - ], - [ - "get", - "class" - ] - ], - "text-anchor": "left", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 9, - "text-offset": [ - 0.9, - 0 - ], - "text-size": 14, - "icon-allow-overlap": false, - "text-allow-overlap": false, - "text-ignore-placement": false, - "icon-offset": [ - -2, - 0 - ], - "icon-size": 1.4 - }, - "paint": { - "text-color": [ - "match", - [ - "get", - "subclass" - ], - [ - "subway" - ], - [ - "literal", - "#086ab1" - ], - [ - "station" - ], - [ - "literal", - "#00894d" - ], - [ - "literal", - "rgba(0, 109, 255, 1)" - ] - ], - "text-halo-color": "#fff", - "icon-color": [ - "match", - [ - "get", - "subclass" - ], - [ - "subway" - ], - [ - "literal", - "#086ab1" - ], - [ - "station" - ], - [ - "literal", - "#00894d" - ], - [ - "literal", - "rgba(0, 109, 255, 1)" - ] - ], - "icon-halo-color": "#fff", - "text-halo-blur": 1, - "text-halo-width": 1, - "icon-halo-blur": 1, - "icon-halo-width": 5 - } - }, - { - "id": "road_label", - "type": "symbol", - "source": "nav", - "source-layer": "transportation_name", - "filter": [ - "all", - [ - "!=", - "subclass", - "corridor" - ] - ], - "layout": { - "symbol-placement": "line", - "text-anchor": "center", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Regular" - ], - "text-offset": [ - 0, - 0.15 - ], - "text-size": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 13, - 12, - 14, - 13 - ] - }, - "paint": { - "text-color": "#765", - "text-halo-blur": 0.5, - "text-halo-width": 1, - "text-opacity": 1 - } - }, - { - "id": "road_shield", - "type": "symbol", - "source": "nav", - "source-layer": "transportation_name", - "minzoom": 7, - "filter": [ - "all", - [ - "<=", - [ - "get", - "ref_length" - ], - 6 - ], - [ - "!=", - [ - "get", - "subclass" - ], - [ - "literal", - "junction" - ] - ], - [ - "!=", - [ - "get", - "class" - ], - [ - "literal", - "path" - ] - ] - ], - "layout": { - "icon-rotation-alignment": "viewport", - "symbol-placement": [ - "step", - [ - "zoom" - ], - "point", - 11, - "line" - ], - "symbol-spacing": 500, - "text-field": [ - "to-string", - [ - "get", - "ref" - ] - ], - "text-font": [ - "Roboto Regular" - ], - "text-offset": [ - 0, - 0.1 - ], - "text-rotation-alignment": "viewport", - "text-size": 10, - "icon-text-fit": "both", - "icon-size": 1.4, - "icon-anchor": "center", - "icon-padding": 3, - "icon-offset": [ - 0, - -0.5 - ], - "icon-image": "rounded_rectangle" - }, - "paint": { - "icon-color": [ - "match", - [ - "slice", - [ - "get", - "ref" - ], - 0, - 1 - ], - "A", - "#0841bf", - "B", - "#e6c100", - "#008000" - ], - "icon-halo-color": [ - "match", - [ - "slice", - [ - "get", - "ref" - ], - 0, - 1 - ], - "B", - "gray", - "white" - ], - "text-color": [ - "match", - [ - "slice", - [ - "get", - "ref" - ], - 0, - 1 - ], - "B", - "black", - "white" - ], - "icon-halo-width": 4, - "icon-halo-blur": 1 - } - }, - { - "id": "place_other", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "maxzoom": 14, - "filter": [ - "match", - [ - "get", - "class" - ], - [ - "hamlet", - "island", - "islet", - "neighbourhood", - "quarter", - "suburb" - ], - true, - false - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-letter-spacing": 0.1, - "text-max-width": 9, - "text-size": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 12, - 10, - 15, - 14 - ], - "text-transform": "uppercase" - }, - "paint": { - "text-color": "#633", - "text-halo-color": "rgba(255,255,255,0.8)", - "text-halo-width": 1.2 - } - }, - { - "id": "place_village", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "filter": [ - "==", - [ - "get", - "class" - ], - "village" - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Regular" - ], - "text-max-width": 8, - "text-size": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 10, - 12, - 15, - 22 - ] - }, - "paint": { - "text-color": "#333", - "text-halo-color": "rgba(255,255,255,0.8)", - "text-halo-width": 1.2 - } - }, - { - "id": "place_town", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "filter": [ - "==", - [ - "get", - "class" - ], - "town" - ], - "layout": { - "icon-image": [ - "step", - [ - "zoom" - ], - "circle", - 8, - "" - ], - "text-anchor": "bottom", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Regular" - ], - "text-max-width": 8, - "text-offset": [ - 0, - 0 - ], - "text-size": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 7, - 12, - 11, - 16 - ] - }, - "paint": { - "text-color": "#333", - "text-halo-color": "rgba(255,255,255,0.8)", - "text-halo-width": 1.2 - } - }, - { - "id": "place_city", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "minzoom": 5, - "filter": [ - "==", - [ - "get", - "class" - ], - "city" - ], - "layout": { - "icon-image": [ - "step", - [ - "zoom" - ], - "dot_9", - 8, - "" - ], - "text-anchor": "bottom", - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Medium" - ], - "text-max-width": 8, - "text-offset": [ - 0, - 0 - ], - "text-size": [ - "interpolate", - [ - "exponential", - 1.2 - ], - [ - "zoom" - ], - 7, - 14, - 11, - 24 - ], - "icon-allow-overlap": true, - "icon-optional": false - }, - "paint": { - "text-color": "#333", - "text-halo-color": "rgba(255,255,255,0.8)", - "text-halo-width": 1.2 - } - }, - { - "id": "admin_state", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "minzoom": 4, - "maxzoom": 7, - "filter": [ - "==", - [ - "get", - "class" - ], - "state" - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-size": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 4, - 11, - 6, - 15 - ], - "text-transform": "uppercase" - }, - "paint": { - "text-color": "#633", - "text-halo-color": "rgba(255,255,255,0.7)", - "text-halo-width": 1 - } - }, - { - "id": "admin_country_3", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "minzoom": 2.5, - "filter": [ - "all", - [ - ">=", - [ - "get", - "rank" - ], - 3 - ], - [ - "==", - [ - "get", - "class" - ], - "country" - ] - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 6.25, - "text-size": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 3, - 11, - 7, - 17 - ], - "text-transform": "none" - }, - "paint": { - "text-color": "#334", - "text-halo-blur": 1, - "text-halo-color": "rgba(255,255,255,0.8)", - "text-halo-width": 1 - } - }, - { - "id": "admin_country_2", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "minzoom": 2, - "filter": [ - "all", - [ - "==", - [ - "get", - "rank" - ], - 2 - ], - [ - "==", - [ - "get", - "class" - ], - "country" - ] - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 6.25, - "text-size": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 2, - 11, - 5, - 17 - ], - "text-transform": "none" - }, - "paint": { - "text-color": "#334", - "text-halo-blur": 1, - "text-halo-color": "rgba(255,255,255,0.8)", - "text-halo-width": 1 - } - }, - { - "id": "admin_country_1", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "minzoom": 1, - "filter": [ - "all", - [ - "==", - [ - "get", - "rank" - ], - 1 - ], - [ - "==", - [ - "get", - "class" - ], - "country" - ] - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-max-width": 6.25, - "text-size": [ - "interpolate", - [ - "linear" - ], - [ - "zoom" - ], - 1, - 11, - 4, - 17 - ], - "text-transform": "none" - }, - "paint": { - "text-color": "#334", - "text-halo-blur": 1, - "text-halo-color": "rgba(255,255,255,0.8)", - "text-halo-width": 1 - } - }, - { - "id": "admin_continent", - "type": "symbol", - "source": "nav", - "source-layer": "place", - "maxzoom": 1, - "filter": [ - "==", - [ - "get", - "class" - ], - "continent" - ], - "layout": { - "text-field": [ - "to-string", - [ - "get", - "name_de" - ] - ], - "text-font": [ - "Roboto Condensed Italic" - ], - "text-size": 13, - "text-transform": "uppercase", - "text-justify": "center" - }, - "paint": { - "text-color": "#633", - "text-halo-color": "rgba(255,255,255,0.7)", - "text-halo-width": 1 - } - }, - { - "id": "platform", - "type": "fill", - "source": "nav", - "source-layer": "transportation", - "minzoom": 16, - "filter": [ - "all", - [ - "==", - "subclass", - "platform" - ], - [ - "==", - "class", - "path" - ] - ], - "paint": { - "fill-color": "rgba(143, 139, 139, 0.2)", - "fill-opacity": { - "stops": [ - [ - 16, - 0 - ], - [ - 18, - 1 - ] - ] - } - } - } - ], - "layout": { - "icon-image": [ - "match", - [ - "slice", - [ - "get", - "ref" - ], - 0, - 1 - ], - "A", - "rounded_rombos", - [ - "literal", - "rounded_rectangle" - ] - ], - "icon-rotation-alignment": "viewport", - "symbol-placement": [ - "step", - [ - "zoom" - ], - "point", - 11, - "line" - ], - "symbol-spacing": 500, - "text-field": [ - "to-string", - [ - "get", - "ref" - ] - ], - "text-font": [ - "Roboto Regular" - ], - "text-offset": [ - 0, - 0.1 - ], - "text-rotation-alignment": "viewport", - "text-size": 10, - "icon-text-fit": "both", - "icon-size": 1.4, - "icon-anchor": "center", - "icon-padding": 3, - "icon-offset": [ - 0, - -0.5 - ] - }, - "paint": { - "icon-color": [ - "match", - [ - "slice", - [ - "get", - "ref" - ], - 0, - 1 - ], - "A", - "#0841bf", - "B", - "#e6c100", - "#008000" - ], - "icon-halo-color": [ - "match", - [ - "slice", - [ - "get", - "ref" - ], - 0, - 1 - ], - "A", - "black", - "black" - ], - "text-color": [ - "match", - [ - "slice", - [ - "get", - "ref" - ], - 0, - 1 - ], - "A", - "white", - "black" - ], - "icon-halo-width": 3, - "icon-halo-blur": 0 - } -} diff --git a/resources/documentation/Dependencies.md b/resources/documentation/Dependencies.md index 2f1d655c3..5edf077da 100644 --- a/resources/documentation/Dependencies.md +++ b/resources/documentation/Dependencies.md @@ -24,7 +24,7 @@ You probably already have it, but if not, install it using your package manager. We deploy our project using docker containers. This means, that if you have docker installed, you can: -- Run a part of the project like the `server`, our `tileserver` or the search engine `meilisearch` locally +- Run a part of the project like the `server`, `webclient` or the search engine `meilisearch` locally - Test deployment-linked changes locally To get started with docker, you can follow the [official tutorial](https://docs.docker.com/get-started/). @@ -67,6 +67,7 @@ To install Rust, you can use [rustup](https://rustup.rs/). The server uses OpenSSL to verify TLS certificates. On Debian-based systems like Ubuntu, you can install it with: + ```bash sudo apt-get install build-essential pkg-config openssl libssl-dev ``` diff --git a/server/README.md b/server/README.md index bbf0c6f33..a6ab76de7 100644 --- a/server/README.md +++ b/server/README.md @@ -14,10 +14,11 @@ our project. We have a few API endpoints which require additional dependencies. -As a general rule of thumb, if you probably want to **skip the tileserver**, but need to **do the SQLite Database** and -**MeiliSearch** setup. -The reason for this is, that the `preview` endpoint is the only endpoint, which requires the tileserver and said -endpoint is a non-essential part of the project. +As a general rule of thumb, need to **do the Database** and **MeiliSearch** setup. + +The `preview` endpoint is the only endpoint, which requires the tileserver. +Because of the data required for download and how non-essential this part is, it is only provided via the production +instance. #### How to Set up the Databases @@ -86,11 +87,6 @@ cargo sqlx migrate run --database-url postgres://postgres:CHANGE_ME@localhost:54 cargo sqlx prepare --database-url postgres://postgres:CHANGE_ME@localhost:5432/postgres ``` -### How to Set up the tileserver (needed for the `preview` endpoint) - -To set up your tileserver, head over to the [`map`](https://github.com/TUM-Dev/NavigaTUM/tree/main/map) folder and -follow the instructions there. - ### API-Changes #### Editing diff --git a/server/src/external/download_map_image.rs b/server/src/external/download_map_image.rs index 01c1306a6..809bcfaf9 100644 --- a/server/src/external/download_map_image.rs +++ b/server/src/external/download_map_image.rs @@ -96,7 +96,7 @@ impl MapImageDownloadTask { #[tracing::instrument] async fn download_map_image(location: TileLocation) -> anyhow::Result> { let url = format!( - "https://nav.tum.de/maps/styles/navigatum-basemap/{z}/{x}/{y}@2x.png", + "https://nav.tum.de/tiles/render/navigatum-basemap/{z}/{x}/{y}@2x.png", x = location.x, y = location.y, z = location.z diff --git a/webclient/app/components/DetailsInteractiveMap.vue b/webclient/app/components/DetailsInteractiveMap.vue index fe0434e7a..a6ace12ae 100644 --- a/webclient/app/components/DetailsInteractiveMap.vue +++ b/webclient/app/components/DetailsInteractiveMap.vue @@ -97,9 +97,7 @@ function initMap(containerId: string): Map { preserveDrawingBuffer: false, }, - // preview of the following style is available at - // https://nav.tum.de/maps/ - style: `${runtimeConfig.public.mapsURL}/maps/styles/navigatum-basemap/style.json`, + style: "/navigatum-basemap.json", center: [11.5748, 48.14], // Approx Munich zoom: 11, // Zoomed out so that the whole city is visible diff --git a/webclient/app/components/IndoorMap.vue b/webclient/app/components/IndoorMap.vue index 893e54aa4..f0a5984bb 100644 --- a/webclient/app/components/IndoorMap.vue +++ b/webclient/app/components/IndoorMap.vue @@ -80,9 +80,7 @@ async function initMap(containerId: string): Promise { preserveDrawingBuffer: false, }, - // preview of the following style is available at - // https://nav.tum.de/maps/ - style: `${runtimeConfig.public.mapsURL}/maps/styles/navigatum-basemap/style.json`, + style: "/navigatum-basemap.json", center: [11.670099, 48.266921], zoom: zoom.value, diff --git a/webclient/nuxt.config.ts b/webclient/nuxt.config.ts index 332403c7a..942a423dd 100644 --- a/webclient/nuxt.config.ts +++ b/webclient/nuxt.config.ts @@ -9,7 +9,6 @@ export default defineNuxtConfig({ apiURL: "https://nav.tum.de", cdnURL: "https://nav.tum.de", feedbackURL: "https://nav.tum.de", - mapsURL: "https://nav.tum.de", }, }, modules: [ diff --git a/webclient/public/navigatum-basemap.json b/webclient/public/navigatum-basemap.json new file mode 100644 index 000000000..f25dc79df --- /dev/null +++ b/webclient/public/navigatum-basemap.json @@ -0,0 +1,2297 @@ +{ + "version": 8, + "name": "NavigaTUM Basemap", + "metadata": { + "maputnik:license": "https://github.com/maputnik/osm-liberty/blob/gh-pages/LICENSE.md", + "maputnik:renderer": "mbgljs", + "openmaptiles:version": "3.x" + }, + "sources": { + "nav": { + "type": "vector", + "url": "https://nav.tum.de/tiles/openmaptiles,recreational_nodes" + }, + "natural_earth_shaded_relief": { + "maxzoom": 6, + "tileSize": 256, + "tiles": ["https://nav.tum.de/cdn/natural_earth_2_shaded_relief.raster/{z}/{x}/{y}.png"], + "type": "raster" + } + }, + "sprite": "https://nav.tum.de/tiles/sdf_sprite/maki,navigatum", + "glyphs": "https://nav.tum.de/tiles/font/{fontstack}/{range}", + "layers": [ + { + "id": "background", + "type": "background", + "source": "nav", + "paint": { + "background-color": "rgb(239,239,239)" + } + }, + { + "id": "natural_earth", + "type": "raster", + "source": "natural_earth_shaded_relief", + "maxzoom": 6, + "paint": { + "raster-opacity": ["interpolate", ["exponential", 1.5], ["zoom"], 4, 0.7, 6, 0] + } + }, + { + "id": "park", + "type": "fill", + "source": "nav", + "source-layer": "park", + "paint": { + "fill-color": "#d8e8c8", + "fill-opacity": 0.7, + "fill-outline-color": "rgba(95, 208, 100, 1)" + } + }, + { + "id": "park_outline", + "type": "line", + "source": "nav", + "source-layer": "park", + "paint": { + "line-dasharray": [1, 1.5], + "line-color": "rgba(228, 241, 215, 1)" + } + }, + { + "id": "landcover_sand", + "type": "fill", + "source": "nav", + "source-layer": "landcover", + "filter": ["==", ["get", "class"], "sand"], + "paint": { + "fill-color": "rgba(247, 239, 195, 1)" + } + }, + { + "id": "landcover_wood", + "type": "fill", + "source": "nav", + "source-layer": "landcover", + "filter": ["==", ["get", "class"], "wood"], + "paint": { + "fill-antialias": false, + "fill-color": "hsla(98,61%,72%,0.7)", + "fill-opacity": 0.4 + } + }, + { + "id": "landcover_grass", + "type": "fill", + "source": "nav", + "source-layer": "landcover", + "filter": ["==", ["get", "class"], "grass"], + "paint": { + "fill-antialias": false, + "fill-color": "rgba(176, 213, 154, 1)", + "fill-opacity": 0.3 + } + }, + { + "id": "landcover_ice", + "type": "fill", + "source": "nav", + "source-layer": "landcover", + "filter": ["==", ["get", "class"], "ice"], + "paint": { + "fill-antialias": false, + "fill-color": "rgba(224, 236, 236, 1)", + "fill-opacity": 0.8 + } + }, + { + "id": "landcover_trees", + "type": "circle", + "source": "nav", + "source-layer": "recreational_nodes", + "minzoom": 17, + "filter": ["==", ["get", "natural"], "tree"], + "paint": { + "circle-color": "rgba(94, 180, 100, 0.61)", + "circle-radius": { + "stops": [ + [17, 5], + [18, 15], + [19, 30], + [20, 60], + [21, 120], + [22, 240], + [23, 480] + ] + }, + "circle-opacity": { + "stops": [ + [17, 0.1], + [18, 0.3], + [19, 0.4] + ] + }, + "circle-blur": 0.4 + } + }, + { + "id": "landuse_residential", + "type": "fill", + "source": "nav", + "source-layer": "landuse", + "maxzoom": 8, + "filter": ["==", ["get", "class"], "residential"], + "paint": { + "fill-color": ["interpolate", ["linear"], ["zoom"], 9, "hsla(0,3%,85%,0.84)", 12, "hsla(35,57%,88%,0.49)"] + } + }, + { + "id": "landuse_pitch", + "type": "fill", + "source": "nav", + "source-layer": "landuse", + "filter": ["==", "class", "pitch"], + "paint": { + "fill-color": "#DEE3CD" + } + }, + { + "id": "landuse_track", + "type": "fill", + "source": "nav", + "source-layer": "landuse", + "filter": ["==", "class", "track"], + "paint": { + "fill-color": "#DEE3CD" + } + }, + { + "id": "landuse_cemetery", + "type": "fill", + "source": "nav", + "source-layer": "landuse", + "filter": ["==", ["get", "class"], "cemetery"], + "paint": { + "fill-color": "hsl(75,37%,81%)" + } + }, + { + "id": "landuse_hospital", + "type": "fill", + "source": "nav", + "source-layer": "landuse", + "filter": ["==", ["get", "class"], "hospital"], + "paint": { + "fill-color": "#fde" + } + }, + { + "id": "landuse_school", + "type": "fill", + "source": "nav", + "source-layer": "landuse", + "filter": ["==", ["get", "class"], "school"], + "paint": { + "fill-color": "rgb(236,238,204)" + } + }, + { + "id": "waterway_tunnel", + "type": "line", + "source": "nav", + "source-layer": "waterway", + "filter": ["==", ["get", "brunnel"], "tunnel"], + "paint": { + "line-color": "#a0c8f0", + "line-dasharray": [3, 3], + "line-gap-width": ["interpolate", ["linear"], ["zoom"], 12, 0, 20, 6], + "line-opacity": 1, + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 8, 1, 20, 2] + } + }, + { + "id": "waterway_river", + "type": "line", + "source": "nav", + "source-layer": "waterway", + "filter": ["all", ["==", ["get", "class"], "river"], ["!=", ["get", "brunnel"], "tunnel"]], + "layout": { + "line-cap": "round" + }, + "paint": { + "line-color": "#a0c8f0", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 11, 0.5, 20, 6] + } + }, + { + "id": "waterway_other", + "type": "line", + "source": "nav", + "source-layer": "waterway", + "filter": ["all", ["!=", ["get", "class"], "river"], ["!=", ["get", "brunnel"], "tunnel"]], + "layout": { + "line-cap": "round" + }, + "paint": { + "line-color": "#a0c8f0", + "line-width": ["interpolate", ["exponential", 1.3], ["zoom"], 13, 0.5, 20, 6] + } + }, + { + "id": "waterway_water", + "type": "fill", + "source": "nav", + "source-layer": "water", + "filter": ["!=", ["get", "brunnel"], "tunnel"], + "paint": { + "fill-color": "rgb(158,189,255)" + } + }, + { + "id": "aeroway_fill", + "type": "fill", + "source": "nav", + "source-layer": "aeroway", + "minzoom": 11, + "filter": ["in", "$type", "Polygon"], + "paint": { + "fill-color": "rgba(229, 228, 224, 1)", + "fill-opacity": 0.7 + } + }, + { + "id": "aeroway_runway", + "type": "line", + "source": "nav", + "source-layer": "aeroway", + "minzoom": 11, + "filter": ["all", ["in", "$type", "LineString"], ["==", ["get", "class"], "runway"]], + "paint": { + "line-color": "#f0ede9", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 11, 3, 20, 16] + } + }, + { + "id": "aeroway_taxiway", + "type": "line", + "source": "nav", + "source-layer": "aeroway", + "minzoom": 11, + "filter": ["all", ["in", "$type", "LineString"], ["==", ["get", "class"], "taxiway"]], + "paint": { + "line-color": "#f0ede9", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 11, 0.5, 20, 6] + } + }, + { + "id": "tunnel_motorway_link_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["==", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "tunnel"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-dasharray": [0.5, 0.25], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 1, 13, 3, 14, 4, 20, 15] + } + }, + { + "id": "tunnel_service_track_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["service", "track"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#cfcdca", + "line-dasharray": [0.5, 0.25], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15, 1, 16, 4, 20, 11] + } + }, + { + "id": "tunnel_link_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "ramp"], 1], ["==", ["get", "brunnel"], "tunnel"]], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 1, 13, 3, 14, 4, 20, 15] + } + }, + { + "id": "tunnel_street_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["street", "street_limited"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 12, 0, 12.5, 1], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 0.5, 13, 1, 14, 4, 20, 15] + } + }, + { + "id": "tunnel_secondary_tertiary_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 8, 1.5, 20, 17] + } + }, + { + "id": "tunnel_trunk_primary_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["primary", "trunk"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0.4, 6, 0.7, 7, 1.75, 20, 22] + } + }, + { + "id": "tunnel_motorway_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["!=", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "tunnel"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-dasharray": [0.5, 0.25], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0.4, 6, 0.7, 7, 1.75, 20, 22] + } + }, + { + "id": "tunnel_path_pedestrian", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["in", "$type", "LineString"], + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["path", "pedestrian"], true, false], + ["!", ["has", "level"]] + ], + "paint": { + "line-color": "hsl(0,0%,100%)", + "line-dasharray": [1, 0.75], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 14, 0.5, 20, 10] + } + }, + { + "id": "tunnel_motorway_link", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["==", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "tunnel"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fc8", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12.5, 0, 13, 1.5, 14, 2.5, 20, 11.5] + } + }, + { + "id": "tunnel_service_track", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["service", "track"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fff", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15.5, 0, 16, 2, 20, 7.5] + } + }, + { + "id": "tunnel_link", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "ramp"], 1], ["==", ["get", "brunnel"], "tunnel"]], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fff4c6", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12.5, 0, 13, 1.5, 14, 2.5, 20, 11.5] + } + }, + { + "id": "tunnel_minor", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "brunnel"], "tunnel"], ["match", ["get", "class"], ["minor"], true, false]], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fff", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 13.5, 0, 14, 2.5, 20, 11.5] + } + }, + { + "id": "tunnel_secondary_tertiary", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fff4c6", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 6.5, 0, 7, 0.5, 20, 10] + } + }, + { + "id": "tunnel_trunk_primary", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "tunnel"], + ["match", ["get", "class"], ["primary", "trunk"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fff4c6", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0, 7, 1, 20, 18] + } + }, + { + "id": "tunnel_motorway", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["!=", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "tunnel"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#ffdaa6", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0, 7, 1, 20, 18] + } + }, + { + "id": "tunnel_major_rail", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "brunnel"], "tunnel"], ["match", ["get", "class"], ["rail"], true, false]], + "paint": { + "line-color": "#bbb", + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14, 0.4, 15, 0.75, 20, 2] + } + }, + { + "id": "tunnel_major_rail_hatching", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "brunnel"], "tunnel"], ["==", ["get", "class"], "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14.5, 0, 15, 3, 20, 8] + } + }, + { + "id": "tunnel_transit_rail", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 16, + "filter": ["all", ["==", ["get", "brunnel"], "tunnel"], ["==", ["get", "class"], "transit"]], + "paint": { + "line-color": "#bbb", + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14, 0.4, 15, 0.75, 20, 2] + } + }, + { + "id": "tunnel_transit_rail_hatching", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 17, + "filter": ["all", ["==", ["get", "brunnel"], "tunnel"], ["==", ["get", "class"], "transit"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14.5, 0, 15, 3, 20, 8] + } + }, + { + "id": "road_major_rail_hatching", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "class"], "rail"] + ], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14.5, 0, 15, 3, 20, 8] + } + }, + { + "id": "road_major_rail", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "class"], "rail"] + ], + "paint": { + "line-color": "#bbb", + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14, 0.4, 15, 0.75, 20, 2] + } + }, + { + "id": "road_bridge_bg", + "type": "fill", + "source": "nav", + "source-layer": "transportation", + "minzoom": 15, + "filter": ["all", ["==", ["get", "brunnel"], "bridge"]], + "paint": { + "fill-color": "rgba(207, 207, 207, 1)", + "fill-antialias": true, + "fill-opacity": { + "stops": [ + [15, 0], + [16, 0.8] + ] + } + } + }, + { + "id": "road_motorway_link_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "class"], "motorway"], + ["==", ["get", "ramp"], 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 1, 13, 3, 14, 4, 20, 15] + } + }, + { + "id": "road_service_track_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 14, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["service", "track"], true, false] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#cfcdca", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15, 1, 16, 4, 20, 11] + } + }, + { + "id": "road_link_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["motorway", "path", "pedestrian", "service", "track"], false, true], + ["==", ["get", "ramp"], 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 1, 13, 3, 14, 4, 20, 15] + } + }, + { + "id": "road_minor_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["in", "$type", "LineString"], + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["minor"], true, false], + ["!=", ["get", "ramp"], 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 12, 0, 12.5, 1], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 0.5, 13, 1, 14, 4, 20, 20] + } + }, + { + "id": "road_secondary_tertiary_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false], + ["!=", ["get", "ramp"], 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 8, 1.5, 20, 17] + } + }, + { + "id": "road_trunk_primary_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["primary", "trunk"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0.4, 6, 0.7, 7, 1.75, 20, 22] + } + }, + { + "id": "road_motorway_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "class"], "motorway"], + ["!=", ["get", "ramp"], 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0.4, 6, 0.7, 7, 1.75, 20, 22] + } + }, + { + "id": "road_motorway_link", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "class"], "motorway"], + ["==", ["get", "ramp"], 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#fc8", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12.5, 0, 13, 1.5, 14, 2.5, 20, 11.5] + } + }, + { + "id": "road_path_steps", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", ["get", "class"], "path"], + ["==", ["get", "subclass"], "steps"], + ["!", ["has", "level"]] + ], + "layout": { + "line-cap": "butt", + "line-join": "bevel", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15.5, 0, 16, 2, 20, 7.5], + "line-opacity": 0.8, + "line-dasharray": [1, 0.7] + } + }, + { + "id": "road_path", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", ["get", "class"], "path"], + ["!=", ["get", "subclass"], "platform"], + ["!=", ["get", "subclass"], "steps"], + ["!", ["has", "level"]] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fff", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15.5, 0, 16, 2, 20, 7.5], + "line-opacity": 0.6 + } + }, + { + "id": "road_service_track", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["service", "track"], true, false] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#fff", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15.5, 0, 16, 2, 20, 7.5] + } + }, + { + "id": "road_link", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "ramp"], 1], + ["match", ["get", "class"], ["motorway", "path", "pedestrian", "service", "track"], false, true] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#fea", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12.5, 0, 13, 1.5, 14, 2.5, 20, 11.5] + } + }, + { + "id": "road_minor", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["in", "$type", "LineString"], + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["minor"], true, false] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#fff", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 13.5, 0, 14, 2.5, 20, 18] + } + }, + { + "id": "road_secondary_tertiary", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "#fea", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 6.5, 0, 8, 0.5, 20, 13] + } + }, + { + "id": "road_trunk_primary", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["match", ["get", "class"], ["primary", "trunk"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fea", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0, 7, 1, 20, 18] + } + }, + { + "id": "road_motorway", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "class"], "motorway"], + ["!=", ["get", "ramp"], 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": ["interpolate", ["linear"], ["zoom"], 5, "hsl(26,87%,62%)", 6, "#fc8"], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0, 7, 1, 20, 18] + } + }, + { + "id": "road_transit_rail", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 14, + "filter": [ + "all", + ["match", ["get", "brunnel"], ["bridge", "tunnel"], false, true], + ["==", ["get", "class"], "transit"] + ], + "paint": { + "line-color": "#bbb", + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14, 0, 15, 1.5, 20, 2] + } + }, + { + "id": "road_transit_rail_hatching", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "minzoom": 17, + "filter": ["all", ["==", ["get", "class"], "platform"], ["has", "level"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14.5, 0, 15, 3, 20, 8] + } + }, + { + "id": "road_one_way_arrow", + "type": "symbol", + "source": "nav", + "source-layer": "transportation", + "minzoom": 16, + "filter": ["==", ["get", "oneway"], 1], + "layout": { + "icon-image": "arrow", + "symbol-placement": "line", + "icon-optional": true, + "icon-size": { + "base": 1, + "stops": [ + [15.5, 0], + [20, 1] + ] + } + }, + "paint": { + "icon-opacity": 0.5 + } + }, + { + "id": "road_one_way_arrow_opposite", + "type": "symbol", + "source": "nav", + "source-layer": "transportation", + "minzoom": 16, + "filter": ["==", ["get", "oneway"], -1], + "layout": { + "icon-image": "arrow", + "symbol-placement": "line", + "icon-rotate": 180, + "icon-optional": true, + "icon-size": { + "base": 1, + "stops": [ + [15.5, 0], + [20, 1] + ] + } + } + }, + { + "id": "bridge_motorway_link_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["==", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "bridge"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 1, 13, 3, 14, 4, 20, 15] + } + }, + { + "id": "bridge_service_track_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "bridge"], + ["match", ["get", "class"], ["service", "track"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#cfcdca", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15, 1, 16, 4, 20, 11] + } + }, + { + "id": "bridge_link_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "class"], "link"], ["==", ["get", "brunnel"], "bridge"]], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 1, 13, 3, 14, 4, 20, 15] + } + }, + { + "id": "bridge_street_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "bridge"], + ["match", ["get", "class"], ["street", "street_limited"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "hsl(36,6%,74%)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 12, 0, 12.5, 1], + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 0.5, 13, 1, 14, 4, 20, 25] + } + }, + { + "id": "bridge_secondary_tertiary_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "bridge"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 8, 1.5, 20, 17] + } + }, + { + "id": "bridge_trunk_primary_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "bridge"], + ["match", ["get", "class"], ["primary", "trunk"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0.4, 6, 0.7, 7, 1.75, 20, 22] + } + }, + { + "id": "bridge_motorway_casing", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["!=", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "bridge"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#e9ac77", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0.4, 6, 0.7, 7, 1.75, 20, 22] + } + }, + { + "id": "bridge_motorway_link", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["==", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "bridge"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fc8", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12.5, 0, 13, 1.5, 14, 2.5, 20, 11.5] + } + }, + { + "id": "bridge_service_track", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "bridge"], + ["match", ["get", "class"], ["service", "track"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fff", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 15.5, 0, 16, 2, 20, 7.5] + } + }, + { + "id": "bridge_link", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "class"], "link"], ["==", ["get", "brunnel"], "bridge"]], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fea", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 12.5, 0, 13, 1.5, 14, 2.5, 20, 11.5] + } + }, + { + "id": "bridge_street", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "brunnel"], "bridge"], ["match", ["get", "class"], ["minor"], true, false]], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fff", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 13.5, 0, 14, 2.5, 20, 18] + } + }, + { + "id": "bridge_secondary_tertiary", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "bridge"], + ["match", ["get", "class"], ["secondary", "tertiary"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fea", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 6.5, 0, 7, 0.5, 20, 10] + } + }, + { + "id": "bridge_trunk_primary", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "brunnel"], "bridge"], + ["match", ["get", "class"], ["primary", "trunk"], true, false] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fea", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0, 7, 1, 20, 18] + } + }, + { + "id": "bridge_motorway", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": [ + "all", + ["==", ["get", "class"], "motorway"], + ["!=", ["get", "ramp"], 1], + ["==", ["get", "brunnel"], "bridge"] + ], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#fc8", + "line-width": ["interpolate", ["exponential", 1.2], ["zoom"], 5, 0, 7, 1, 20, 18] + } + }, + { + "id": "bridge_major_rail", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "class"], "rail"], ["==", ["get", "brunnel"], "bridge"]], + "paint": { + "line-color": "#bbb", + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14, 0.4, 15, 0.75, 20, 2] + } + }, + { + "id": "bridge_major_rail_hatching", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "class"], "rail"], ["==", ["get", "brunnel"], "bridge"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14.5, 0, 15, 3, 20, 8] + } + }, + { + "id": "bridge_transit_rail", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "class"], "transit"], ["==", ["get", "brunnel"], "bridge"]], + "paint": { + "line-color": "#bbb", + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14, 0.4, 15, 0.75, 20, 2] + } + }, + { + "id": "bridge_transit_rail_hatching", + "type": "line", + "source": "nav", + "source-layer": "transportation", + "filter": ["all", ["==", ["get", "class"], "transit"], ["==", ["get", "brunnel"], "bridge"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": ["interpolate", ["exponential", 1.4], ["zoom"], 14.5, 0, 15, 3, 20, 8] + } + }, + { + "id": "building", + "type": "fill", + "source": "nav", + "source-layer": "building", + "minzoom": 12, + "paint": { + "fill-color": "rgba(152, 198, 234, 1)", + "fill-opacity": ["interpolate", ["linear"], ["zoom"], 13, 0, 13.5, 1, 14, 1, 14.5, 0, 16.4, 0, 16.5, 1], + "fill-antialias": true, + "fill-outline-color": ["interpolate", ["linear"], ["zoom"], 13, "hsla(35,6%,79%,0.32)", 14, "hsl(35,6%,79%)"] + } + }, + { + "id": "building-3d", + "type": "fill-extrusion", + "source": "nav", + "source-layer": "building", + "minzoom": 13.5, + "maxzoom": 16.5, + "paint": { + "fill-extrusion-height": ["get", "render_height"], + "fill-extrusion-base": ["get", "render_min_height"], + "fill-extrusion-opacity": [ + "interpolate", + ["linear"], + ["zoom"], + 13.5, + 0, + 14, + 0.8, + 16.4, + 0.8, + 16.5, + 0.1, + 16.6, + 0 + ], + "fill-extrusion-color": ["interpolate", ["linear"], ["zoom"], 13, "#98c6ea", 15, "#64a0c8", 20, "#005293"] + } + }, + { + "id": "boundary_3", + "type": "line", + "source": "nav", + "source-layer": "boundary", + "minzoom": 8, + "filter": ["match", ["get", "admin_level"], [3, 4], true, false], + "layout": { + "line-join": "round" + }, + "paint": { + "line-color": "#9e9cab", + "line-dasharray": [5, 1], + "line-width": ["interpolate", ["linear"], ["zoom"], 4, 0.4, 5, 1, 12, 1.8] + } + }, + { + "id": "boundary_2_z0-4", + "type": "line", + "source": "nav", + "source-layer": "boundary", + "maxzoom": 5, + "filter": ["all", ["==", ["get", "admin_level"], 2], ["!", ["has", "claimed_by"]]], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "hsl(248,1%,41%)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 0, 0.4, 4, 1], + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 1, 5, 1.2, 12, 3] + } + }, + { + "id": "boundary_2_z5-", + "type": "line", + "source": "nav", + "source-layer": "boundary", + "minzoom": 5, + "filter": ["==", ["get", "admin_level"], 2], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "paint": { + "line-color": "hsl(248,1%,41%)", + "line-opacity": ["interpolate", ["linear"], ["zoom"], 0, 0.4, 4, 1], + "line-width": ["interpolate", ["linear"], ["zoom"], 3, 1, 5, 1.2, 12, 3] + } + }, + { + "id": "water_name_line", + "type": "symbol", + "source": "nav", + "source-layer": "waterway", + "filter": ["in", "$type", "LineString"], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Regular"], + "text-max-width": 5, + "text-size": 12, + "symbol-placement": "line" + }, + "paint": { + "text-color": "#5d60be", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1 + } + }, + { + "id": "water_name_point", + "type": "symbol", + "source": "nav", + "source-layer": "water_name", + "filter": ["in", "$type", "Point"], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Regular"], + "text-max-width": 5, + "text-size": 12 + }, + "paint": { + "text-color": "#5d60be", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1 + } + }, + { + "id": "poi_gate", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 17, + "filter": ["match", ["get", "class"], ["gate", "tail_gate"], true, false], + "layout": { + "icon-image": "gate", + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-optional": true + }, + "paint": { + "text-color": "rgba(159, 159, 159, 1)", + "text-halo-color": "#fff", + "icon-color": "rgba(159, 159, 159, 1)", + "icon-halo-color": "#fff", + "text-halo-width": 1, + "text-halo-blur": 1, + "icon-halo-width": 2, + "icon-halo-blur": 1 + } + }, + { + "id": "poi_parking", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 16, + "filter": [ + "match", + ["get", "class"], + ["bicycle_rental", "parking", "bicycle_parking", "motorcycle_parking"], + ["!", ["has", "level"]], + false + ], + "layout": { + "icon-image": [ + "match", + ["get", "class"], + ["bicycle_rental"], + ["literal", "bicycle-share"], + ["bicycle_parking"], + ["literal", "bicycle"], + ["literal", "parking"] + ], + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-size": 1.2 + }, + "paint": { + "text-color": "#4898FF", + "text-halo-color": "#fff", + "icon-color": "#4898FF", + "icon-halo-color": "#fff", + "icon-halo-blur": 1, + "text-halo-width": 1, + "icon-halo-width": 2, + "text-halo-blur": 1, + "icon-opacity": [ + "interpolate", + ["linear"], + ["zoom"], + 16.5, + 0, + 17, + ["min", ["/", ["-", ["literal", 100], ["number", ["get", "rank"]]], ["literal", 70]], ["literal", 1]], + 20, + 1 + ], + "text-opacity": [ + "interpolate", + ["linear"], + ["zoom"], + 16.5, + 0, + 17, + ["min", ["/", ["-", ["literal", 100], ["number", ["get", "rank"]]], ["literal", 70]], ["literal", 1]], + 20, + 1 + ] + } + }, + { + "id": "poi_rest_areas", + "type": "symbol", + "source": "nav", + "source-layer": "recreational_nodes", + "minzoom": 18, + "filter": ["any", ["in", "amenity", "bench", "lounger"], ["==", "leisure", "picnic_table"]], + "layout": { + "icon-optional": true, + "icon-image": [ + "match", + ["get", "amenity"], + ["bench"], + ["literal", "temaki-bench"], + ["lounger"], + ["literal", "temaki-tree-and-bench"], + ["literal", "highway-rest-area"] + ] + }, + "paint": { + "icon-color": "#725A51", + "icon-halo-color": "#fff", + "icon-halo-width": 2, + "icon-halo-blur": 1, + "icon-opacity": { + "stops": [ + [18, 0], + [19, 1] + ] + } + } + }, + { + "id": "poi_office", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 18, + "filter": ["match", ["get", "class"], ["office", "college"], ["!", ["has", "level"]], false], + "layout": { + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14 + }, + "paint": { + "text-color": "rgba(20, 39, 87, 1)", + "text-halo-color": "#fff", + "icon-color": [ + "match", + ["get", "name"], + ["der tu film"], + ["literal", "rgba(20, 39, 87, 1)"], + ["literal", "rgba(0, 0, 0, 1)"] + ], + "icon-halo-color": "#fff", + "text-halo-width": 1, + "text-halo-blur": 1, + "icon-halo-width": 2, + "icon-halo-blur": 1 + } + }, + { + "id": "poi_fuel", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 16, + "filter": ["match", ["get", "class"], ["fuel"], true, false], + "layout": { + "text-anchor": "left", + "text-field": "", + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-image": [ + "match", + ["get", "subclass"], + ["charging_station"], + ["literal", "charging-station"], + ["get", "subclass"] + ] + }, + "paint": { + "text-color": "#4898FF", + "text-halo-color": "#fff", + "icon-color": "#4898FF", + "icon-halo-color": "#fff", + "icon-halo-blur": 1, + "text-halo-width": 1, + "icon-halo-width": 2, + "text-halo-blur": 1 + } + }, + { + "id": "poi_children", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 16, + "filter": ["==", ["get", "class"], "school"], + "layout": { + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-image": "school" + }, + "paint": { + "text-color": "#725A51", + "text-halo-color": "#fff", + "icon-color": "#725A51", + "icon-halo-color": "#fff", + "icon-halo-width": 2, + "icon-halo-blur": 1, + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "poi_sports", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 16, + "filter": ["match", ["get", "class"], ["pitch", "climbing"], true, false], + "layout": { + "icon-image": [ + "match", + ["get", "subclass"], + ["table_tennis"], + ["literal", "table-tennis"], + ["beachvolleyball"], + ["literal", "volleyball"], + ["american_football"], + ["literal", "american-football"], + ["climbing"], + ["literal", "mountain"], + ["multi"], + ["literal", "pitch"], + ["fitness-centre"], + ["literal", "fitness-centre"], + ["literal", "pitch"] + ], + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14 + }, + "paint": { + "text-color": "#77A723", + "text-halo-color": "#fff", + "icon-color": "#77A723", + "icon-halo-color": "#fff", + "icon-halo-width": 2, + "icon-halo-blur": 1, + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "poi_amenity", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 17, + "filter": [ + "match", + ["get", "class"], + ["lodging", "shop", "atm", "museum", "post", "recycling", "bank", "cinema", "theatre"], + ["!", ["has", "level"]], + false + ], + "layout": { + "icon-image": ["match", ["get", "class"], ["atm"], ["literal", "bank"], ["get", "class"]], + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14 + }, + "paint": { + "text-color": "#725A51", + "text-halo-color": "#fff", + "icon-color": "#725A51", + "icon-halo-color": "#fff", + "icon-halo-width": 2, + "icon-halo-blur": 1, + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "poi_tu_film", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 14, + "filter": ["match", ["get", "name"], ["der tu film"], true, false], + "layout": { + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-image": "cinema" + }, + "paint": { + "text-color": "rgba(102, 96, 190, 1.0)", + "text-halo-color": "#fff", + "icon-color": "rgba(102, 96, 190, 1.0)", + "icon-halo-color": "#fff", + "icon-halo-width": 2, + "icon-halo-blur": 1, + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "poi_food", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 16, + "filter": [ + "match", + ["get", "class"], + ["restaurant", "fast-food", "grocery", "ice-cream", "cafe", "alcohol-shop", "bar", "beer", "bakery"], + ["!", ["has", "level"]], + false + ], + "layout": { + "icon-image": ["match", ["get", "subclass"], ["fast_food"], ["literal", "fast-food"], ["get", "class"]], + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14 + }, + "paint": { + "text-color": "#D97201", + "text-halo-color": "#fff", + "icon-color": "#D97201", + "icon-halo-color": "#fff", + "icon-halo-width": 2, + "icon-halo-blur": 1, + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "poi_library", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 16, + "filter": ["match", ["get", "class"], ["library"], ["!", ["has", "level"]], false], + "layout": { + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-image": "library" + }, + "paint": { + "text-halo-color": "#fff", + "icon-color": "rgba(20, 39, 87, 1)", + "icon-halo-color": "#fff", + "icon-halo-width": 2, + "icon-halo-blur": 1, + "text-halo-width": 1, + "text-halo-blur": 1, + "text-color": "rgba(20, 39, 87, 1)" + } + }, + { + "id": "poi_emergency", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 15, + "filter": ["match", ["get", "class"], ["fire_station", "hospital"], true, false], + "layout": { + "icon-image": ["match", ["get", "class"], ["fire_station"], ["literal", "fire-station"], ["get", "class"]], + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14 + }, + "paint": { + "text-color": "#BA3827", + "text-halo-color": "#fff", + "icon-color": "#BA3827", + "icon-halo-color": "#fff", + "text-halo-width": 1, + "text-halo-blur": 1, + "icon-halo-width": 2, + "icon-halo-blur": 1 + } + }, + { + "id": "poi_transit_bus", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 15, + "filter": ["==", ["get", "class"], "bus"], + "layout": { + "icon-image": "bus-munich", + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-allow-overlap": false, + "icon-optional": true, + "icon-size": 1.3, + "icon-offset": [-2, -1] + }, + "paint": { + "text-color": "#085d6f", + "text-halo-color": "#fff", + "text-halo-width": 1, + "icon-color": "#085d6f", + "icon-halo-color": "#fff", + "icon-halo-blur": 1, + "icon-halo-width": 2, + "text-halo-blur": 1 + } + }, + { + "id": "poi_transit_tram", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 15, + "filter": [ + "all", + ["match", ["get", "class"], ["airport", "rail", "railway"], true, false], + ["==", ["get", "subclass"], "tram_stop"] + ], + "layout": { + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-allow-overlap": false, + "text-allow-overlap": false, + "text-ignore-placement": false, + "icon-image": "tram-munich", + "icon-size": 1.2, + "icon-offset": [-2, 0] + }, + "paint": { + "text-color": "#d92727", + "text-halo-color": "#fff", + "icon-color": "#d92727", + "icon-halo-color": "#fff", + "text-halo-blur": 1, + "text-halo-width": 1, + "icon-halo-blur": 1, + "icon-halo-width": 4 + } + }, + { + "id": "poi_transit_important", + "type": "symbol", + "source": "nav", + "source-layer": "poi", + "minzoom": 13, + "filter": ["all", ["in", "class", "airport", "rail", "railway"], ["!in", "subclass", "halt", "tram_stop"]], + "layout": { + "icon-image": [ + "match", + ["get", "subclass"], + ["subway"], + ["literal", "u-bahn-munich"], + ["station"], + ["literal", "s-bahn-munich"], + ["get", "class"] + ], + "text-anchor": "left", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 9, + "text-offset": [0.9, 0], + "text-size": 14, + "icon-allow-overlap": false, + "text-allow-overlap": false, + "text-ignore-placement": false, + "icon-offset": [-2, 0], + "icon-size": 1.4 + }, + "paint": { + "text-color": [ + "match", + ["get", "subclass"], + ["subway"], + ["literal", "#086ab1"], + ["station"], + ["literal", "#00894d"], + ["literal", "rgba(0, 109, 255, 1)"] + ], + "text-halo-color": "#fff", + "icon-color": [ + "match", + ["get", "subclass"], + ["subway"], + ["literal", "#086ab1"], + ["station"], + ["literal", "#00894d"], + ["literal", "rgba(0, 109, 255, 1)"] + ], + "icon-halo-color": "#fff", + "text-halo-blur": 1, + "text-halo-width": 1, + "icon-halo-blur": 1, + "icon-halo-width": 5 + } + }, + { + "id": "road_label", + "type": "symbol", + "source": "nav", + "source-layer": "transportation_name", + "filter": ["all", ["!=", "subclass", "corridor"]], + "layout": { + "symbol-placement": "line", + "text-anchor": "center", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Regular"], + "text-offset": [0, 0.15], + "text-size": ["interpolate", ["linear"], ["zoom"], 13, 12, 14, 13] + }, + "paint": { + "text-color": "#765", + "text-halo-blur": 0.5, + "text-halo-width": 1, + "text-opacity": 1 + } + }, + { + "id": "road_shield", + "type": "symbol", + "source": "nav", + "source-layer": "transportation_name", + "minzoom": 7, + "filter": [ + "all", + ["<=", ["get", "ref_length"], 6], + ["!=", ["get", "subclass"], ["literal", "junction"]], + ["!=", ["get", "class"], ["literal", "path"]] + ], + "layout": { + "icon-rotation-alignment": "viewport", + "symbol-placement": ["step", ["zoom"], "point", 11, "line"], + "symbol-spacing": 500, + "text-field": ["to-string", ["get", "ref"]], + "text-font": ["Roboto Regular"], + "text-offset": [0, 0.1], + "text-rotation-alignment": "viewport", + "text-size": 10, + "icon-text-fit": "both", + "icon-size": 1.4, + "icon-anchor": "center", + "icon-padding": 3, + "icon-offset": [0, -0.5], + "icon-image": "rounded_rectangle" + }, + "paint": { + "icon-color": ["match", ["slice", ["get", "ref"], 0, 1], "A", "#0841bf", "B", "#e6c100", "#008000"], + "icon-halo-color": ["match", ["slice", ["get", "ref"], 0, 1], "B", "gray", "white"], + "text-color": ["match", ["slice", ["get", "ref"], 0, 1], "B", "black", "white"], + "icon-halo-width": 4, + "icon-halo-blur": 1 + } + }, + { + "id": "place_other", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "maxzoom": 14, + "filter": [ + "match", + ["get", "class"], + ["hamlet", "island", "islet", "neighbourhood", "quarter", "suburb"], + true, + false + ], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-letter-spacing": 0.1, + "text-max-width": 9, + "text-size": ["interpolate", ["exponential", 1.2], ["zoom"], 12, 10, 15, 14], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#633", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place_village", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "filter": ["==", ["get", "class"], "village"], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Regular"], + "text-max-width": 8, + "text-size": ["interpolate", ["exponential", 1.2], ["zoom"], 10, 12, 15, 22] + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place_town", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "filter": ["==", ["get", "class"], "town"], + "layout": { + "icon-image": ["step", ["zoom"], "circle", 8, ""], + "text-anchor": "bottom", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Regular"], + "text-max-width": 8, + "text-offset": [0, 0], + "text-size": ["interpolate", ["exponential", 1.2], ["zoom"], 7, 12, 11, 16] + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place_city", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "minzoom": 5, + "filter": ["==", ["get", "class"], "city"], + "layout": { + "icon-image": ["step", ["zoom"], "dot_9", 8, ""], + "text-anchor": "bottom", + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Medium"], + "text-max-width": 8, + "text-offset": [0, 0], + "text-size": ["interpolate", ["exponential", 1.2], ["zoom"], 7, 14, 11, 24], + "icon-allow-overlap": true, + "icon-optional": false + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "admin_state", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "minzoom": 4, + "maxzoom": 7, + "filter": ["==", ["get", "class"], "state"], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-size": ["interpolate", ["linear"], ["zoom"], 4, 11, 6, 15], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#633", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1 + } + }, + { + "id": "admin_country_3", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "minzoom": 2.5, + "filter": ["all", [">=", ["get", "rank"], 3], ["==", ["get", "class"], "country"]], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 6.25, + "text-size": ["interpolate", ["linear"], ["zoom"], 3, 11, 7, 17], + "text-transform": "none" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1 + } + }, + { + "id": "admin_country_2", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "minzoom": 2, + "filter": ["all", ["==", ["get", "rank"], 2], ["==", ["get", "class"], "country"]], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 6.25, + "text-size": ["interpolate", ["linear"], ["zoom"], 2, 11, 5, 17], + "text-transform": "none" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1 + } + }, + { + "id": "admin_country_1", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "minzoom": 1, + "filter": ["all", ["==", ["get", "rank"], 1], ["==", ["get", "class"], "country"]], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-max-width": 6.25, + "text-size": ["interpolate", ["linear"], ["zoom"], 1, 11, 4, 17], + "text-transform": "none" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1 + } + }, + { + "id": "admin_continent", + "type": "symbol", + "source": "nav", + "source-layer": "place", + "maxzoom": 1, + "filter": ["==", ["get", "class"], "continent"], + "layout": { + "text-field": ["to-string", ["get", "name_de"]], + "text-font": ["Roboto Condensed Italic"], + "text-size": 13, + "text-transform": "uppercase", + "text-justify": "center" + }, + "paint": { + "text-color": "#633", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1 + } + }, + { + "id": "platform", + "type": "fill", + "source": "nav", + "source-layer": "transportation", + "minzoom": 16, + "filter": ["all", ["==", "subclass", "platform"], ["==", "class", "path"]], + "paint": { + "fill-color": "rgba(143, 139, 139, 0.2)", + "fill-opacity": { + "stops": [ + [16, 0], + [18, 1] + ] + } + } + } + ], + "layout": { + "icon-image": ["match", ["slice", ["get", "ref"], 0, 1], "A", "rounded_rombos", ["literal", "rounded_rectangle"]], + "icon-rotation-alignment": "viewport", + "symbol-placement": ["step", ["zoom"], "point", 11, "line"], + "symbol-spacing": 500, + "text-field": ["to-string", ["get", "ref"]], + "text-font": ["Roboto Regular"], + "text-offset": [0, 0.1], + "text-rotation-alignment": "viewport", + "text-size": 10, + "icon-text-fit": "both", + "icon-size": 1.4, + "icon-anchor": "center", + "icon-padding": 3, + "icon-offset": [0, -0.5] + }, + "paint": { + "icon-color": ["match", ["slice", ["get", "ref"], 0, 1], "A", "#0841bf", "B", "#e6c100", "#008000"], + "icon-halo-color": ["match", ["slice", ["get", "ref"], 0, 1], "A", "black", "black"], + "text-color": ["match", ["slice", ["get", "ref"], 0, 1], "A", "white", "black"], + "icon-halo-width": 3, + "icon-halo-blur": 0 + } +}