wanderer icon indicating copy to clipboard operation
wanderer copied to clipboard

[Feature Request] Add Open Cycle Maps to default Map Layer

Open bebablub opened this issue 8 months ago • 1 comments

Summary As cyclists are also target users of wanderer it would be useful to have Open Cycle Maps as a additional layer on the layer selection. https://www.thunderforest.com/maps/opencyclemap/

POC I did a little POC by help of github pilot and added it to mapStyles in: web/src/lib/components/trail/map_with_elevation_maplibre.svelte

... { text: "Carto Dark", value: "https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json", thumbnail: "https://basemaps.cartocdn.com/dark_all/1/0/[email protected]", }, { text: "Open Cycle Maps", value: { version: 8, sources: { "opencyclemap-tiles": { type: "raster", tiles: [ "https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=<API_KEY>", ], tileSize: 256, }, }, layers: [ { id: "opencyclemap-layer", type: "raster", source: "opencyclemap-tiles", }, ], }, thumbnail: "https://tile.thunderforest.com/cycle/1/0/0.png", }, ...

This works for me locally. But as you can see theres a API_KEY needed which needs to be stored i guess in some environment variable. As I'm not familiar enough with your project structure to provide a proper PR I created this feature request. Probably you could pick up the work.

EDIT: I tried a little bit around with setting it inside .env file and building it with vite (what actually worked). I guess that because of the API_KEY is needed in frontend it needs to be provided at build time which makes it complex when it comes to the strategy to roll out wanderer by prebuild docker images. Setting it inside the docker-compose file and reading it didn't worked. I saw that there is already a option in settings to configure custom map layer. But unfortunately this is limited to a specific user

Thank you and keep up this great project!

bebablub avatar Apr 19 '25 07:04 bebablub

I opened a PR for this

https://github.com/Flomp/wanderer/pull/302

ykorzikowski avatar May 18 '25 21:05 ykorzikowski

Hey there,

The big problem that I see is that ThunderForest does not provide OpenCycleMaps as a vector tileset but only as a raster map: https://www.thunderforest.com/docs/vector-styles-api/#5/51.51/-0.09

wanderer moved to vector tilesets for performance reasons. What I suggest is that you create your own custom style.json and put it somewhere where you can reference it as a URL from wanderer. Then you can simply add it as a normal tileset via the settings within wanderer.

E.g.:

{
    "version": 8,
    "sources": {
        "ocm-tiles": {
            "type": "raster",
            "tiles": [
                "https://tile.thunderforest.com/cycle/{z}/{x}/{y}.png?apikey=<YOUR_API_KEY_HERE>"
            ],
            "tileSize": 256
        },
        "outdoors": {
            "type": "vector",
            "url": "https://tile.thunderforest.com/thunderforest.outdoors-v2.json?apikey=<YOUR_API_KEY_HERE>",
            "attribution": "<a href=\"https://www.thunderforest.com/\" target=\"_blank\">&copy; Thunderforest</a> <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">&copy; OpenStreetMap contributors</a>"
        }
    },
    "glyphs": "https://tiles.basemaps.cartocdn.com/fonts/{fontstack}/{range}.pbf",
    "layers": [
        {
            "paint": {
                "background-color": "#f2eee7"
            },
            "id": "background",
            "source": "outdoors",
            "source-layer": "background",
            "type": "background"
        },
        {
            "paint": {
                "fill-opacity": 0.9,
                "fill-color": "#a8d4f3"
            },
            "id": "landcover-lowzoom__1",
            "source": "outdoors",
            "source-layer": "landcover-lowzoom",
            "type": "fill",
            "filter": [
                "==",
                [
                    "get",
                    "value"
                ],
                0
            ],
            "minzoom": 0,
            "maxzoom": 5
        },
        {
            "paint": {
                "fill-opacity": 0.9,
                "fill-color": "#daeacb"
            },
            "id": "landcover-lowzoom__2",
            "source": "outdoors",
            "source-layer": "landcover-lowzoom",
            "type": "fill",
            "filter": [
                "in",
                [
                    "get",
                    "value"
                ],
                [
                    "literal",
                    [
                        1,
                        2,
                        3,
                        4,
                        5
                    ]
                ]
            ],
            "minzoom": 0,
            "maxzoom": 9
        },
        {
            "paint": {
                "fill-opacity": 0.9,
                "fill-color": "#ebe5da"
            },
            "id": "landcover-lowzoom__3",
            "source": "outdoors",
            "source-layer": "landcover-lowzoom",
            "type": "fill",
            "filter": [
                "==",
                [
                    "get",
                    "value"
                ],
                13
            ],
            "minzoom": 0,
            "maxzoom": 9
        },
        {
            "paint": {
                "fill-opacity": 0.9,
                "fill-color": "#f5faff"
            },
            "id": "landcover-lowzoom__4",
            "source": "outdoors",
            "source-layer": "landcover-lowzoom",
            "type": "fill",
            "filter": [
                "==",
                [
                    "get",
                    "value"
                ],
                15
            ],
            "minzoom": 0,
            "maxzoom": 9
        },
        {
            "paint": {
                "fill-color": "#daeacb"
            },
            "source-layer": "landuse",
            "id": "parks",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "in",
                [
                    "get",
                    "type"
                ],
                [
                    "literal",
                    [
                        "park",
                        "garden",
                        "common",
                        "golf_course",
                        "pitch",
                        "cemetery",
                        "recreation_ground",
                        "village_green"
                    ]
                ]
            ],
            "minzoom": 9,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#d5e7c4"
            },
            "source-layer": "landuse",
            "id": "parks__1",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "all",
                [
                    "==",
                    [
                        "get",
                        "type"
                    ],
                    "pitch"
                ],
                [
                    "in",
                    [
                        "get",
                        "type"
                    ],
                    [
                        "literal",
                        [
                            "park",
                            "garden",
                            "common",
                            "golf_course",
                            "pitch",
                            "cemetery",
                            "recreation_ground",
                            "village_green"
                        ]
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#efeae1"
            },
            "source-layer": "landuse",
            "id": "built_up",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "in",
                [
                    "get",
                    "type"
                ],
                [
                    "literal",
                    [
                        "industrial",
                        "residential",
                        "commercial"
                    ]
                ]
            ],
            "minzoom": 9,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#f0ebe3"
            },
            "source-layer": "landuse",
            "id": "built_up__1",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "in",
                [
                    "get",
                    "type"
                ],
                [
                    "literal",
                    [
                        "industrial",
                        "residential",
                        "commercial"
                    ]
                ]
            ],
            "minzoom": 13,
            "maxzoom": 14
        },
        {
            "paint": {
                "fill-color": "#f1ede5"
            },
            "source-layer": "landuse",
            "id": "built_up__2",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "in",
                [
                    "get",
                    "type"
                ],
                [
                    "literal",
                    [
                        "industrial",
                        "residential",
                        "commercial"
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#d5e7c4"
            },
            "source-layer": "landcover",
            "id": "woodland__1",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "in",
                [
                    "get",
                    "type"
                ],
                [
                    "literal",
                    [
                        "wood",
                        "forest",
                        "orchard"
                    ]
                ]
            ],
            "minzoom": 9,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#daeacb"
            },
            "source-layer": "landcover",
            "id": "woodland__2",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "in",
                [
                    "get",
                    "type"
                ],
                [
                    "literal",
                    [
                        "scrub",
                        "heath",
                        "grassland",
                        "vineyard",
                        "grass",
                        "meadow"
                    ]
                ]
            ],
            "minzoom": 9,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#f5faff"
            },
            "id": "glacier",
            "source": "outdoors",
            "source-layer": "glacier",
            "type": "fill",
            "minzoom": 9,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#e1e5e1",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    11,
                    2,
                    12,
                    7,
                    14,
                    18
                ]
            },
            "id": "aeroway",
            "source": "outdoors",
            "source-layer": "aeroway",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "aeroway"
                ],
                "runway"
            ],
            "minzoom": 11,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#e1e5e1",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    11,
                    1,
                    12,
                    4,
                    14,
                    6
                ]
            },
            "source-layer": "aeroway",
            "id": "aeroway_taxiway",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "aeroway"
                ],
                "taxiway"
            ],
            "minzoom": 11,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#e9e9e4"
            },
            "id": "aeroway-area",
            "source": "outdoors",
            "source-layer": "aeroway-area",
            "type": "fill",
            "minzoom": 10,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#a8d4f3"
            },
            "id": "ocean",
            "source": "outdoors",
            "source-layer": "ocean",
            "type": "fill",
            "minzoom": 5,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#a8d4f3"
            },
            "id": "water",
            "source": "outdoors",
            "source-layer": "water",
            "type": "fill",
            "filter": [
                "any",
                [
                    "all",
                    [
                        "<",
                        [
                            "zoom"
                        ],
                        11
                    ],
                    [
                        ">",
                        [
                            "get",
                            "way_area"
                        ],
                        [
                            "*",
                            [
                                "^",
                                2,
                                [
                                    "-",
                                    11,
                                    [
                                        "zoom"
                                    ]
                                ]
                            ],
                            100000
                        ]
                    ]
                ],
                [
                    ">=",
                    [
                        "zoom"
                    ],
                    11
                ]
            ],
            "minzoom": 5,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    10,
                    0.3,
                    13,
                    1.2,
                    16,
                    7
                ],
                "line-color": "#a8d4f3"
            },
            "id": "waterway",
            "source": "outdoors",
            "source-layer": "waterway",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "waterway"
                ],
                [
                    "literal",
                    [
                        "river",
                        "canal"
                    ]
                ]
            ],
            "minzoom": 10,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    13,
                    0.9,
                    16,
                    4
                ],
                "line-color": "#a8d4f3"
            },
            "source-layer": "waterway",
            "id": "waterway_small",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "waterway"
                ],
                [
                    "literal",
                    [
                        "stream",
                        "ditch",
                        "drain"
                    ]
                ]
            ],
            "minzoom": 13,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#f2eee7",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    14,
                    1,
                    20,
                    14
                ]
            },
            "id": "water-feature",
            "source": "outdoors",
            "source-layer": "water-feature",
            "type": "line",
            "filter": [
                "all",
                [
                    "in",
                    [
                        "geometry-type"
                    ],
                    [
                        "literal",
                        [
                            "LineString",
                            "MultiLineString"
                        ]
                    ]
                ],
                [
                    "in",
                    [
                        "get",
                        "type"
                    ],
                    [
                        "literal",
                        [
                            "pier",
                            "breakwater",
                            "groyne"
                        ]
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": "#f2eee7"
            },
            "source-layer": "water-feature",
            "id": "water_feature_polygon",
            "source": "outdoors",
            "type": "fill",
            "filter": [
                "all",
                [
                    "in",
                    [
                        "geometry-type"
                    ],
                    [
                        "literal",
                        [
                            "Polygon",
                            "MultiPolygon"
                        ]
                    ]
                ],
                [
                    "in",
                    [
                        "get",
                        "type"
                    ],
                    [
                        "literal",
                        [
                            "pier",
                            "breakwater",
                            "groyne"
                        ]
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-width": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    2,
                    0.5,
                    6,
                    1
                ],
                "line-color": "#bbbbbb"
            },
            "id": "country-line",
            "source": "outdoors",
            "source-layer": "country-line",
            "type": "line",
            "minzoom": 2,
            "maxzoom": 8
        },
        {
            "paint": {
                "line-width": 1,
                "line-color": "#bbbbbb"
            },
            "id": "admin",
            "source": "outdoors",
            "source-layer": "admin",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "admin_level"
                ],
                "2"
            ],
            "minzoom": 8,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#bbbbbb",
                "line-width": 0.5,
                "line-dasharray": [
                    3,
                    3
                ]
            },
            "id": "state-line",
            "source": "outdoors",
            "source-layer": "state-line",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "adm0_a3"
                ],
                [
                    "literal",
                    [
                        "USA",
                        "CAN",
                        "AUS"
                    ]
                ]
            ],
            "minzoom": 3,
            "maxzoom": 9
        },
        {
            "paint": {
                "line-color": "#75bbe5",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    15,
                    1,
                    17,
                    2
                ],
                "line-dasharray": [
                    6,
                    6
                ]
            },
            "id": "ferry",
            "source": "outdoors",
            "source-layer": "ferry",
            "type": "line",
            "minzoom": 15,
            "maxzoom": 22
        },
        {
            "paint": {
                "fill-color": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    13,
                    "#f4e6d5",
                    14,
                    "#f5e9d9"
                ]
            },
            "id": "building",
            "source": "outdoors",
            "source-layer": "building",
            "type": "fill",
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-width": 0.7,
                "line-color": "#d7cdbe"
            },
            "source-layer": "building",
            "id": "building_line",
            "source": "outdoors",
            "type": "line",
            "minzoom": 15,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    2,
                    9,
                    4,
                    16,
                    14.5,
                    22,
                    75
                ]
            },
            "source-layer": "road",
            "id": "road_casing__1",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "highway"
                ],
                [
                    "literal",
                    [
                        "motorway"
                    ]
                ]
            ],
            "minzoom": 7,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    2,
                    9,
                    3,
                    16,
                    14.5,
                    22,
                    75
                ]
            },
            "source-layer": "road",
            "id": "road_casing__2",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "highway"
                ],
                [
                    "literal",
                    [
                        "trunk",
                        "primary"
                    ]
                ]
            ],
            "minzoom": 10,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    2,
                    9,
                    2,
                    16,
                    12.5,
                    22,
                    75
                ]
            },
            "source-layer": "road",
            "id": "road_casing__3",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "secondary"
            ],
            "minzoom": 10,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    1,
                    9,
                    1,
                    16,
                    9,
                    22,
                    45
                ]
            },
            "source-layer": "road",
            "id": "road_casing__4",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "highway"
                ],
                [
                    "literal",
                    [
                        "motorway_link",
                        "trunk_link",
                        "primary_link",
                        "secondary_link"
                    ]
                ]
            ],
            "minzoom": 10,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    3.5,
                    16,
                    8,
                    22,
                    55
                ]
            },
            "source-layer": "road",
            "id": "road_casing__5",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "tertiary"
            ],
            "minzoom": 12,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    13,
                    2.5,
                    16,
                    8,
                    22,
                    55
                ]
            },
            "source-layer": "road",
            "id": "road_casing__6",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "highway"
                ],
                [
                    "literal",
                    [
                        "track",
                        "residential",
                        "unclassified",
                        "living_street"
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    13,
                    3,
                    22,
                    6
                ]
            },
            "source-layer": "road",
            "id": "road_casing__7",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "highway"
                ],
                [
                    "literal",
                    [
                        "service"
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    1,
                    9,
                    2.5,
                    16,
                    12,
                    22,
                    70
                ]
            },
            "id": "road__1",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "motorway"
            ],
            "minzoom": 6,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    0.5,
                    8,
                    1,
                    9,
                    1.5,
                    16,
                    12,
                    22,
                    70
                ]
            },
            "id": "road__2",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "trunk"
            ],
            "minzoom": 7,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    0.5,
                    8,
                    1,
                    9,
                    1.5,
                    16,
                    12,
                    22,
                    70
                ]
            },
            "id": "road__3",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "primary"
            ],
            "minzoom": 8,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    9,
                    0.6,
                    10,
                    2,
                    16,
                    10,
                    22,
                    70
                ]
            },
            "id": "road__4",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "secondary"
            ],
            "minzoom": 9,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    0.5,
                    9,
                    0.5,
                    16,
                    7,
                    22,
                    40
                ]
            },
            "id": "road__5",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "highway"
                ],
                [
                    "literal",
                    [
                        "motorway_link",
                        "trunk_link",
                        "primary_link",
                        "secondary_link"
                    ]
                ]
            ],
            "minzoom": 7,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    11,
                    1,
                    12,
                    2,
                    13,
                    3,
                    16,
                    6,
                    22,
                    50
                ]
            },
            "id": "road__6",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "tertiary"
            ],
            "minzoom": 11,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    0.6,
                    13,
                    1,
                    16,
                    6,
                    22,
                    50
                ]
            },
            "id": "road__7",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "highway"
                ],
                [
                    "literal",
                    [
                        "residential",
                        "unclassified",
                        "living_street"
                    ]
                ]
            ],
            "minzoom": 12,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#f7f7f7",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    0.6,
                    13,
                    1,
                    16,
                    6,
                    22,
                    50
                ]
            },
            "id": "road__8",
            "source": "outdoors",
            "source-layer": "road",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "highway"
                ],
                "track"
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    13,
                    2,
                    22,
                    5
                ]
            },
            "id": "road__9",
            "ref": "road_casing__7"
        },
        {
            "paint": {
                "line-color": "#ffffff",
                "line-width": 2,
                "line-dasharray": [
                    1.5,
                    3
                ]
            },
            "id": "path",
            "source": "outdoors",
            "source-layer": "path",
            "type": "line",
            "filter": [
                "!",
                [
                    "in",
                    [
                        "get",
                        "access"
                    ],
                    [
                        "literal",
                        [
                            "private",
                            "no"
                        ]
                    ]
                ]
            ],
            "minzoom": 16,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": {
                    "base": 1.5,
                    "stops": [
                        [
                            10,
                            1.6
                        ],
                        [
                            18,
                            7
                        ]
                    ]
                }
            },
            "id": "railway__1",
            "source": "outdoors",
            "source-layer": "railway",
            "type": "line",
            "filter": [
                "all",
                [
                    "==",
                    [
                        "get",
                        "railway"
                    ],
                    "rail"
                ],
                [
                    "all",
                    [
                        "!",
                        [
                            "in",
                            [
                                "get",
                                "service"
                            ],
                            [
                                "literal",
                                [
                                    "yard",
                                    "siding",
                                    "spur"
                                ]
                            ]
                        ]
                    ],
                    [
                        "!=",
                        [
                            "get",
                            "tunnel"
                        ],
                        "yes"
                    ]
                ]
            ],
            "minzoom": 10,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": {
                    "base": 1.5,
                    "stops": [
                        [
                            10,
                            1.6
                        ],
                        [
                            18,
                            7
                        ]
                    ]
                }
            },
            "id": "railway__2",
            "source": "outdoors",
            "source-layer": "railway",
            "type": "line",
            "filter": [
                "all",
                [
                    "==",
                    [
                        "get",
                        "railway"
                    ],
                    "subway"
                ],
                [
                    "all",
                    [
                        "!",
                        [
                            "in",
                            [
                                "get",
                                "service"
                            ],
                            [
                                "literal",
                                [
                                    "yard",
                                    "siding",
                                    "spur"
                                ]
                            ]
                        ]
                    ],
                    [
                        "!=",
                        [
                            "get",
                            "tunnel"
                        ],
                        "yes"
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#f2eee7",
                "line-width": {
                    "base": 1,
                    "stops": [
                        [
                            10,
                            0.2
                        ],
                        [
                            18,
                            3
                        ]
                    ]
                },
                "line-dasharray": [
                    4,
                    4
                ]
            },
            "source-layer": "railway",
            "id": "railway_dashes__1",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "all",
                [
                    "==",
                    [
                        "get",
                        "railway"
                    ],
                    "rail"
                ],
                [
                    "all",
                    [
                        "!",
                        [
                            "in",
                            [
                                "get",
                                "service"
                            ],
                            [
                                "literal",
                                [
                                    "yard",
                                    "siding",
                                    "spur"
                                ]
                            ]
                        ]
                    ],
                    [
                        "!=",
                        [
                            "get",
                            "tunnel"
                        ],
                        "yes"
                    ]
                ]
            ],
            "minzoom": 13,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#f2eee7",
                "line-width": {
                    "base": 1,
                    "stops": [
                        [
                            10,
                            0.2
                        ],
                        [
                            18,
                            3
                        ]
                    ]
                },
                "line-dasharray": [
                    4,
                    4
                ]
            },
            "id": "railway_dashes__2",
            "ref": "railway__2"
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": 1,
                "line-dasharray": [
                    4,
                    2
                ]
            },
            "source-layer": "railway",
            "id": "railway_tunnel",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "==",
                [
                    "get",
                    "tunnel"
                ],
                "yes"
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": [
                    "interpolate",
                    [
                        "exponential",
                        1.2
                    ],
                    [
                        "zoom"
                    ],
                    14,
                    0.8,
                    18,
                    1,
                    19,
                    1.5
                ]
            },
            "source-layer": "railway",
            "id": "railway_light_rail",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "all",
                [
                    "in",
                    [
                        "get",
                        "railway"
                    ],
                    [
                        "literal",
                        [
                            "tram",
                            "light_rail",
                            "funicular",
                            "narrow_gauge",
                            "monorail",
                            "preserved"
                        ]
                    ]
                ],
                [
                    "!",
                    [
                        "in",
                        [
                            "get",
                            "service"
                        ],
                        [
                            "literal",
                            [
                                "yard",
                                "siding",
                                "spur"
                            ]
                        ]
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#cccccc",
                "line-width": 1,
                "line-dasharray": [
                    4,
                    2
                ]
            },
            "source-layer": "railway",
            "id": "railway_siding",
            "source": "outdoors",
            "type": "line",
            "filter": [
                "in",
                [
                    "get",
                    "service"
                ],
                [
                    "literal",
                    [
                        "yard",
                        "siding",
                        "spur"
                    ]
                ]
            ],
            "minzoom": 16,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "icon-image": "rail",
                "icon-size": {
                    "stops": [
                        [
                            15,
                            0.5
                        ],
                        [
                            17,
                            0.5
                        ],
                        [
                            22,
                            1
                        ]
                    ]
                },
                "icon-padding": 0,
                "text-optional": true,
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-max-width": 7,
                "text-offset": {
                    "stops": [
                        [
                            15,
                            [
                                0,
                                0.9
                            ]
                        ],
                        [
                            17,
                            [
                                0,
                                1.2
                            ]
                        ],
                        [
                            22,
                            [
                                0,
                                1.6
                            ]
                        ]
                    ]
                },
                "text-padding": 0,
                "text-anchor": "top",
                "text-size": {
                    "stops": [
                        [
                            13,
                            10
                        ],
                        [
                            17,
                            13
                        ]
                    ]
                }
            },
            "paint": {
                "text-color": "#888888",
                "text-halo-color": "#ffffff",
                "text-halo-width": 2
            },
            "id": "railway-station",
            "source": "outdoors",
            "source-layer": "railway-station",
            "type": "symbol",
            "filter": [
                "==",
                [
                    "get",
                    "railway"
                ],
                "station"
            ],
            "minzoom": 13,
            "maxzoom": 22
        },
        {
            "layout": {
                "icon-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    16,
                    0.6,
                    18,
                    1
                ],
                "symbol-placement": "line",
                "icon-image": "oneway",
                "icon-ignore-placement": false,
                "icon-allow-overlap": true,
                "icon-padding": 0,
                "symbol-spacing": {
                    "stops": [
                        [
                            14,
                            30
                        ],
                        [
                            18,
                            60
                        ]
                    ]
                }
            },
            "source-layer": "road-label",
            "id": "oneway",
            "source": "outdoors",
            "type": "symbol",
            "filter": [
                "in",
                [
                    "get",
                    "oneway"
                ],
                [
                    "literal",
                    [
                        "yes",
                        "-1"
                    ]
                ]
            ],
            "minzoom": 16,
            "maxzoom": 22
        },
        {
            "layout": {
                "icon-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    16,
                    0.6,
                    18,
                    1
                ],
                "symbol-placement": "line",
                "icon-image": "oneway-reverse"
            },
            "source-layer": "road-label",
            "id": "oneway__1",
            "source": "outdoors",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "==",
                    [
                        "get",
                        "oneway"
                    ],
                    "-1"
                ],
                [
                    "in",
                    [
                        "get",
                        "oneway"
                    ],
                    [
                        "literal",
                        [
                            "yes",
                            "-1"
                        ]
                    ]
                ]
            ],
            "minzoom": 16,
            "maxzoom": 22
        },
        {
            "layout": {
                "icon-image": "shield",
                "text-field": "{ref}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "icon-text-fit": "both",
                "icon-padding": 30,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    14,
                    9,
                    15,
                    10,
                    18,
                    20
                ],
                "text-letter-spacing": 0.02
            },
            "paint": {
                "text-color": "#444444"
            },
            "source-layer": "road-label",
            "id": "road-ref",
            "source": "outdoors",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "has",
                    "ref"
                ],
                [
                    "any",
                    [
                        "any",
                        [
                            "any",
                            [
                                "in",
                                [
                                    "get",
                                    "highway"
                                ],
                                [
                                    "literal",
                                    [
                                        "trunk",
                                        "motorway"
                                    ]
                                ]
                            ],
                            [
                                "all",
                                [
                                    ">=",
                                    [
                                        "zoom"
                                    ],
                                    11
                                ],
                                [
                                    "==",
                                    [
                                        "get",
                                        "highway"
                                    ],
                                    "primary"
                                ]
                            ]
                        ],
                        [
                            "all",
                            [
                                ">=",
                                [
                                    "zoom"
                                ],
                                12
                            ],
                            [
                                "==",
                                [
                                    "get",
                                    "highway"
                                ],
                                "secondary"
                            ]
                        ]
                    ],
                    [
                        ">=",
                        [
                            "zoom"
                        ],
                        13
                    ]
                ]
            ],
            "minzoom": 9,
            "maxzoom": 22
        },
        {
            "layout": {
                "symbol-placement": "line",
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-letter-spacing": 0.01,
                "text-padding": 0,
                "text-keep-upright": true,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    9.5,
                    15,
                    13,
                    18,
                    20
                ]
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 2,
                "text-color": "#444444"
            },
            "id": "road-label__1",
            "source": "outdoors",
            "source-layer": "road-label",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "in",
                    [
                        "get",
                        "highway"
                    ],
                    [
                        "literal",
                        [
                            "trunk",
                            "primary",
                            "secondary"
                        ]
                    ]
                ],
                [
                    "has",
                    "name"
                ]
            ],
            "minzoom": 12,
            "maxzoom": 22
        },
        {
            "layout": {
                "symbol-placement": "line",
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-letter-spacing": 0.01,
                "text-padding": 0,
                "text-keep-upright": true,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    8,
                    15,
                    11,
                    18,
                    16
                ]
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 2,
                "text-color": "#444444"
            },
            "id": "road-label__2",
            "source": "outdoors",
            "source-layer": "road-label",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "!",
                    [
                        "in",
                        [
                            "get",
                            "highway"
                        ],
                        [
                            "literal",
                            [
                                "trunk",
                                "primary",
                                "secondary"
                            ]
                        ]
                    ]
                ],
                [
                    "has",
                    "name"
                ]
            ],
            "minzoom": 12,
            "maxzoom": 22
        },
        {
            "layout": {
                "symbol-placement": "line",
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-padding": 0,
                "text-keep-upright": true,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    15,
                    8,
                    18,
                    13
                ]
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 2,
                "text-color": "#444444"
            },
            "id": "path-label",
            "source": "outdoors",
            "source-layer": "path-label",
            "type": "symbol",
            "filter": [
                "has",
                "name"
            ],
            "minzoom": 15,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name_with_en}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-line-height": 1.1,
                "text-max-width": 6,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    5,
                    10,
                    7,
                    12
                ]
            },
            "paint": {
                "text-color": "#555555",
                "text-halo-color": "#ffffff",
                "text-halo-width": 1
            },
            "source-layer": "place-label",
            "id": "place_low",
            "source": "outdoors",
            "type": "symbol",
            "minzoom": 4,
            "maxzoom": 6
        },
        {
            "layout": {
                "text-field": [
                    "upcase",
                    [
                        "get",
                        "name"
                    ]
                ],
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-line-height": 1.3,
                "text-max-width": 5,
                "text-letter-spacing": 0.2,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    9.5,
                    14,
                    13,
                    16,
                    18
                ]
            },
            "paint": {
                "text-color": [
                    "interpolate-lab",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    "#888",
                    14,
                    "#444"
                ],
                "text-halo-color": "#ffffff",
                "text-halo-width": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    1,
                    12,
                    2
                ]
            },
            "id": "place-label__1",
            "source": "outdoors",
            "source-layer": "place-label",
            "type": "symbol",
            "filter": [
                "in",
                [
                    "get",
                    "place"
                ],
                [
                    "literal",
                    [
                        "neighbourhood",
                        "suburb"
                    ]
                ]
            ],
            "minzoom": 12,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name_with_en}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-line-height": 1.1,
                "text-max-width": 5,
                "icon-image": "dot",
                "icon-size": {
                    "stops": [
                        [
                            11,
                            1
                        ],
                        [
                            16,
                            2
                        ]
                    ]
                },
                "text-anchor": "bottom",
                "text-offset": [
                    0,
                    -0.5
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    12,
                    14,
                    16
                ]
            },
            "paint": {
                "text-color": "#555555",
                "text-halo-color": "#ffffff",
                "text-halo-width": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    1,
                    12,
                    2
                ]
            },
            "id": "place-label__2",
            "source": "outdoors",
            "source-layer": "place-label",
            "type": "symbol",
            "filter": [
                "==",
                [
                    "get",
                    "place"
                ],
                "village"
            ],
            "minzoom": 11,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name_with_en}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-line-height": 1.1,
                "text-max-width": 6,
                "icon-image": "circle",
                "icon-size": {
                    "stops": [
                        [
                            7,
                            0.35
                        ],
                        [
                            16,
                            0.5
                        ]
                    ]
                },
                "text-anchor": "bottom",
                "text-offset": [
                    0,
                    -0.3
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    8,
                    10,
                    9,
                    12,
                    14,
                    20
                ]
            },
            "paint": {
                "text-color": "#555555",
                "text-halo-color": "#ffffff",
                "text-halo-width": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    1,
                    12,
                    2
                ]
            },
            "id": "place-label__3",
            "source": "outdoors",
            "source-layer": "place-label",
            "type": "symbol",
            "filter": [
                "==",
                [
                    "get",
                    "place"
                ],
                "town"
            ],
            "minzoom": 7,
            "maxzoom": 16
        },
        {
            "layout": {
                "text-field": "{name_with_en}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-line-height": 1.1,
                "text-max-width": 6,
                "icon-image": "circle",
                "icon-size": {
                    "stops": [
                        [
                            4,
                            0.3
                        ],
                        [
                            7,
                            0.4
                        ],
                        [
                            16,
                            0.8
                        ]
                    ]
                },
                "text-anchor": "bottom",
                "text-offset": [
                    0,
                    -0.5
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    5,
                    10,
                    7,
                    12,
                    8,
                    14,
                    9,
                    20
                ]
            },
            "paint": {
                "text-color": "#555555",
                "text-halo-color": "#ffffff",
                "text-halo-width": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    7,
                    1,
                    12,
                    2
                ]
            },
            "id": "place-label__4",
            "source": "outdoors",
            "source-layer": "place-label",
            "type": "symbol",
            "filter": [
                "==",
                [
                    "get",
                    "place"
                ],
                "city"
            ],
            "minzoom": 6,
            "maxzoom": 14
        },
        {
            "layout": {
                "symbol-placement": "line",
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Italic"
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    9.5,
                    18,
                    20
                ],
                "text-keep-upright": true
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 1.4,
                "text-color": "#6cadd4"
            },
            "id": "waterway-label",
            "source": "outdoors",
            "source-layer": "waterway-label",
            "type": "symbol",
            "minzoom": 13,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Italic"
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    10,
                    18,
                    23
                ],
                "text-max-width": 7
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 1.4,
                "text-color": "#6cadd4"
            },
            "id": "water-label",
            "source": "outdoors",
            "source-layer": "water-label",
            "type": "symbol",
            "filter": [
                "any",
                [
                    ">",
                    [
                        "get",
                        "way_area"
                    ],
                    [
                        "*",
                        [
                            "^",
                            2,
                            [
                                "-",
                                14,
                                [
                                    "zoom"
                                ]
                            ]
                        ],
                        100000
                    ]
                ],
                [
                    ">",
                    [
                        "zoom"
                    ],
                    16
                ]
            ],
            "minzoom": 5,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Italic"
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    14,
                    11,
                    18,
                    20
                ],
                "text-max-width": 7
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 1.4,
                "text-color": "#98a48d"
            },
            "id": "landcover-label",
            "source": "outdoors",
            "source-layer": "landcover-label",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "in",
                    [
                        "get",
                        "type"
                    ],
                    [
                        "literal",
                        [
                            "orchard",
                            "vineyard",
                            "wood",
                            "scrub",
                            "heath",
                            "grassland",
                            "forest"
                        ]
                    ]
                ],
                [
                    "any",
                    [
                        ">",
                        [
                            "get",
                            "way_area"
                        ],
                        [
                            "*",
                            [
                                "^",
                                2,
                                [
                                    "-",
                                    12,
                                    [
                                        "zoom"
                                    ]
                                ]
                            ],
                            640000
                        ]
                    ],
                    [
                        ">",
                        [
                            "zoom"
                        ],
                        17
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Italic"
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    14,
                    11,
                    18,
                    20
                ],
                "text-max-width": 7
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 1.4,
                "text-color": "#98a48d"
            },
            "id": "landuse-label",
            "source": "outdoors",
            "source-layer": "landuse-label",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "in",
                    [
                        "get",
                        "type"
                    ],
                    [
                        "literal",
                        [
                            "recreation_ground",
                            "village_green",
                            "cemetery",
                            "park",
                            "golf_course",
                            "pitch",
                            "garden",
                            "common",
                            "cemetery"
                        ]
                    ]
                ],
                [
                    "any",
                    [
                        ">",
                        [
                            "get",
                            "way_area"
                        ],
                        [
                            "*",
                            [
                                "^",
                                2,
                                [
                                    "-",
                                    12,
                                    [
                                        "zoom"
                                    ]
                                ]
                            ],
                            640000
                        ]
                    ],
                    [
                        ">",
                        [
                            "zoom"
                        ],
                        17
                    ]
                ]
            ],
            "minzoom": 14,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Italic"
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    14,
                    12,
                    18,
                    20
                ],
                "text-max-width": 9
            },
            "paint": {
                "text-halo-color": "#ffffff",
                "text-halo-width": 1.4,
                "text-color": "#6cadd4"
            },
            "id": "glacier-label",
            "source": "outdoors",
            "source-layer": "glacier-label",
            "type": "symbol",
            "filter": [
                "any",
                [
                    ">",
                    [
                        "get",
                        "way_area"
                    ],
                    [
                        "*",
                        [
                            "^",
                            2,
                            [
                                "-",
                                12,
                                [
                                    "zoom"
                                ]
                            ]
                        ],
                        5120000
                    ]
                ],
                [
                    ">",
                    [
                        "zoom"
                    ],
                    18
                ]
            ],
            "minzoom": 13,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    3,
                    8,
                    4,
                    12,
                    7,
                    20
                ],
                "text-padding": 10
            },
            "paint": {
                "text-color": "#000000",
                "text-halo-width": 1.5,
                "text-halo-color": "#ffffff"
            },
            "id": "state-label",
            "source": "outdoors",
            "source-layer": "state-label",
            "type": "symbol",
            "filter": [
                "in",
                [
                    "get",
                    "sr_adm0_a3"
                ],
                [
                    "literal",
                    [
                        "USA",
                        "CAN",
                        "AUS"
                    ]
                ]
            ],
            "minzoom": 3,
            "maxzoom": 7
        },
        {
            "layout": {
                "text-field": "{name_en}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-padding": 5,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    3,
                    12,
                    5,
                    17
                ]
            },
            "paint": {
                "text-color": "#000000",
                "text-halo-width": 1.6,
                "text-halo-color": "#ffffff"
            },
            "id": "country-label__1",
            "source": "outdoors",
            "source-layer": "country-label",
            "type": "symbol",
            "filter": [
                "<",
                [
                    "get",
                    "labelrank"
                ],
                4
            ],
            "minzoom": 3,
            "maxzoom": 5
        },
        {
            "layout": {
                "text-field": "{name_en}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-padding": 5,
                "text-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    5,
                    17,
                    6,
                    19
                ]
            },
            "paint": {
                "text-color": "#000000",
                "text-halo-width": 1.6,
                "text-halo-color": "#ffffff"
            },
            "id": "country-label__2",
            "source": "outdoors",
            "source-layer": "country-label",
            "type": "symbol",
            "filter": [
                "<",
                [
                    "get",
                    "labelrank"
                ],
                6
            ],
            "minzoom": 5,
            "maxzoom": 6
        },
        {
            "layout": {
                "text-field": "{name_en}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-padding": 5,
                "text-size": 19
            },
            "paint": {
                "text-color": "#000000",
                "text-halo-width": 1.6,
                "text-halo-color": "#ffffff"
            },
            "id": "country-label__3",
            "source": "outdoors",
            "source-layer": "country-label",
            "type": "symbol",
            "minzoom": 6,
            "maxzoom": 7
        },
        {
            "layout": {
                "icon-image": "airport_large",
                "text-padding": 0,
                "text-anchor": "top",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-size": 14,
                "icon-size": [
                    "interpolate",
                    [
                        "linear"
                    ],
                    [
                        "zoom"
                    ],
                    12,
                    0.6,
                    14,
                    1
                ],
                "text-field": "{iata}",
                "text-offset": [
                    0,
                    0.8
                ]
            },
            "paint": {
                "text-color": "#888888",
                "text-halo-width": 1.4,
                "text-halo-color": "#ffffff"
            },
            "id": "aeroway-label__1",
            "source": "outdoors",
            "source-layer": "aeroway-label",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "any",
                    [
                        "has",
                        "iata"
                    ],
                    [
                        "has",
                        "icao"
                    ]
                ],
                [
                    "==",
                    [
                        "get",
                        "aeroway"
                    ],
                    "aerodrome"
                ]
            ],
            "minzoom": 12,
            "maxzoom": 13
        },
        {
            "layout": {
                "icon-image": "airport_large",
                "text-padding": 0,
                "text-anchor": "top",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-size": 12,
                "text-field": "{name}",
                "icon-size": 0.8,
                "text-offset": [
                    0,
                    1.2
                ]
            },
            "paint": {
                "text-color": "#888888",
                "text-halo-width": 1.4,
                "text-halo-color": "#ffffff"
            },
            "id": "aeroway-label__2",
            "source": "outdoors",
            "source-layer": "aeroway-label",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "all",
                    [
                        "!",
                        [
                            "has",
                            "iata"
                        ]
                    ],
                    [
                        "!",
                        [
                            "has",
                            "icao"
                        ]
                    ]
                ],
                [
                    "==",
                    [
                        "get",
                        "aeroway"
                    ],
                    "aerodrome"
                ]
            ],
            "minzoom": 13,
            "maxzoom": 17
        },
        {
            "layout": {
                "icon-image": "airport_large",
                "text-padding": 0,
                "text-anchor": "top",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-size": 14,
                "icon-size": 1,
                "text-field": "{iata}\n{name}",
                "text-offset": [
                    0,
                    1
                ]
            },
            "paint": {
                "text-color": "#888888",
                "text-halo-width": 1.4,
                "text-halo-color": "#ffffff"
            },
            "id": "aeroway-label__3",
            "source": "outdoors",
            "source-layer": "aeroway-label",
            "type": "symbol",
            "filter": [
                "all",
                [
                    "any",
                    [
                        "has",
                        "iata"
                    ],
                    [
                        "has",
                        "icao"
                    ]
                ],
                [
                    "==",
                    [
                        "get",
                        "aeroway"
                    ],
                    "aerodrome"
                ]
            ],
            "minzoom": 14,
            "maxzoom": 17
        },
        {
            "layout": {
                "text-field": [
                    "case",
                    [
                        "all",
                        [
                            "has",
                            "addr_housenumber"
                        ],
                        [
                            "has",
                            "addr_housename"
                        ]
                    ],
                    [
                        "concat",
                        [
                            "get",
                            "addr_housenumber"
                        ],
                        " ",
                        [
                            "get",
                            "addr_housename"
                        ]
                    ],
                    [
                        "coalesce",
                        [
                            "get",
                            "addr_housenumber"
                        ],
                        [
                            "get",
                            "addr_housename"
                        ]
                    ]
                ],
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-size": 11,
                "text-max-width": 5,
                "text-padding": 10
            },
            "paint": {
                "text-color": "#aaaaaa",
                "text-halo-color": "#ffffff",
                "text-halo-width": 1.4
            },
            "id": "address",
            "source": "outdoors",
            "source-layer": "address",
            "type": "symbol",
            "minzoom": 17,
            "maxzoom": 22
        },
        {
            "paint": {
                "line-color": "#aaaaaa",
                "line-width": 0.2
            },
            "id": "interpolation",
            "source": "outdoors",
            "source-layer": "interpolation",
            "type": "line",
            "minzoom": 17,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "icon-size": {
                    "stops": [
                        [
                            15,
                            0.5
                        ],
                        [
                            17,
                            0.5
                        ],
                        [
                            22,
                            1
                        ]
                    ]
                },
                "icon-padding": 0,
                "text-optional": true,
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-max-width": 7,
                "text-offset": {
                    "stops": [
                        [
                            15,
                            [
                                0,
                                0.9
                            ]
                        ],
                        [
                            17,
                            [
                                0,
                                1.2
                            ]
                        ],
                        [
                            22,
                            [
                                0,
                                1.6
                            ]
                        ]
                    ]
                },
                "text-padding": 0,
                "text-anchor": "top",
                "text-size": {
                    "stops": [
                        [
                            15,
                            9
                        ],
                        [
                            17,
                            11
                        ]
                    ]
                },
                "icon-image": "lodging"
            },
            "paint": {
                "text-color": "#888888",
                "text-halo-color": "#ffffff",
                "text-halo-width": 2
            },
            "id": "poi-label__1",
            "source": "outdoors",
            "source-layer": "poi-label",
            "type": "symbol",
            "filter": [
                "in",
                [
                    "get",
                    "feature"
                ],
                [
                    "literal",
                    [
                        "hotel",
                        "motel",
                        "alpine_hut",
                        "guest_house",
                        "hostel"
                    ]
                ]
            ],
            "minzoom": 16,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "icon-size": {
                    "stops": [
                        [
                            15,
                            0.5
                        ],
                        [
                            17,
                            0.5
                        ],
                        [
                            22,
                            1
                        ]
                    ]
                },
                "icon-padding": 0,
                "text-optional": true,
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-max-width": 7,
                "text-offset": {
                    "stops": [
                        [
                            15,
                            [
                                0,
                                0.9
                            ]
                        ],
                        [
                            17,
                            [
                                0,
                                1.2
                            ]
                        ],
                        [
                            22,
                            [
                                0,
                                1.6
                            ]
                        ]
                    ]
                },
                "text-padding": 0,
                "text-anchor": "top",
                "text-size": {
                    "stops": [
                        [
                            15,
                            9
                        ],
                        [
                            17,
                            11
                        ]
                    ]
                },
                "icon-image": "{feature}"
            },
            "paint": {
                "text-color": "#888888",
                "text-halo-color": "#ffffff",
                "text-halo-width": 2
            },
            "id": "poi-label__2",
            "source": "outdoors",
            "source-layer": "poi-label",
            "type": "symbol",
            "filter": [
                "in",
                [
                    "get",
                    "feature"
                ],
                [
                    "literal",
                    [
                        "restaurant",
                        "cafe",
                        "bar",
                        "pub",
                        "fuel"
                    ]
                ]
            ],
            "minzoom": 16,
            "maxzoom": 22
        },
        {
            "layout": {
                "icon-image": "parking",
                "icon-size": {
                    "stops": [
                        [
                            15,
                            0.5
                        ],
                        [
                            17,
                            0.5
                        ],
                        [
                            22,
                            1
                        ]
                    ]
                }
            },
            "source-layer": "poi-label",
            "id": "parking",
            "source": "outdoors",
            "type": "symbol",
            "filter": [
                "==",
                [
                    "get",
                    "feature"
                ],
                "parking"
            ],
            "minzoom": 17,
            "maxzoom": 22
        },
        {
            "layout": {
                "text-field": "{name}",
                "text-font": [
                    "NotoSans_Regular"
                ],
                "text-max-width": 7,
                "text-padding": 0,
                "text-anchor": "top",
                "text-size": {
                    "stops": [
                        [
                            15,
                            9
                        ],
                        [
                            17,
                            11
                        ]
                    ]
                }
            },
            "paint": {
                "text-color": "#888888",
                "text-halo-color": "#ffffff",
                "text-halo-width": 2
            },
            "source-layer": "poi-label",
            "id": "poi_generic",
            "source": "outdoors",
            "type": "symbol",
            "filter": [
                "in",
                [
                    "get",
                    "feature"
                ],
                [
                    "literal",
                    [
                        "place_of_worship",
                        "hospital",
                        "museum"
                    ]
                ]
            ],
            "minzoom": 16,
            "maxzoom": 22
        },
        {
            "id": "ocm-tiles",
            "type": "raster",
            "source": "ocm-tiles",
            "minzoom": 0,
            "maxzoom": 19
        }
    ]
}

Flomp avatar Jun 19 '25 09:06 Flomp

Hi! Thank you for your reply @Flomp Question: I already saw the map settings and that it's more or less what we need. But there is one thing missing. Is it possible to make a map layer available for all users?

bebablub avatar Jun 23 '25 08:06 bebablub

Added in v0.18.0.

Flomp avatar Aug 24 '25 12:08 Flomp