diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index 9b76f2d6d..dc156eb76 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -96,12 +96,12 @@ jobs: - name: Build Test APK run: | - MAPBOX_DEVELOPER_CONFIG_XML='${{ secrets.MAPBOX_DEVELOPER_CONFIG_XML }}' - if [ -n "${MAPBOX_DEVELOPER_CONFIG_XML}" ]; then - echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml + MAPLIBRE_DEVELOPER_CONFIG_XML='${{ secrets.MAPLIBRE_DEVELOPER_CONFIG_XML }}' + if [ -n "${MAPLIBRE_DEVELOPER_CONFIG_XML}" ]; then + echo "${MAPLIBRE_DEVELOPER_CONFIG_XML}" > MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml make android-ui-test-arm-v8 else - echo "No secrets.MAPBOX_DEVELOPER_CONFIG_XML variable set, skipping apk build..." + echo "No secrets.MAPLIBRE_DEVELOPER_CONFIG_XML variable set, skipping apk build..." fi shell: bash @@ -127,7 +127,7 @@ jobs: --app MapboxGLAndroidSDKTestApp/build/outputs/apk/debug/MapboxGLAndroidSDKTestApp-debug.apk \ --test MapboxGLAndroidSDKTestApp/build/outputs/apk/androidTest/debug/MapboxGLAndroidSDKTestApp-debug-androidTest.apk \ --device-ids sailfish --os-version-ids 26 --locales en --orientations portrait --timeout 20m \ - --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" --directories-to-pull /sdcard --results-dir mapbox-android-sdk-${CIRCLE_BUILD_NUM} + --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" --directories-to-pull /sdcard --results-dir maplibre-android-sdk-${{ github.run_number }} else echo "No secrets.GLCLOUD_SERVICE_JSON variable set, skipping instrumentation tests..." fi diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml index d065fae9c..ec40859dc 100644 --- a/.github/workflows/android-release.yml +++ b/.github/workflows/android-release.yml @@ -98,12 +98,12 @@ jobs: - name: Build release Test App run: | - MAPBOX_DEVELOPER_CONFIG_XML='${{ secrets.MAPBOX_DEVELOPER_CONFIG_XML }}' - if [ -n "${MAPBOX_DEVELOPER_CONFIG_XML}" ]; then - echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml + MAPLIBRE_DEVELOPER_CONFIG_XML='${{ secrets.MAPLIBRE_DEVELOPER_CONFIG_XML }}' + if [ -n "${MAPLIBRE_DEVELOPER_CONFIG_XML}" ]; then + echo "${MAPLIBRE_DEVELOPER_CONFIG_XML}" > MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml make android else - echo "No secrets.MAPBOX_DEVELOPER_CONFIG_XML variable set, skipping apk build..." + echo "No secrets.MAPLIBRE_DEVELOPER_CONFIG_XML variable set, skipping apk build..." fi shell: bash diff --git a/.gitignore b/.gitignore index 7c5833a18..470b86d68 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,13 @@ /new_offline.db *.gpg /.vscode +/platform/android/node_modules /platform/android/signing-key.text +/platform/android/.java-version +*.hprof +/platform/ios/platform/ios/benchmark/assets/tiles/tiles +/platform/ios/platform/ios/benchmark/assets/glyphs/Roboto Regular,Noto Sans Regular +/platform/ios/platform/ios/benchmark/assets/glyphs/Roboto Medium,Noto Sans Regular +/platform/ios/platform/ios/benchmark/assets/glyphs/Roboto Condensed Italic,Noto Sans Italic +/platform/ios/platform/ios/benchmark/assets/glyphs/Noto Sans Regular +/platform/android/key.json diff --git a/CMakeLists.txt b/CMakeLists.txt index c06c4b401..491849c94 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,6 +267,8 @@ add_library( ${PROJECT_SOURCE_DIR}/include/mbgl/util/run_loop.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/size.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/string.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/util/default_style.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/util/tile_server_options.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/thread.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/tileset.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/util/timer.hpp @@ -529,7 +531,7 @@ add_library( ${PROJECT_SOURCE_DIR}/src/mbgl/sprite/sprite_parser.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/sprite/sprite_parser.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/storage/asset_file_source.hpp - ${PROJECT_SOURCE_DIR}/src/mbgl/storage/mbtiles_file_source.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/storage/mbtiles_file_source.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/storage/file_source_manager.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/storage/http_file_source.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/storage/local_file_source.hpp @@ -810,6 +812,8 @@ add_library( ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_cover_impl.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_cover_impl.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_range.hpp + ${PROJECT_SOURCE_DIR}/src/mbgl/util/default_style.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/util/tile_server_options.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/util/tiny_sdf.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/util/tiny_sdf.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/util/token.hpp diff --git a/benchmark/api/query.benchmark.cpp b/benchmark/api/query.benchmark.cpp index 714ca8a1a..8de8cf465 100644 --- a/benchmark/api/query.benchmark.cpp +++ b/benchmark/api/query.benchmark.cpp @@ -32,7 +32,7 @@ public: HeadlessFrontend frontend { { 1000, 1000 }, 1 }; Map map { frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(frontend.getSize()), - ResourceOptions().withCachePath("benchmark/fixtures/api/cache.db").withAssetPath(".").withAccessToken("foobar") }; + ResourceOptions().withCachePath("benchmark/fixtures/api/cache.db").withAssetPath(".").withApiKey("foobar") }; ScreenBox box{{ 0, 0 }, { 1000, 1000 }}; }; diff --git a/benchmark/api/render.benchmark.cpp b/benchmark/api/render.benchmark.cpp index 14cfdd67f..54755f089 100644 --- a/benchmark/api/render.benchmark.cpp +++ b/benchmark/api/render.benchmark.cpp @@ -57,7 +57,7 @@ static void API_renderStill_reuse_map(::benchmark::State& state) { HeadlessFrontend frontend { size, pixelRatio }; Map map { frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(size).withPixelRatio(pixelRatio), - ResourceOptions().withCachePath(cachePath).withAccessToken("foobar") }; + ResourceOptions().withCachePath(cachePath).withApiKey("foobar") }; prepare(map); for (auto _ : state) { @@ -70,7 +70,7 @@ static void API_renderStill_reuse_map_formatted_labels(::benchmark::State& state HeadlessFrontend frontend { size, pixelRatio }; Map map { frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(size).withPixelRatio(pixelRatio), - ResourceOptions().withCachePath(cachePath).withAccessToken("foobar") }; + ResourceOptions().withCachePath(cachePath).withApiKey("foobar") }; prepare(map, util::read_file("benchmark/fixtures/api/style_formatted_labels.json")); for (auto _ : state) { @@ -83,7 +83,7 @@ static void API_renderStill_reuse_map_switch_styles(::benchmark::State& state) { HeadlessFrontend frontend { size, pixelRatio }; Map map { frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(size).withPixelRatio(pixelRatio), - ResourceOptions().withCachePath(cachePath).withAccessToken("foobar") }; + ResourceOptions().withCachePath(cachePath).withApiKey("foobar") }; for (auto _ : state) { prepare(map, { "{}" }); @@ -100,7 +100,7 @@ static void API_renderStill_recreate_map(::benchmark::State& state) { HeadlessFrontend frontend { size, pixelRatio }; Map map { frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(size).withPixelRatio(pixelRatio), - ResourceOptions().withCachePath(cachePath).withAccessToken("foobar") }; + ResourceOptions().withCachePath(cachePath).withApiKey("foobar") }; prepare(map); frontend.render(map); } @@ -114,7 +114,7 @@ static void API_renderStill_recreate_map_2(::benchmark::State& state) { Map map{frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(size).withPixelRatio(pixelRatio), - ResourceOptions().withCachePath(cachePath).withAccessToken("foobar")}; + ResourceOptions().withCachePath(cachePath).withApiKey("foobar")}; prepare_map2(map); frontend.render(map); } @@ -127,7 +127,7 @@ static void API_renderStill_multiple_sources(::benchmark::State& state) { Map map{frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(size).withPixelRatio(pixelRatio), - ResourceOptions().withCachePath(cachePath).withAccessToken("foobar")}; + ResourceOptions().withCachePath(cachePath).withApiKey("foobar")}; prepare(map); auto& style = map.getStyle(); const int kSourcesCount = 50; diff --git a/benchmark/fixtures/api/style.json b/benchmark/fixtures/api/style.json index cf88aeb6e..5270b6cec 100644 --- a/benchmark/fixtures/api/style.json +++ b/benchmark/fixtures/api/style.json @@ -1,3993 +1,6514 @@ { - "version": 8, - "name": "Mapbox Streets", - "metadata": { - "mapbox:autocomposite": true, - "mapbox:type": "default", - "mapbox:groups": { - "1444934828655.3389": { "name": "Aeroways", "collapsed": true }, - "1444933322393.2852": { "name": "POI labels (scalerank 1)", "collapsed": true }, - "1444855786460.0557": { "name": "Roads", "collapsed": true }, - "1444933575858.6992": { "name": "Highway shields", "collapsed": true }, - "1444934295202.7542": { "name": "Admin boundaries", "collapsed": true }, - "1444856151690.9143": { "name": "State labels", "collapsed": true }, - "1444933721429.3076": { "name": "Road labels", "collapsed": true }, - "1444933358918.2366": { "name": "POI labels (scalerank 2)", "collapsed": true }, - "1444933808272.805": { "name": "Water labels", "collapsed": true }, - "1444933372896.5967": { "name": "POI labels (scalerank 3)", "collapsed": true }, - "1444855799204.86": { "name": "Bridges", "collapsed": true }, - "1444856087950.3635": { "name": "Marine labels", "collapsed": true }, - "1456969573402.7817": { "name": "Hillshading", "collapsed": true }, - "1444862510685.128": { "name": "City labels", "collapsed": true }, - "1444855769305.6016": { "name": "Tunnels", "collapsed": true }, - "1456970288113.8113": { "name": "Landcover", "collapsed": true }, - "1444856144497.7825": { "name": "Country labels", "collapsed": true }, - "1444933456003.5437": { "name": "POI labels (scalerank 4)", "collapsed": true } - } - }, - "sources": { - "composite": { "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7", "type": "vector" } - }, - "sprite": "mapbox://sprites/mapbox/streets-v10", - "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", - "visibility": "public", + "id": "streets", + "name": "Streets", + "zoom": 1, + "pitch": 0, + "center": [ + 0, + 0 + ], + "glyphs": "maptiler://fonts/{fontstack}/{range}.pbf", "layers": [ { "id": "background", "type": "background", - "layout": {}, "paint": { - "background-color": { "base": 1, "stops": [ [ 11, "hsl(35, 32%, 91%)" ], [ 13, "hsl(35, 12%, 89%)" ] ] } + "background-color": { + "stops": [ + [ + 6, + "rgba(252, 247, 229, 1)" + ], + [ + 10, + "rgba(252, 247, 229, 1)" + ], + [ + 14, + "rgba(246, 241, 229, 1)" + ], + [ + 15, + "rgba(246, 241, 229, 1)" + ] + ] + } + }, + "layout": { + "visibility": "visible" } }, { - "id": "landcover_snow", + "id": "landcover_cropland", "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "filter": [ "==", "class", "snow" ], - "layout": {}, - "paint": { "fill-color": "hsl(0, 0%, 100%)", "fill-opacity": 0.2, "fill-antialias": false } + "paint": { + "fill-color": "rgba(243, 235, 195, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "crop" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_grassland", + "type": "fill", + "paint": { + "fill-color": "rgba(226, 236, 197, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "grass" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_scrubland", + "type": "fill", + "paint": { + "fill-color": "rgba(199, 230, 179, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "scrub" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_treeland", + "type": "fill", + "paint": { + "fill-color": "rgba(190, 222, 173, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "tree" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_forestland", + "type": "fill", + "paint": { + "fill-color": "rgba(171, 217, 170, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "forest" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_snowland", + "type": "fill", + "paint": { + "fill-color": "hsl(0, 0%, 100%)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "snow" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "park_outline", + "type": "line", + "paint": { + "line-color": "rgba(228, 241, 215, 1)", + "line-opacity": 1, + "line-dasharray": [ + 1, + 1.5 + ] + }, + "filter": [ + "all" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "park" + }, + { + "id": "landuse_residential", + "type": "fill", + "paint": { + "fill-color": { + "base": 1, + "stops": [ + [ + 9, + "rgba(233, 227, 210, 0.80)" + ], + [ + 12, + "rgba(233, 227, 210, 0.55)" + ], + [ + 16, + "rgba(233, 227, 210, 0.35)" + ] + ] + } + }, + "filter": [ + "all", + [ + "in", + "class", + "residential", + "suburbs", + "neighbourhood" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 24, + "metadata": {}, + "source-layer": "landuse" }, { "id": "landcover_wood", "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "wood" ], - "layout": {}, "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, + "fill-color": "hsla(98, 61%, 72%, 0.7)", + "fill-opacity": 0.4, "fill-antialias": false - } - }, - { - "id": "landcover_scrub", - "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "scrub" ], - "layout": {}, - "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, - "fill-antialias": false - } + }, + "filter": [ + "all", + [ + "==", + "class", + "wood" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" }, { "id": "landcover_grass", "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "grass" ], - "layout": {}, "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, + "fill-color": "rgba(224, 232, 201, 1)", + "fill-opacity": 0.3, "fill-antialias": false - } - }, - { - "id": "landcover_crop", - "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "crop" ], - "layout": {}, - "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "national_park", - "type": "fill", - "source": "composite", - "source-layer": "landuse_overlay", - "filter": [ "==", "class", "national_park" ], - "layout": {}, - "paint": { - "fill-color": "hsl(100, 58%, 76%)", - "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 0.5 ] ] } - } - }, - { - "id": "hospital", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "hospital" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(340, 37%, 87%)" ], [ 16, "hsl(340, 63%, 89%)" ] ] } - } - }, - { - "id": "school", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "school" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(50, 47%, 81%)" ], [ 16, "hsl(50, 63%, 84%)" ] ] } - } - }, - { - "id": "park", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "park" ], - "layout": {}, - "paint": { - "fill-color": "hsl(100, 58%, 76%)", - "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 1 ] ] } - } - }, - { - "id": "pitch", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "pitch" ], - "layout": {}, - "paint": { "fill-color": "hsl(100, 57%, 72%)" } - }, - { - "id": "pitch-line", - "type": "line", - "source": "composite", - "source-layer": "landuse", - "minzoom": 15, - "filter": [ "==", "class", "pitch" ], - "layout": { "line-join": "miter" }, - "paint": { "line-color": "hsl(75, 57%, 84%)" } - }, - { - "id": "cemetery", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "cemetery" ], - "layout": {}, - "paint": { "fill-color": "hsl(75, 37%, 81%)" } - }, - { - "id": "industrial", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "industrial" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(230, 15%, 86%)" ], [ 16, "hsl(230, 29%, 89%)" ] ] } - } - }, - { - "id": "sand", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "sand" ], - "layout": {}, - "paint": { "fill-color": "hsl(60, 46%, 87%)" } - }, - { - "id": "hillshade_highlight_bright", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 94 ], - "layout": {}, - "paint": { - "fill-color": "hsl(0, 0%, 100%)", - "fill-opacity": { "stops": [ [ 14, 0.12 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_highlight_med", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 90 ], - "layout": {}, - "paint": { - "fill-color": "hsl(0, 0%, 100%)", - "fill-opacity": { "stops": [ [ 14, 0.12 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_faint", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 89 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.05 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_med", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 78 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.05 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_dark", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 67 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.06 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_extreme", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 56 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.06 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "waterway-river-canal", - "type": "line", - "source": "composite", - "source-layer": "waterway", - "minzoom": 8, - "filter": [ "in", "class", "canal", "river" ], - "layout": { - "line-cap": { "base": 1, "stops": [ [ 0, "butt" ], [ 11, "round" ] ] }, - "line-join": "round" }, - "paint": { - "line-color": "hsl(205, 87%, 76%)", - "line-width": { "base": 1.3, "stops": [ [ 8.5, 0.1 ], [ 20, 8 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 8, 0 ], [ 8.5, 1 ] ] } - } - }, - { - "id": "waterway-small", - "type": "line", - "source": "composite", - "source-layer": "waterway", - "minzoom": 13, - "filter": [ "!in", "class", "canal", "river" ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-color": "hsl(205, 87%, 76%)", - "line-width": { "base": 1.35, "stops": [ [ 13.5, 0.1 ], [ 20, 3 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13, 0 ], [ 13.5, 1 ] ] } - } - }, - { - "id": "water-shadow", - "type": "fill", - "source": "composite", - "source-layer": "water", - "layout": {}, - "paint": { - "fill-color": "hsl(215, 84%, 69%)", - "fill-translate": { "base": 1.2, "stops": [ [ 7, [ 0, 0 ] ], [ 16, [ -1, -1 ] ] ] }, - "fill-translate-anchor": "viewport", - "fill-opacity": 1 - } - }, - { "id": "water", "ref": "water-shadow", "paint": { "fill-color": "hsl(196, 80%, 70%)" } }, - { - "id": "barrier_line-land-polygon", - "type": "fill", - "source": "composite", - "source-layer": "barrier_line", - "filter": [ "all", [ "==", "$type", "Polygon" ], [ "==", "class", "land" ] ], - "layout": {}, - "paint": { "fill-color": "hsl(35, 12%, 89%)" } - }, - { - "id": "barrier_line-land-line", - "type": "line", - "source": "composite", - "source-layer": "barrier_line", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "land" ] ], - "layout": { "line-cap": "round" }, - "paint": { - "line-width": { "base": 1.99, "stops": [ [ 14, 0.75 ], [ 20, 40 ] ] }, - "line-color": "hsl(35, 12%, 89%)" - } - }, - { - "id": "aeroway-polygon", - "type": "fill", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "composite", - "source-layer": "aeroway", - "minzoom": 11, - "filter": [ "all", [ "==", "$type", "Polygon" ], [ "!=", "type", "apron" ] ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "fill-opacity": { "base": 1, "stops": [ [ 11, 0 ], [ 11.5, 1 ] ] } - } - }, - { - "id": "aeroway-runway", - "type": "line", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "composite", - "source-layer": "aeroway", - "minzoom": 9, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "runway" ] ], - "layout": {}, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 9, 1 ], [ 18, 80 ] ] } - } - }, - { - "id": "aeroway-taxiway", - "type": "line", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "composite", - "source-layer": "aeroway", - "minzoom": 9, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "taxiway" ] ], - "layout": {}, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 10, 0.5 ], [ 18, 20 ] ] } - } - }, - { - "id": "building-line", - "type": "line", - "source": "composite", - "source-layer": "building", - "minzoom": 15, - "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], - "layout": {}, - "paint": { - "line-color": "hsl(35, 6%, 79%)", - "line-width": { "base": 1.5, "stops": [ [ 15, 0.75 ], [ 20, 3 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] } - } - }, - { - "id": "building", - "type": "fill", - "source": "composite", - "source-layer": "building", - "minzoom": 15, - "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15, "hsl(35, 11%, 88%)" ], [ 16, "hsl(35, 8%, 85%)" ] ] }, - "fill-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] }, - "fill-outline-color": "hsl(35, 6%, 79%)" - } - }, - { - "id": "tunnel-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "tunnel-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "tunnel-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "trunk_link" ] + "==", + "class", + "grass" ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-dasharray": [ 3, 3 ] - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" }, { - "id": "tunnel-street_limited-case", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street_limited-low", + "id": "landuse_cemetery", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } + "fill-color": "hsl(75, 37%, 81%)" + }, + "filter": [ + "==", + "class", + "cemetery" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-street-case", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street-low", + "id": "landuse_hospital", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } + "fill-color": "rgba(249, 225, 220, 1)" + }, + "filter": [ + "==", + "class", + "hospital" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "id": "landuse_school", + "type": "fill", + "paint": { + "fill-color": "rgb(236,238,204)" + }, + "filter": [ + "==", + "class", + "school" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" + }, + { + "id": "landuse_stadium", + "type": "fill", + "paint": { + "fill-color": "rgb(236,238,204)" + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "in", "class", "secondary", "tertiary" ], [ "==", "structure", "tunnel" ] ] + [ + "in", + "class", + "stadium", + "pitch", + "track" + ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(230, 19%, 75%)" - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "id": "landuse_garages", + "type": "fill", + "paint": { + "fill-color": "rgba(236, 236, 236, 1)" + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "==", "structure", "tunnel" ] ] + [ + "in", + "class", + "garages" + ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(230, 19%, 75%)" - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, + "id": "landuse_dam", + "type": "fill", + "paint": { + "fill-color": "rgba(209, 212, 190, 1)" + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk_link" ] ] + [ + "in", + "class", + "dam" + ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ] - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-motorway_link-case", + "id": "waterway_tunnel", "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway_link" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": 1, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": 1, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 2, + 4 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 14, + "source-layer": "waterway" + }, + { + "id": "waterway_river", + "type": "line", + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 0.5 + ], + [ + 20, + 6 + ] ] } - } - }, - { - "id": "tunnel-path", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + }, "filter": [ "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "==", "class", "path" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "steps" ] + "==", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "!=", + "intermittent", + 1 ] ], - "layout": { "line-join": "round" }, + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" + }, + { + "id": "waterway_river_intermittent", + "type": "line", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 0.5 + ], + [ + 20, + 6 + ] + ] }, - "line-color": "hsl(35, 26%, 95%)", - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "tunnel-steps", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "line-dasharray": [ + 3, + 2 + ] + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "steps" ] ] + [ + "==", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "==", + "intermittent", + 1 + ] ], - "layout": { "line-join": "round" }, + "layout": { + "line-cap": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" + }, + { + "id": "waterway_other", + "type": "line", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(35, 26%, 95%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "!=", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "!=", + "intermittent", + 1 + ] + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" + }, + { + "id": "waterway_other_intermittent", + "type": "line", + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } + "line-dasharray": [ + 4, + 3 + ] + }, + "filter": [ + "all", + [ + "!=", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "==", + "intermittent", + 1 + ] + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" }, { - "id": "tunnel-trunk_link", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-trunk_link-case", + "id": "water_intermittent", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 77%, 78%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ] - } + "fill-color": "rgba(172, 218, 251, 1)", + "fill-opacity": 0.85 + }, + "filter": [ + "all", + [ + "==", + "intermittent", + 1 + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "water" }, { - "id": "tunnel-motorway_link", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-motorway_link-case", + "id": "water", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 78%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ] - } + "fill-color": "rgba(134, 204, 250, 1)" + }, + "filter": [ + "all", + [ + "!=", + "intermittent", + 1 + ], + [ + "!=", + "brunnel", + "tunnel" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "water" }, { - "id": "tunnel-pedestrian", + "id": "landcover_sand", + "type": "fill", + "paint": { + "fill-color": "#f2e9ac", + "fill-opacity": 1, + "fill-antialias": false + }, + "filter": [ + "all", + [ + "in", + "class", + "sand" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" + }, + { + "id": "landcover_sand_outline", "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, + "paint": { + "line-color": "#f2e9ac", + "line-width": 2 + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "tunnel-service-link-track", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-service-link-track-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": [ 1, 0 ] - } - }, - { - "id": "tunnel-street_limited", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-street", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-secondary-tertiary", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-secondary-tertiary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ], - "line-blur": 0 - } - }, - { - "id": "tunnel-primary", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-primary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ], - "line-blur": 0 - } - }, - { - "id": "tunnel-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "in", "class", "link", "path", "pedestrian", "service", "track" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "trunk_link" ] + "in", + "class", + "sand" ] ], "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 + "visibility": "visible" }, - "paint": {} + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" }, { - "id": "tunnel-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, + "id": "aeroway_fill", + "type": "fill", + "paint": { + "fill-color": "rgba(229, 228, 224, 1)", + "fill-opacity": 0.7 + }, "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] + "==", + "$type", + "Polygon" ], "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 + "visibility": "visible" }, - "paint": {} + "source": "openmaptiles", + "minzoom": 11, + "metadata": {}, + "source-layer": "aeroway" }, { - "id": "tunnel-trunk", + "id": "aeroway_runway", "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "paint": { + "line-color": "#f0ede9", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 3 + ], + [ + 20, + 16 + ] + ] + } + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "trunk" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 77%, 78%)" - } - }, - { - "id": "tunnel-motorway", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-motorway-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-opacity": 1, - "line-color": "hsl(26, 100%, 78%)", - "line-blur": 0 - } - }, - { - "id": "tunnel-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ] + "==", + "$type", + "LineString" + ], + [ + "==", + "class", + "runway" ] ], "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 + "visibility": "visible" }, - "paint": {} + "source": "openmaptiles", + "minzoom": 11, + "metadata": {}, + "source-layer": "aeroway" + }, + { + "id": "aeroway_taxiway", + "type": "line", + "paint": { + "line-color": "#f0ede9", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "class", + "taxiway" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 11, + "metadata": {}, + "source-layer": "aeroway" }, { "id": "ferry", "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry" ] ], - "layout": { "line-join": "round" }, "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, - "line-opacity": 1, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] }, - "line-dasharray": { "base": 1, "stops": [ [ 12, [ 1, 0 ] ], [ 13, [ 12, 4 ] ] ] } - } - }, - { - "id": "ferry_auto", - "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry_auto" ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, - "line-opacity": 1, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "road-path-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "path" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!in", "type", "crossing", "sidewalk", "steps" ] + "line-color": "rgba(108, 159, 182, 1)", + "line-width": 1.1, + "line-dasharray": [ + 2, + 2 ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "road-steps-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "steps" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, - "line-color": "hsl(230, 17%, 82%)", - "line-dasharray": [ 1, 0 ], - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "road-sidewalk-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "structure", "bridge", "tunnel" ], - [ "in", "type", "crossing", "sidewalk" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 0.75 ] ] } - } - }, - { - "id": "turning-features-outline", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], - "layout": { - "icon-image": "turning-circle-outline", - "icon-size": { "base": 1.5, "stops": [ [ 14, 0.122 ], [ 18, 0.969 ], [ 20, 1 ] ] }, - "icon-allow-overlap": true, - "icon-ignore-placement": true, - "icon-padding": 0, - "icon-rotation-alignment": "map" }, - "paint": {} - }, - { - "id": "road-pedestrian-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": 0, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "road-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "road-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } - } - }, - { - "id": "road-street_limited-case", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street-case", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "secondary", "tertiary" ], - [ "!in", "structure", "bridge", "tunnel" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } - } - }, - { - "id": "road-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } - } - }, - { - "id": "road-motorway_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 10, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway_link" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "road-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "trunk_link" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "road-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "trunk" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 6, 0 ], [ 6.1, 1 ] ] } - } - }, - { - "id": "road-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "road-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] - ] - } - } - }, - { - "id": "road-sidewalks", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-sidewalk-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } - } - }, - { - "id": "road-path", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-path-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "road-steps", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-steps-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "road-trunk_link", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-trunk_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)", - "line-opacity": 1 - } - }, - { - "id": "road-motorway_link", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-motorway_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)", - "line-opacity": 1 - } - }, - { - "id": "road-pedestrian", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-pedestrian-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "road-pedestrian-polygon-fill", - "type": "fill", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "Polygon" ], - [ "all", [ "in", "class", "path", "pedestrian" ], [ "==", "structure", "none" ] ] - ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 16, "hsl(230, 16%, 94%)" ], [ 16.25, "hsl(230, 50%, 98%)" ] ] }, - "fill-outline-color": "hsl(230, 26%, 88%)", - "fill-opacity": 1 - } - }, - { - "id": "road-pedestrian-polygon-pattern", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-pedestrian-polygon-fill", - "paint": { - "fill-color": "hsl(0, 0%, 100%)", - "fill-outline-color": "hsl(35, 10%, 83%)", - "fill-pattern": "pedestrian-polygon", - "fill-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } - } - }, - { - "id": "road-polygon", - "type": "fill", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "Polygon" ], - [ - "all", - [ "!in", "class", "motorway", "path", "pedestrian", "trunk" ], - [ "!in", "structure", "bridge", "tunnel" ] - ] - ], - "layout": {}, - "paint": { "fill-color": "hsl(0, 0%, 100%)", "fill-outline-color": "#d6d9e6" } - }, - { - "id": "road-service-link-track", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-service-link-track-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)" - } - }, - { - "id": "road-street_limited", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-secondary-tertiary", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-secondary-tertiary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 8, "hsl(0, 0%, 100%)" ] ] }, - "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } - } - }, - { - "id": "road-primary", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-primary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 7, "hsl(0, 0%, 100%)" ] ] }, - "line-opacity": 1 - } - }, - { - "id": "road-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "path", "pedestrian", "service", "track" ], - [ "==", "oneway", "true" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "icon-rotation-alignment": "map", - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "road-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ], - [ "==", "oneway", "true" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "icon-rotation-alignment": "map", - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "road-trunk", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-trunk-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { - "base": 1, - "stops": [ [ 6, "hsl(0, 0%, 100%)" ], [ 6.1, "hsl(46, 80%, 60%)" ], [ 9, "hsl(46, 85%, 67%)" ] ] - } - } - }, - { - "id": "road-motorway", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-motorway-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { "base": 1, "stops": [ [ 8, "hsl(26, 87%, 62%)" ], [ 9, "hsl(26, 100%, 68%)" ] ] } - } - }, - { - "id": "road-rail", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "major_rail", "minor_rail" ], - [ "!in", "structure", "bridge", "tunnel" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "road-rail-tracks", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-rail", - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, - "line-dasharray": [ 0.1, 15 ], - "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "level-crossings", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "class", "level_crossing" ] ], - "layout": { "icon-size": 1, "icon-image": "level-crossing", "icon-allow-overlap": true }, - "paint": {} - }, - { - "id": "road-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ], - [ "==", "oneway", "true" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "turning-features", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], - "layout": { - "icon-image": "turning-circle", - "icon-size": { "base": 1.5, "stops": [ [ 14, 0.095 ], [ 18, 1 ] ] }, - "icon-allow-overlap": true, - "icon-ignore-placement": true, - "icon-padding": 0, - "icon-rotation-alignment": "map" - }, - "paint": {} - }, - { - "id": "bridge-path-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "path" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "steps" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 15, 0 ], [ 15.25, 1 ] ] } - } - }, - { - "id": "bridge-steps-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "steps" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, - "line-color": "hsl(230, 17%, 82%)", - "line-dasharray": [ 1, 0 ], - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "bridge-pedestrian-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": 0, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "bridge-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "bridge-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } - } - }, - { - "id": "bridge-street_limited-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } - } - }, - { - "id": "bridge-street-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } - } - }, - { - "id": "bridge-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "in", "class", "secondary", "tertiary" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-translate": [ 0, 0 ] - } - }, - { - "id": "bridge-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-translate": [ 0, 0 ] - } - }, - { - "id": "bridge-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "bridge-motorway_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": 1 - } - }, - { - "id": "bridge-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] - ] - } - } - }, - { - "id": "bridge-path", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "path" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "steps" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "bridge-steps", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-steps-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "bridge-trunk_link", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway_link", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-pedestrian", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-pedestrian-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "bridge-service-link-track", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)" - } - }, - { - "id": "bridge-street_limited", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-street", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-secondary-tertiary", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "in", "type", "secondary", "tertiary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } - } - }, - { - "id": "bridge-primary", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "primary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1 - } - }, - { - "id": "bridge-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "path", "pedestrian", "service", "track" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-rotation-alignment": "map", - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "bridge-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-rotation-alignment": "map", - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "bridge-trunk", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-rail", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "in", "class", "major_rail", "minor_rail" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "bridge-rail-tracks", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-rail", - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, - "line-dasharray": [ 0.1, 15 ], - "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 20, 1 ] ] } - } - }, - { - "id": "bridge-trunk_link-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "bridge-motorway_link-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": 1 - } - }, - { - "id": "bridge-trunk-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-motorway-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-trunk_link-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway_link-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-trunk-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ], - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "aerialway", - "type": "line", - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "aerialway" ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": "hsl(230, 10%, 74%)", - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "admin-3-4-boundaries-bg", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "filter": [ "all", [ ">=", "admin_level", 3 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "bevel" }, - "paint": { - "line-color": { "base": 1, "stops": [ [ 8, "hsl(35, 12%, 89%)" ], [ 16, "hsl(230, 49%, 90%)" ] ] }, - "line-width": { "base": 1, "stops": [ [ 7, 3.75 ], [ 12, 5.5 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 7, 0 ], [ 8, 0.75 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-translate": [ 0, 0 ], - "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 8, 3 ] ] } - } - }, - { - "id": "admin-2-boundaries-bg", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1, "stops": [ [ 3, 3.5 ], [ 10, 8 ] ] }, - "line-color": { "base": 1, "stops": [ [ 6, "hsl(35, 12%, 89%)" ], [ 8, "hsl(230, 49%, 90%)" ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 3, 0 ], [ 4, 0.5 ] ] }, - "line-translate": [ 0, 0 ], - "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 10, 2 ] ] } - } - }, - { - "id": "admin-3-4-boundaries", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "filter": [ "all", [ ">=", "admin_level", 3 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-dasharray": { "base": 1, "stops": [ [ 6, [ 2, 0 ] ], [ 7, [ 2, 2, 6, 2 ] ] ] }, - "line-width": { "base": 1, "stops": [ [ 7, 0.75 ], [ 12, 1.5 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 2, 0 ], [ 3, 1 ] ] }, - "line-color": { "base": 1, "stops": [ [ 3, "hsl(230, 14%, 77%)" ], [ 7, "hsl(230, 8%, 62%)" ] ] } - } - }, - { - "id": "admin-2-boundaries", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 0 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-color": "hsl(230, 8%, 51%)", - "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } - } - }, - { - "id": "admin-2-boundaries-dispute", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 1 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-dasharray": [ 1.5, 1.5 ], - "line-color": "hsl(230, 8%, 51%)", - "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } - } - }, - { - "id": "housenum-label", - "type": "symbol", - "source": "composite", - "source-layer": "housenum_label", - "minzoom": 17, - "layout": { - "text-field": "{house_num}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-padding": 4, - "text-max-width": 7, - "text-size": 9.5 - }, - "paint": { - "text-color": "hsl(35, 2%, 69%)", - "text-halo-color": "hsl(35, 8%, 85%)", - "text-halo-width": 0.5, - "text-halo-blur": 0 - } - }, - { - "id": "waterway-label", - "type": "symbol", - "source": "composite", - "source-layer": "waterway_label", - "minzoom": 12, - "filter": [ "in", "class", "canal", "river" ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-max-angle": 30, - "text-size": { "base": 1, "stops": [ [ 13, 12 ], [ 18, 16 ] ] } - }, - "paint": { - "text-halo-width": 0.5, - "text-halo-color": "hsl(196, 80%, 70%)", - "text-color": "hsl(230, 48%, 44%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank4-l15", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "composite", - "source-layer": "poi_label", - "minzoom": 17, - "filter": [ - "all", - [ ">=", "localrank", 15 ], - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 4 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank4-l1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "composite", - "source-layer": "poi_label", - "minzoom": 15, - "filter": [ - "all", - [ "<=", "localrank", 14 ], - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 4 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks_scalerank4", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "composite", - "source-layer": "poi_label", - "minzoom": 15, "filter": [ "all", [ "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 4 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank3", - "type": "symbol", - "metadata": { "mapbox:group": "1444933372896.5967" }, - "source": "composite", - "source-layer": "poi_label", - "filter": [ - "all", - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 3 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks-scalerank3", - "type": "symbol", - "metadata": { "mapbox:group": "1444933372896.5967" }, - "source": "composite", - "source-layer": "poi_label", - "filter": [ - "all", - [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 3 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "road-label-small", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "composite", - "source-layer": "road_label", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "!in", "class", - "link", - "motorway", - "pedestrian", - "primary", - "secondary", + "ferry" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_service_track_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 16, + 4 + ], + [ + 20, + 11 + ] + ] + }, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "ramp", + "1" + ], + [ + "==", + "brunnel", + "tunnel" + ], + [ + ">", + "layer", + 0 + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_street_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 0.5 + ], + [ + 13, + 1 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": { + "stops": [ + [ + 12, + 0 + ], + [ + 12.5, + 1 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", "street", - "street_limited", - "tertiary", + "street_limited" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_secondary_tertiary_casing", + "type": "line", + "paint": { + "line-color": "rgba(195, 189, 187, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 8, + 1.5 + ], + [ + 20, + 17 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_trunk_primary_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + }, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "primary", "trunk" ] ], "layout": { - "text-size": { "base": 1, "stops": [ [ 15, 10 ], [ 20, 13 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_en}", - "text-letter-spacing": 0.01 + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-halo-blur": 1 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "road-label-medium", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "composite", - "source-layer": "road_label", - "minzoom": 11, + "id": "tunnel_motorway_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + }, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "in", "class", "link", "pedestrian", "street", "street_limited" ] - ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 11, 10 ], [ 20, 14 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_en}", - "text-letter-spacing": 0.01 - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "road-label-large", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "composite", - "source-layer": "road_label", - "filter": [ "in", "class", "motorway", "primary", "secondary", "tertiary", "trunk" ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 9, 10 ], [ 20, 16 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_en}", - "text-letter-spacing": 0.01 - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsla(0, 0%, 100%, 0.75)", - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "road-shields-black", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "composite", - "source-layer": "road_label", - "filter": [ - "all", - [ "<=", "reflen", 6 ], [ - "!in", - "shield", - "at-expressway", - "at-motorway", - "at-state-b", - "bg-motorway", - "bg-national", - "ch-main", - "ch-motorway", - "cz-motorway", - "cz-road", - "de-motorway", - "e-road", - "fi-main", - "gr-motorway", - "gr-national", - "hr-motorway", - "hr-state", - "hu-main", - "hu-motorway", - "nz-state", - "pl-expressway", - "pl-motorway", - "pl-national", - "ro-county", - "ro-motorway", - "ro-national", - "rs-motorway", - "rs-state-1b", - "se-main", - "si-expressway", - "si-motorway", - "sk-highway", - "sk-road", - "us-interstate", - "us-interstate-business", - "us-interstate-duplex", - "us-interstate-truck", - "za-metropolitan", - "za-national", - "za-provincial", - "za-regional" + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "tunnel" ] ], "layout": { - "text-size": 9, - "icon-image": "{shield}-{reflen}", - "icon-rotation-alignment": "viewport", - "text-max-angle": 38, - "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, - "text-padding": 2, - "text-rotation-alignment": "viewport", - "text-field": "{ref}", - "text-letter-spacing": 0.05, - "icon-padding": 2 + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(0, 0%, 7%)", - "icon-halo-color": "rgba(0, 0, 0, 1)", - "icon-halo-width": 1, - "text-opacity": 1, - "icon-color": "white", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "road-shields-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "composite", - "source-layer": "road_label", + "id": "tunnel_path_pedestrian", + "type": "line", + "paint": { + "line-color": "rgba(204, 196, 176, 0.45)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 0.5 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 1, + 0.75 + ] + }, "filter": [ "all", - [ "<=", "reflen", 6 ], + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "tunnel" + ], [ "in", - "shield", - "at-expressway", - "at-motorway", - "at-state-b", - "bg-motorway", - "bg-national", - "ch-main", - "ch-motorway", - "cz-motorway", - "cz-road", - "de-motorway", - "e-road", - "fi-main", - "gr-motorway", - "gr-national", - "hr-motorway", - "hr-state", - "hu-main", - "hu-motorway", - "nz-state", - "pl-expressway", - "pl-motorway", - "pl-national", - "ro-county", - "ro-motorway", - "ro-national", - "rs-motorway", - "rs-state-1b", - "se-main", - "si-expressway", - "si-motorway", - "sk-highway", - "sk-road", - "us-interstate", - "us-interstate-business", - "us-interstate-duplex", - "us-interstate-truck", - "za-metropolitan", - "za-national", - "za-provincial", - "za-regional" + "class", + "path", + "pedestrian" ] ], "layout": { - "text-size": 9, - "icon-image": "{shield}-{reflen}", - "icon-rotation-alignment": "viewport", - "text-max-angle": 38, - "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, - "text-padding": 2, - "text-rotation-alignment": "viewport", - "text-field": "{ref}", - "text-letter-spacing": 0.05, - "icon-padding": 2 + "visibility": "visible" }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway_link", + "type": "line", "paint": { - "text-color": "hsl(0, 0%, 100%)", - "icon-halo-color": "rgba(0, 0, 0, 1)", - "icon-halo-width": 1, - "text-opacity": 1, - "icon-color": "white", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0 - } - }, - { - "id": "motorway-junction", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "composite", - "source-layer": "motorway_junction", - "minzoom": 14, - "filter": [ "all", [ ">", "reflen", 0 ], [ "<=", "reflen", 9 ] ], - "layout": { - "text-field": "{ref}", - "text-size": 9, - "icon-image": "motorway-exit-{reflen}", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ] + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } }, - "paint": { "text-color": "hsl(0, 0%, 100%)", "text-translate": [ 0, 0 ] } + "filter": [ + "all", + [ + "==", + "class", + "motorway_link" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "poi-scalerank2", - "type": "symbol", - "metadata": { "mapbox:group": "1444933358918.2366" }, - "source": "composite", - "source-layer": "poi_label", + "id": "tunnel_service_track", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_service_track_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "service_construction", + "track_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_link", + "type": "line", + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "ramp", + "1" + ], + [ + "==", + "brunnel", + "tunnel" + ], + [ + ">", + "layer", + 0 + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_minor", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "minor" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_minor_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "minor_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_secondary_tertiary", + "type": "line", + "paint": { + "line-color": "rgba(245, 245, 243, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_secondary_tertiary_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "secondary_construction", + "tertiary_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_trunk_primary", + "type": "line", + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_trunk_primary_construction", + "type": "line", + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "primary_construction", + "trunk_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway", + "type": "line", + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway_construction", + "type": "line", + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway_construction" + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_major_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "rail" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_major_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 3 + ], + [ + 20, + 8 + ] + ] + }, + "line-dasharray": [ + 0.2, + 8 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "==", + "class", + "rail" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_area_pier", + "type": "fill", + "paint": { + "fill-color": "rgba(246, 241, 229, 1)", + "fill-antialias": true + }, + "filter": [ + "all", + [ + "==", + "$type", + "Polygon" + ], + [ + "==", + "class", + "pier" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_pier", + "type": "line", + "paint": { + "line-color": "rgba(246, 241, 229, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 17, + 4 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "in", + "class", + "pier" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_area_bridge", + "type": "fill", + "paint": { + "fill-color": "rgba(246, 241, 229, 0.6)", + "fill-antialias": true + }, + "filter": [ + "all", + [ + "==", + "$type", + "Polygon" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_area_pattern", + "type": "fill", + "paint": { + "fill-pattern": "pedestrian_polygon" + }, + "filter": [ + "all", + [ + "==", + "$type", + "Polygon" + ], + [ + "!has", + "brunnel" + ], + [ + "!in", + "class", + "bridge", + "pier" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_service_track_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 16, + 4 + ], + [ + 20, + 11 + ] + ] + } + }, "filter": [ "all", [ "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "brunnel", + "bridge", + "tunnel" ], - [ "==", "scalerank", 2 ] + [ + "in", + "class", + "service", + "track" + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, - "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round" }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "poi-parks-scalerank2", - "type": "symbol", - "metadata": { "mapbox:group": "1444933358918.2366" }, - "source": "composite", - "source-layer": "poi_label", + "id": "road_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, "filter": [ "all", [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "!in", + "brunnel", + "bridge", + "tunnel" ], - [ "==", "scalerank", 2 ] + [ + "!in", + "class", + "motorway", + "trunk", + "primary", + "pedestrian", + "path", + "track", + "service" + ], + [ + "==", + "ramp", + 1 + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, - "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "minzoom": 13, + "metadata": {}, + "source-layer": "transportation" }, { - "id": "rail-label", - "type": "symbol", - "source": "composite", - "source-layer": "rail_station_label", + "id": "road_trunk_primary_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 0.7 + ], + [ + 20, + 14 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", "minzoom": 12, - "filter": [ "!=", "maki", "entrance" ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{network}", - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-offset": [ 0, 0.85 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": { "base": 1, "stops": [ [ 0, "" ], [ 13, "{name_en}" ] ] }, - "text-letter-spacing": 0.01, - "icon-padding": 0, - "text-max-width": 7 - }, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_casing", + "type": "line", "paint": { - "text-color": "hsl(230, 48%, 44%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "icon-halo-width": 4, - "icon-halo-color": "#fff", - "text-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "text-halo-blur": 0.5 - } - }, - { - "id": "water-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444933808272.805" }, - "source": "composite", - "source-layer": "water_label", - "minzoom": 15, - "filter": [ "<=", "area", 10000 ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 16, 13 ], [ 20, 16 ] ] } + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 0.5 + ], + [ + 13, + 1 + ], + [ + 14, + 4 + ], + [ + 20, + 20 + ] + ] + }, + "line-opacity": { + "stops": [ + [ + 12, + 0 + ], + [ + 12.5, + 1 + ] + ] + } }, - "paint": { "text-color": "hsl(230, 48%, 44%)" } - }, - { - "id": "water-label", - "type": "symbol", - "metadata": { "mapbox:group": "1444933808272.805" }, - "source": "composite", - "source-layer": "water_label", - "minzoom": 5, - "filter": [ ">", "area", 10000 ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 13, 13 ], [ 18, 18 ] ] } - }, - "paint": { "text-color": "hsl(230, 48%, 44%)" } - }, - { - "id": "place-residential", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "maxzoom": 18, - "filter": [ - "all", - [ "in", "$type", "LineString", "Point", "Polygon" ], - [ "all", [ "<=", "localrank", 10 ], [ "==", "type", "residential" ] ] - ], - "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_en}", - "text-max-width": 7 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks-scalerank1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933322393.2852" }, - "source": "composite", - "source-layer": "poi_label", "filter": [ "all", [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "==", + "$type", + "LineString" ], - [ "<=", "scalerank", 1 ] + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "minor" + ], + [ + "!=", + "ramp", + "1" + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "poi-scalerank1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933322393.2852" }, - "source": "composite", - "source-layer": "poi_label", + "id": "road_secondary_tertiary_casing-copy", + "type": "line", + "paint": { + "line-color": "rgba(195, 189, 187, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 8, + 1.5 + ], + [ + 20, + 17 + ] + ] + }, + "line-opacity": 1 + }, "filter": [ "all", [ "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "brunnel", + "bridge", + "tunnel" ], - [ "<=", "scalerank", 1 ] + [ + "in", + "class", + "secondary", + "tertiary" + ], + [ + "!=", + "ramp", + 1 + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "airport-label", - "type": "symbol", - "source": "composite", - "source-layer": "airport_label", - "minzoom": 9, - "filter": [ "<=", "scalerank", 2 ], + "id": "road_trunk_primary_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "!=", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ], + [ + "!=", + "ramp", + 1 + ] + ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 12 ], [ 18, 18 ] ] }, - "icon-image": { "stops": [ [ 12, "{maki}-11" ], [ 13, "{maki}-15" ] ] }, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.75 ], - "text-rotation-alignment": "viewport", + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_path_pedestrian", + "type": "line", + "paint": { + "line-color": "rgba(204, 196, 176, 0.45)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 1 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 1, + 1 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "path", + "pedestrian" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 14, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_link", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "ramp", + 1 + ], + [ + "!in", + "class", + "motorway", + "trunk", + "primary", + "pedestrian", + "path", + "track", + "service" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 13, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_trunk_primary_link", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 0.5 + ], + [ + 20, + 10 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_link", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 12, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_service_track", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_service_track_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "service_construction", + "track_construction" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "minor" + ] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "minor_construction" + ] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_secondary_tertiary", + "type": "line", + "paint": { + "line-color": "rgba(245, 245, 243, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_secondary_tertiary_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "secondary_construction", + "tertiary_construction" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_trunk_primary", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "!=", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_trunk_primary_construction", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "!=", + "ramp", + 1 + ], + [ + "in", + "class", + "primary_construction", + "trunk_construction" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway", + "type": "line", + "paint": { + "line-color": { + "base": 1, + "stops": [ + [ + 5, + "hsl(26, 87%, 62%)" + ], + [ + 6, + "#fc8" + ] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_construction", + "type": "line", + "paint": { + "line-color": { + "base": 1, + "stops": [ + [ + 5, + "hsl(26, 87%, 62%)" + ], + [ + 6, + "#fc8" + ] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway_construction" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_major_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_major_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 3 + ], + [ + 20, + 8 + ] + ] + }, + "line-dasharray": [ + 0.2, + 8 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "subclass", + "tram", + "light_rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 2 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 0.2, + 4 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "subclass", + "tram", + "light_rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "building", + "type": "fill", + "paint": { + "fill-color": "rgba(189, 185, 181, 0.3)", + "fill-outline-color": { + "base": 1, + "stops": [ + [ + 13, + "hsla(35, 6%, 79%, 0.32)" + ], + [ + 14, + "hsl(35, 6%, 79%)" + ] + ] + } + }, + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 14, + "minzoom": 13, + "metadata": {}, + "source-layer": "building" + }, + { + "id": "building-3d", + "type": "fill-extrusion", + "paint": { + "fill-extrusion-base": { + "type": "identity", + "property": "render_min_height" + }, + "fill-extrusion-color": "rgba(189, 185, 181, 1)", + "fill-extrusion-height": { + "type": "identity", + "property": "render_height" + }, + "fill-extrusion-opacity": 0.3 + }, + "filter": [ + "all", + [ + "!has", + "hide_3d" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 14, + "metadata": {}, + "source-layer": "building" + }, + { + "id": "waterway-bridge-case", + "type": "line", + "paint": { + "line-color": "#bbbbbb", + "line-width": { + "base": 1.6, + "stops": [ + [ + 12, + 0.5 + ], + [ + 20, + 5 + ] + ] + }, + "line-gap-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "miter" + }, + "source": "openmaptiles", + "source-layer": "waterway" + }, + { + "id": "waterway-bridge", + "type": "line", + "paint": { + "line-color": "rgba(134, 204, 250, 1)", + "line-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "source": "openmaptiles", + "source-layer": "waterway" + }, + { + "id": "bridge_motorway_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_service_track_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 16, + 4 + ], + [ + 20, + 11 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "class", + "link" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_street_casing", + "type": "line", + "paint": { + "line-color": "hsl(36, 6%, 74%)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 0.5 + ], + [ + 13, + 1 + ], + [ + 14, + 4 + ], + [ + 20, + 25 + ] + ] + }, + "line-opacity": { + "stops": [ + [ + 12, + 0 + ], + [ + 12.5, + 1 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "street", + "street_limited" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_path_pedestrian_casing", + "type": "line", + "paint": { + "line-color": "hsl(35, 6%, 80%)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 1.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 1, + 0 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "path", + "pedestrian" + ] + ], + "layout": { + "line-join": "miter", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_secondary_tertiary_casing", + "type": "line", + "paint": { + "line-color": "rgba(195, 189, 187, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 8, + 1.5 + ], + [ + 20, + 17 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_trunk_primary_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_path_pedestrian", + "type": "line", + "paint": { + "line-color": "hsl(0, 0%, 100%)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 0.5 + ], + [ + 20, + 10 + ] + ] + }, + "line-dasharray": [ + 1, + 0.3 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "path", + "pedestrian" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway_link", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_service_track", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_service_track_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "service_construction", + "track_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_link", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "link" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_minor", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "minor" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_minor_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "minor_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_secondary_tertiary", + "type": "line", + "paint": { + "line-color": "rgba(245, 245, 243, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_secondary_tertiary_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "secondary_construction", + "tertiary_construction" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_trunk_primary", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_trunk_primary_construction", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "primary_construction", + "trunk_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway_construction", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway_construction" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_major_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "rail" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_major_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 3 + ], + [ + 20, + 8 + ] + ] + }, + "line-dasharray": [ + 0.2, + 8 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "rail" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "cablecar", + "type": "line", + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [ + 11, + 1 + ], + [ + 19, + 2.5 + ] + ] + } + }, + "filter": [ + "==", + "class", + "aerialway" + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 13, + "source-layer": "transportation" + }, + { + "id": "cablecar-dash", + "type": "line", + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [ + 11, + 3 + ], + [ + 19, + 5.5 + ] + ] + }, + "line-dasharray": [ + 2, + 3 + ] + }, + "filter": [ + "==", + "class", + "aerialway" + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 13, + "source-layer": "transportation" + }, + { + "id": "boundary_3", + "type": "line", + "paint": { + "line-color": "#9e9cab", + "line-width": { + "base": 1, + "stops": [ + [ + 4, + 0.4 + ], + [ + 5, + 0.7 + ], + [ + 12, + 1.6 + ] + ] + }, + "line-dasharray": [ + 5, + 3 + ] + }, + "filter": [ + "all", + [ + "in", + "admin_level", + 3, + 4 + ], + [ + "==", + "maritime", + 0 + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 3, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z0-4", + "type": "line", + "paint": { + "line-color": "rgba(139, 139, 139, 1)", + "line-width": { + "base": 1, + "stops": [ + [ + 3, + 1 + ], + [ + 5, + 1.2 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "maritime", + 0 + ], + [ + "!has", + "claimed_by" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 5, + "minzoom": 0, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z0-4_maritime", + "type": "line", + "paint": { + "line-color": "rgba(98,185,229,1)", + "line-width": { + "base": 1, + "stops": [ + [ + 3, + 1 + ], + [ + 5, + 1.2 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "!has", + "claimed_by" + ], + [ + "==", + "maritime", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 5, + "minzoom": 0, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5", + "type": "line", + "paint": { + "line-color": "rgba(139, 139, 139, 1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 0 + ], + [ + "==", + "maritime", + 0 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5_disputed", + "type": "line", + "paint": { + "line-color": "rgba(120, 120, 120, 1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 4, + 3 + ] + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 1 + ], + [ + "==", + "maritime", + 0 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5_disputed_maritime", + "type": "line", + "paint": { + "line-color": "rgba(98,185,229,1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 4, + 3 + ] + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 1 + ], + [ + "==", + "maritime", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5_maritime", + "type": "line", + "paint": { + "line-color": "rgba(98,185,229,1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 0 + ], + [ + "==", + "maritime", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "water_name_line", + "type": "symbol", + "paint": { + "text-color": "#5d60be", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": 12, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 5, + "symbol-placement": "line" + }, + "source": "openmaptiles", + "minzoom": 0, + "metadata": {}, + "source-layer": "water_name" + }, + { + "id": "water_name_point", + "type": "symbol", + "paint": { + "text-color": "rgba(76, 125, 173, 1)", + "text-halo-color": "rgba(255,255,255,0)", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + "!=", + "class", + "ocean" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": 12, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 5 + }, + "source": "openmaptiles", + "maxzoom": 24, + "minzoom": 2, + "metadata": {}, + "source-layer": "water_name" + }, + { + "id": "water_ocean_name_point", + "type": "symbol", + "paint": { + "text-color": "rgba(76, 125, 173, 1)", + "text-halo-color": "rgba(255,255,255,0)", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + "==", + "class", + "ocean" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": 12, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 5 + }, + "source": "openmaptiles", + "minzoom": 0, + "metadata": {}, + "source-layer": "water_name" + }, + { + "id": "poi_z16_subclass", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + ">=", + "rank", + 20 + ], + [ + "any", + [ + "all", + [ + "in", + "class", + "pitch" + ], + [ + "in", + "subclass", + "soccer", + "tennis", + "baseball", + "basketball", + "swimming", + "golf" + ] + ] + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{subclass}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", "text-anchor": "top", - "text-field": { "stops": [ [ 11, "{ref}" ], [ 12, "{name_en}" ] ] }, - "text-letter-spacing": 0.01, + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, "text-max-width": 9 }, - "paint": { - "text-color": "hsl(230, 48%, 44%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "minzoom": 16, + "metadata": {}, + "source-layer": "poi" }, { - "id": "place-islet-archipelago-aboriginal", + "id": "poi_z16", "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "maxzoom": 16, - "filter": [ "in", "type", "aboriginal_lands", "archipelago", "islet" ], + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + ">=", + "rank", + 20 + ], + [ + "none", + [ + "all", + [ + "in", + "class", + "pitch" + ], + [ + "in", + "subclass", + "soccer", + "tennis", + "baseball", + "basketball", + "swimming", + "golf" + ] + ] + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 16, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "poi_z15", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + ">=", + "rank", + 7 + ], + [ + "<", + "rank", + 20 + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 15, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "poi_z14", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + "any", + [ + "<", + "rank", + 7 + ] + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], + "layout": { + "icon-size": 0.9, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 14.2, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "poi_transit", + "type": "symbol", + "paint": { + "text-color": "rgba(102, 102, 102, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "in", + "class", + "bus", + "railway", + "airport" + ], + [ + "==", + "subclass", + "station" + ] + ], + "layout": { + "icon-size": 0.9, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "left", + "text-offset": [ + 0.9, + 0 + ], + "text-padding": 2, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 15, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "road_oneway", + "type": "symbol", + "paint": { + "icon-opacity": 0.5 + }, + "filter": [ + "all", + [ + "==", + "oneway", + 1 + ], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-size": { + "stops": [ + [ + 15, + 0.5 + ], + [ + 19, + 1 + ] + ] + }, + "icon-image": "oneway", + "visibility": "visible", + "icon-rotate": 90, + "icon-padding": 2, + "symbol-spacing": 75, + "symbol-placement": "line", + "icon-rotation-alignment": "map" + }, + "source": "openmaptiles", + "minzoom": 15, + "source-layer": "transportation" + }, + { + "id": "road_oneway_opposite", + "type": "symbol", + "paint": { + "icon-opacity": 0.5 + }, + "filter": [ + "all", + [ + "==", + "oneway", + -1 + ], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-size": { + "stops": [ + [ + 15, + 0.5 + ], + [ + 19, + 1 + ] + ] + }, + "icon-image": "oneway", + "icon-rotate": -90, + "icon-padding": 2, + "symbol-spacing": 75, + "symbol-placement": "line", + "icon-rotation-alignment": "map" + }, + "source": "openmaptiles", + "minzoom": 15, + "source-layer": "transportation" + }, + { + "id": "road_label", + "type": "symbol", + "paint": { + "text-color": "#765", + "text-halo-blur": 0.5, + "text-halo-width": 1 + }, + "filter": [ + "all" + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": { + "base": 1, + "stops": [ + [ + 13, + 12 + ], + [ + 14, + 13 + ] + ] + }, + "text-field": "{name:latin} {name:nonlatin}", + "text-anchor": "center", + "text-offset": [ + 0, + 0.15 + ], + "symbol-placement": "line" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation_name" + }, + { + "id": "highway-shield", + "type": "symbol", + "paint": { + "text-color": "rgba(37, 36, 36, 1)" + }, + "filter": [ + "all", + [ + "<=", + "ref_length", + 6 + ], + [ + "==", + "$type", + "LineString" + ], + [ + "!in", + "network", + "us-interstate", + "us-highway", + "us-state" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 10, + "icon-image": "road_{ref_length}", + "text-field": "{ref}", + "symbol-spacing": 200, + "symbol-placement": { + "base": 1, + "stops": [ + [ + 10, + "point" + ], + [ + 11, + "line" + ] + ] + }, + "symbol-avoid-edges": true, + "icon-rotation-alignment": "viewport", + "text-rotation-alignment": "viewport" + }, + "source": "openmaptiles", + "minzoom": 8, + "source-layer": "transportation_name" + }, + { + "id": "highway-shield-us-interstate", + "type": "symbol", + "paint": { + "text-color": "rgba(255, 255, 255, 1)" + }, + "filter": [ + "all", + [ + "<=", + "ref_length", + 6 + ], + [ + "==", + "$type", + "LineString" + ], + [ + "in", + "network", + "us-interstate" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 9, + "icon-image": "{network}_{ref_length}", + "text-field": "{ref}", + "symbol-spacing": 200, + "symbol-placement": { + "base": 1, + "stops": [ + [ + 7, + "point" + ], + [ + 7, + "line" + ], + [ + 8, + "line" + ] + ] + }, + "symbol-avoid-edges": true, + "icon-rotation-alignment": "viewport", + "text-rotation-alignment": "viewport" + }, + "source": "openmaptiles", + "minzoom": 7, + "source-layer": "transportation_name" + }, + { + "id": "highway-shield-us-other", + "type": "symbol", + "paint": { + "text-color": "rgba(37, 36, 36, 1)" + }, + "filter": [ + "all", + [ + "<=", + "ref_length", + 6 + ], + [ + "==", + "$type", + "LineString" + ], + [ + "in", + "network", + "us-highway", + "us-state" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 9, + "icon-image": "{network}_{ref_length}", + "text-field": "{ref}", + "symbol-spacing": 200, + "symbol-placement": { + "base": 1, + "stops": [ + [ + 10, + "point" + ], + [ + 11, + "line" + ] + ] + }, + "symbol-avoid-edges": true, + "icon-rotation-alignment": "viewport", + "text-rotation-alignment": "viewport" + }, + "source": "openmaptiles", + "minzoom": 9, + "source-layer": "transportation_name" + }, + { + "id": "airport-label-major", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "has", + "iata" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 12, + "icon-image": "airport_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, + "text-optional": true, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 10, + "source-layer": "aerodrome_label" + }, + { + "id": "airport_gate", + "type": "symbol", + "paint": { + "text-color": "rgba(135, 135, 135, 1)", + "text-halo-color": "rgba(255, 255, 255, 1)", + "text-halo-width": 1.5 + }, + "filter": [ + "all", + [ + "==", + "class", + "gate" + ] + ], + "layout": { + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": { + "stops": [ + [ + 17, + 9 + ], + [ + 19, + 15 + ] + ] + }, + "text-field": "{ref}" + }, + "source": "openmaptiles", + "minzoom": 16.5, + "source-layer": "aeroway" + }, + { + "id": "place_other", + "type": "symbol", + "paint": { + "text-color": "rgba(66, 62, 62, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "in", + "class", + "hamlet", + "island", + "islet", + "neighbourhood", + "suburb" + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 12, + 10 + ], + [ + 15, + 14 + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 9, + "text-transform": "uppercase", + "text-letter-spacing": 0.1 + }, + "source": "openmaptiles", + "minzoom": 8, + "metadata": {}, + "source-layer": "place" + }, + { + "id": "place_village", + "type": "symbol", + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "==", + "class", + "village" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 10, + 12 + ], + [ + 15, + 22 + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", "text-max-width": 8 }, - "paint": { - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "place-neighbourhood", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "neighbourhood" ], - "layout": { - "text-field": "{name_en}", - "text-transform": "uppercase", - "text-letter-spacing": 0.1, - "text-max-width": 7, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-padding": 3, - "text-size": { "base": 1, "stops": [ [ 12, 11 ], [ 16, 16 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "place-suburb", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "suburb" ], - "layout": { - "text-field": "{name_en}", - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-letter-spacing": 0.15, - "text-max-width": 7, - "text-padding": 3, - "text-size": { "base": 1, "stops": [ [ 11, 11 ], [ 15, 18 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "place-hamlet", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "hamlet" ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 12, 11.5 ], [ 15, 16 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-color": "hsl(0, 0%, 0%)" - } - }, - { - "id": "place-village", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", + "source": "openmaptiles", "minzoom": 8, - "maxzoom": 15, - "filter": [ "==", "type", "village" ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 10, 11.5 ], [ 16, 18 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-color": "hsl(0, 0%, 0%)" - } + "metadata": {}, + "source-layer": "place" }, { - "id": "place-town", + "id": "place_town", "type": "symbol", - "source": "composite", - "source-layer": "place_label", + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "==", + "class", + "town" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 7, + 12 + ], + [ + 11, + 16 + ] + ] + }, + "icon-image": { + "base": 1, + "stops": [ + [ + 0, + "circle-stroked_16" + ], + [ + 10, + "" + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-anchor": "bottom", + "text-offset": [ + 0, + 0 + ], + "text-max-width": 8 + }, + "source": "openmaptiles", "minzoom": 6, - "maxzoom": 15, - "filter": [ "==", "type", "town" ], - "layout": { - "icon-image": "dot-9", - "text-font": { - "base": 1, - "stops": [ - [ 11, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 12, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7, [ 0, -0.15 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 7, 11.5 ], [ 15, 20 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } + "metadata": {}, + "source-layer": "place" }, { - "id": "place-island", + "id": "place_city", "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "maxzoom": 16, - "filter": [ "==", "type", "island" ], + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "==", + "class", + "city" + ] + ], "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 7, + 14 + ], + [ + 11, + 24 + ] + ] + }, + "icon-image": { + "base": 1, + "stops": [ + [ + 0, + "circle-stroked_16" + ], + [ + 10, + "" + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-anchor": "bottom", + "text-offset": [ + 0, + 0 + ], + "icon-optional": false, + "text-max-width": 8, + "icon-allow-overlap": true + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "place" + }, + { + "id": "place_state", + "type": "symbol", + "paint": { + "text-color": "rgba(74, 72, 66, 1)", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 0.8 + }, + "filter": [ + "all", + [ + "==", + "class", + "state" + ] + ], + "layout": { + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": { + "stops": [ + [ + 3, + 10 + ], + [ + 6, + 14 + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 7 + "text-transform": "uppercase", + "text-letter-spacing": 0.1 }, - "paint": { - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } + "source": "openmaptiles", + "maxzoom": 6, + "minzoom": 3, + "metadata": {}, + "source-layer": "place" }, { - "id": "place-city-sm", + "id": "country_other", "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "maxzoom": 14, - "filter": [ "all", [ "!in", "scalerank", 0, 1, 2, 3, 4, 5 ], [ "==", "type", "city" ] ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 6, 12 ], [ 14, 22 ] ] }, - "icon-image": "dot-9", - "text-font": { - "base": 1, - "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.2 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7 - }, "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } - }, - { - "id": "place-city-md-s", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "maxzoom": 14, - "filter": [ - "all", - [ "in", "ldir", "E", "S", "SE", "SW" ], - [ "in", "scalerank", 3, 4, 5 ], - [ "==", "type", "city" ] - ], - "layout": { - "text-field": "{name_en}", - "icon-image": "dot-10", - "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.1 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-font": { - "base": 1, - "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] - ] - }, - "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } - }, - "paint": { - "text-halo-width": 1, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-color": "hsl(0, 0%, 0%)", + "text-color": "#334", "text-halo-blur": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } - }, - { - "id": "place-city-md-n", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "maxzoom": 14, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, "filter": [ "all", - [ "in", "ldir", "N", "NE", "NW", "W" ], - [ "in", "scalerank", 3, 4, 5 ], - [ "==", "type", "city" ] + [ + "==", + "class", + "country" + ], + [ + "!has", + "iso_a2" + ] ], "layout": { - "icon-image": "dot-10", - "text-font": { - "base": 1, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] + [ + 3, + 9 + ], + [ + 7, + 15 + ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.25 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" }, { - "id": "place-city-lg-s", + "id": "country_3", "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, "filter": [ "all", - [ "in", "ldir", "E", "S", "SE", "SW" ], - [ "<=", "scalerank", 2 ], - [ "==", "type", "city" ] + [ + ">=", + "rank", + 3 + ], + [ + "==", + "class", + "country" + ], + [ + "has", + "iso_a2" + ] ], "layout": { - "icon-image": "dot-11", - "text-font": { - "base": 1, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] + [ + 3, + 11 + ], + [ + 7, + 17 + ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.15 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" }, { - "id": "place-city-lg-n", + "id": "country_2", "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, "filter": [ "all", - [ "in", "ldir", "N", "NE", "NW", "W" ], - [ "<=", "scalerank", 2 ], - [ "==", "type", "city" ] + [ + "==", + "rank", + 2 + ], + [ + "==", + "class", + "country" + ], + [ + "has", + "iso_a2" + ] ], "layout": { - "icon-image": "dot-11", - "text-font": { - "base": 1, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] + [ + 2, + 11 + ], + [ + 5, + 17 + ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.25 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" + }, + { + "id": "country_1", + "type": "symbol", "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-opacity": 1, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, + "filter": [ + "all", + [ + "==", + "rank", + 1 + ], + [ + "==", + "class", + "country" + ], + [ + "has", + "iso_a2" + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { + "stops": [ + [ + 1, + 11 + ], + [ + 4, + 17 + ], + [ + 6, + 19 + ] + ] + }, + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" }, { - "id": "marine-label-sm-ln", + "id": "continent", "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 3, - "maxzoom": 10, - "filter": [ "all", [ "==", "$type", "LineString" ], [ ">=", "labelrank", 4 ] ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] }, - "symbol-spacing": { "base": 1, "stops": [ [ 4, 100 ], [ 6, 400 ] ] }, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-field": "{name_en}", - "text-letter-spacing": 0.1, - "text-max-width": 5 - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-sm-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 3, - "maxzoom": 10, - "filter": [ "all", [ "==", "$type", "Point" ], [ ">=", "labelrank", 4 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 5, - "text-letter-spacing": 0.1, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-md-ln", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 2, - "maxzoom": 8, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "in", "labelrank", 2, 3 ] ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1.1, "stops": [ [ 2, 12 ], [ 5, 20 ] ] }, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-field": "{name_en}", - "text-letter-spacing": 0.15, - "text-max-width": 5 - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-md-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 2, - "maxzoom": 8, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "labelrank", 2, 3 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 5, - "text-letter-spacing": 0.15, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1.1, "stops": [ [ 2, 14 ], [ 5, 20 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-lg-ln", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 1, - "maxzoom": 4, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "labelrank", 1 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 4, - "text-letter-spacing": 0.25, - "text-line-height": 1.1, - "symbol-placement": "line", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-lg-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 1, - "maxzoom": 4, - "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "labelrank", 1 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 4, - "text-letter-spacing": 0.25, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "state-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "composite", - "source-layer": "state_label", - "minzoom": 3, - "maxzoom": 9, - "filter": [ "<", "area", 20000 ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 6, 10 ], [ 9, 14 ] ] }, - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "text-field": { "base": 1, "stops": [ [ 0, "{abbr}" ], [ 6, "{name_en}" ] ] }, - "text-letter-spacing": 0.15, - "text-max-width": 5 - }, "paint": { - "text-opacity": 1, - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", + "text-color": "#633", + "text-halo-color": "rgba(255,255,255,0.7)", "text-halo-width": 1 - } + }, + "filter": [ + "all", + [ + "==", + "class", + "continent" + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 13, + "text-field": "{name:latin}", + "text-justify": "center", + "text-transform": "uppercase" + }, + "source": "openmaptiles", + "maxzoom": 1, + "metadata": {}, + "source-layer": "place" }, { - "id": "state-label-md", + "id": "housenumber", "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "composite", - "source-layer": "state_label", - "minzoom": 3, - "maxzoom": 8, - "filter": [ "all", [ "<", "area", 80000 ], [ ">=", "area", 20000 ] ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 5, 10 ], [ 8, 16 ] ] }, - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "text-field": { "base": 1, "stops": [ [ 0, "{abbr}" ], [ 5, "{name_en}" ] ] }, - "text-letter-spacing": 0.15, - "text-max-width": 6 - }, "paint": { - "text-opacity": 1, - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "state-label-lg", - "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "composite", - "source-layer": "state_label", - "minzoom": 3, - "maxzoom": 7, - "filter": [ ">=", "area", 80000 ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 4, 10 ], [ 7, 18 ] ] }, - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "text-padding": 1, - "text-field": { "base": 1, "stops": [ [ 0, "{abbr}" ], [ 4, "{name_en}" ] ] }, - "text-letter-spacing": 0.15, - "text-max-width": 6 + "text-color": "rgba(119, 102, 85, 0.69)" }, - "paint": { - "text-opacity": 1, - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "country-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "composite", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 10, - "filter": [ ">=", "scalerank", 5 ], "layout": { - "text-field": "{name_en}", - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 0.9, "stops": [ [ 5, 14 ], [ 9, 22 ] ] } + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": 10, + "text-field": "{housenumber}" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } - }, - { - "id": "country-label-md", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "composite", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 8, - "filter": [ "in", "scalerank", 3, 4 ], - "layout": { - "text-field": { "base": 1, "stops": [ [ 0, "{code}" ], [ 2, "{name_en}" ] ] }, - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 3, 10 ], [ 8, 24 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } - }, - { - "id": "country-label-lg", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "composite", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 7, - "filter": [ "in", "scalerank", 1, 2 ], - "layout": { - "text-field": "{name_en}", - "text-max-width": { "base": 1, "stops": [ [ 0, 5 ], [ 3, 6 ] ] }, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 10 ], [ 6, 24 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } + "source": "openmaptiles", + "minzoom": 17.5, + "source-layer": "housenumber" } - ] + ], + "sprite": "maptiler://sprites/streets/sprite", + "bearing": 0, + "sources": { + "openmaptiles": { + "url": "maptiler://sources/v3", + "type": "vector" + }, + "maptiler_attribution": { + "type": "vector", + "attribution": "© MapTiler © OpenStreetMap contributors" + } + }, + "version": 8, + "metadata": { + "mapbox:type": "template", + "maptiler:copyright": "This style was generated on MapTiler Cloud. Usage outside of MapTiler Cloud requires valid OpenMapTiles Production Package: https://openmaptiles.com/production-package/ -- please contact us.", + "openmaptiles:version": "3.x" + } } \ No newline at end of file diff --git a/benchmark/fixtures/api/style_formatted_labels.json b/benchmark/fixtures/api/style_formatted_labels.json index c62777038..fbb17af00 100644 --- a/benchmark/fixtures/api/style_formatted_labels.json +++ b/benchmark/fixtures/api/style_formatted_labels.json @@ -1,3993 +1,6514 @@ { - "version": 8, - "name": "Mapbox Streets", - "metadata": { - "mapbox:autocomposite": true, - "mapbox:type": "default", - "mapbox:groups": { - "1444934828655.3389": { "name": "Aeroways", "collapsed": true }, - "1444933322393.2852": { "name": "POI labels (scalerank 1)", "collapsed": true }, - "1444855786460.0557": { "name": "Roads", "collapsed": true }, - "1444933575858.6992": { "name": "Highway shields", "collapsed": true }, - "1444934295202.7542": { "name": "Admin boundaries", "collapsed": true }, - "1444856151690.9143": { "name": "State labels", "collapsed": true }, - "1444933721429.3076": { "name": "Road labels", "collapsed": true }, - "1444933358918.2366": { "name": "POI labels (scalerank 2)", "collapsed": true }, - "1444933808272.805": { "name": "Water labels", "collapsed": true }, - "1444933372896.5967": { "name": "POI labels (scalerank 3)", "collapsed": true }, - "1444855799204.86": { "name": "Bridges", "collapsed": true }, - "1444856087950.3635": { "name": "Marine labels", "collapsed": true }, - "1456969573402.7817": { "name": "Hillshading", "collapsed": true }, - "1444862510685.128": { "name": "City labels", "collapsed": true }, - "1444855769305.6016": { "name": "Tunnels", "collapsed": true }, - "1456970288113.8113": { "name": "Landcover", "collapsed": true }, - "1444856144497.7825": { "name": "Country labels", "collapsed": true }, - "1444933456003.5437": { "name": "POI labels (scalerank 4)", "collapsed": true } - } - }, - "sources": { - "composite": { "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7", "type": "vector" } - }, - "sprite": "mapbox://sprites/mapbox/streets-v10", - "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf", - "visibility": "public", + "id": "streets", + "name": "Streets", + "zoom": 1, + "pitch": 0, + "center": [ + 0, + 0 + ], + "glyphs": "maptiler://fonts/{fontstack}/{range}.pbf", "layers": [ { "id": "background", "type": "background", - "layout": {}, "paint": { - "background-color": { "base": 1, "stops": [ [ 11, "hsl(35, 32%, 91%)" ], [ 13, "hsl(35, 12%, 89%)" ] ] } + "background-color": { + "stops": [ + [ + 6, + "rgba(252, 247, 229, 1)" + ], + [ + 10, + "rgba(252, 247, 229, 1)" + ], + [ + 14, + "rgba(246, 241, 229, 1)" + ], + [ + 15, + "rgba(246, 241, 229, 1)" + ] + ] + } + }, + "layout": { + "visibility": "visible" } }, { - "id": "landcover_snow", + "id": "landcover_cropland", "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "filter": [ "==", "class", "snow" ], - "layout": {}, - "paint": { "fill-color": "hsl(0, 0%, 100%)", "fill-opacity": 0.2, "fill-antialias": false } + "paint": { + "fill-color": "rgba(243, 235, 195, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "crop" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_grassland", + "type": "fill", + "paint": { + "fill-color": "rgba(226, 236, 197, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "grass" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_scrubland", + "type": "fill", + "paint": { + "fill-color": "rgba(199, 230, 179, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "scrub" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_treeland", + "type": "fill", + "paint": { + "fill-color": "rgba(190, 222, 173, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "tree" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_forestland", + "type": "fill", + "paint": { + "fill-color": "rgba(171, 217, 170, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "forest" + ] + ], + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "landcover_snowland", + "type": "fill", + "paint": { + "fill-color": "hsl(0, 0%, 100%)", + "fill-opacity": { + "base": 1, + "stops": [ + [ + 4, + 1 + ], + [ + 8, + 0 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "snow" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "globallandcover" + }, + { + "id": "park_outline", + "type": "line", + "paint": { + "line-color": "rgba(228, 241, 215, 1)", + "line-opacity": 1, + "line-dasharray": [ + 1, + 1.5 + ] + }, + "filter": [ + "all" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "park" + }, + { + "id": "landuse_residential", + "type": "fill", + "paint": { + "fill-color": { + "base": 1, + "stops": [ + [ + 9, + "rgba(233, 227, 210, 0.80)" + ], + [ + 12, + "rgba(233, 227, 210, 0.55)" + ], + [ + 16, + "rgba(233, 227, 210, 0.35)" + ] + ] + } + }, + "filter": [ + "all", + [ + "in", + "class", + "residential", + "suburbs", + "neighbourhood" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 24, + "metadata": {}, + "source-layer": "landuse" }, { "id": "landcover_wood", "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "wood" ], - "layout": {}, "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, + "fill-color": "hsla(98, 61%, 72%, 0.7)", + "fill-opacity": 0.4, "fill-antialias": false - } - }, - { - "id": "landcover_scrub", - "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "scrub" ], - "layout": {}, - "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, - "fill-antialias": false - } + }, + "filter": [ + "all", + [ + "==", + "class", + "wood" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" }, { "id": "landcover_grass", "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "grass" ], - "layout": {}, "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, + "fill-color": "rgba(224, 232, 201, 1)", + "fill-opacity": 0.3, "fill-antialias": false - } - }, - { - "id": "landcover_crop", - "type": "fill", - "metadata": { "mapbox:group": "1456970288113.8113" }, - "source": "composite", - "source-layer": "landcover", - "maxzoom": 14, - "filter": [ "==", "class", "crop" ], - "layout": {}, - "paint": { - "fill-color": "hsl(75, 62%, 81%)", - "fill-opacity": { "base": 1.5, "stops": [ [ 2, 0.3 ], [ 7, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "national_park", - "type": "fill", - "source": "composite", - "source-layer": "landuse_overlay", - "filter": [ "==", "class", "national_park" ], - "layout": {}, - "paint": { - "fill-color": "hsl(100, 58%, 76%)", - "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 0.5 ] ] } - } - }, - { - "id": "hospital", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "hospital" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(340, 37%, 87%)" ], [ 16, "hsl(340, 63%, 89%)" ] ] } - } - }, - { - "id": "school", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "school" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(50, 47%, 81%)" ], [ 16, "hsl(50, 63%, 84%)" ] ] } - } - }, - { - "id": "park", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "park" ], - "layout": {}, - "paint": { - "fill-color": "hsl(100, 58%, 76%)", - "fill-opacity": { "base": 1, "stops": [ [ 5, 0 ], [ 6, 1 ] ] } - } - }, - { - "id": "pitch", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "pitch" ], - "layout": {}, - "paint": { "fill-color": "hsl(100, 57%, 72%)" } - }, - { - "id": "pitch-line", - "type": "line", - "source": "composite", - "source-layer": "landuse", - "minzoom": 15, - "filter": [ "==", "class", "pitch" ], - "layout": { "line-join": "miter" }, - "paint": { "line-color": "hsl(75, 57%, 84%)" } - }, - { - "id": "cemetery", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "cemetery" ], - "layout": {}, - "paint": { "fill-color": "hsl(75, 37%, 81%)" } - }, - { - "id": "industrial", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "industrial" ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15.5, "hsl(230, 15%, 86%)" ], [ 16, "hsl(230, 29%, 89%)" ] ] } - } - }, - { - "id": "sand", - "type": "fill", - "source": "composite", - "source-layer": "landuse", - "filter": [ "==", "class", "sand" ], - "layout": {}, - "paint": { "fill-color": "hsl(60, 46%, 87%)" } - }, - { - "id": "hillshade_highlight_bright", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 94 ], - "layout": {}, - "paint": { - "fill-color": "hsl(0, 0%, 100%)", - "fill-opacity": { "stops": [ [ 14, 0.12 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_highlight_med", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 90 ], - "layout": {}, - "paint": { - "fill-color": "hsl(0, 0%, 100%)", - "fill-opacity": { "stops": [ [ 14, 0.12 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_faint", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 89 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.05 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_med", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 78 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.05 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_dark", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 67 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.06 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "hillshade_shadow_extreme", - "type": "fill", - "metadata": { "mapbox:group": "1456969573402.7817" }, - "source": "composite", - "source-layer": "hillshade", - "maxzoom": 16, - "filter": [ "==", "level", 56 ], - "layout": {}, - "paint": { - "fill-color": "hsl(56, 59%, 22%)", - "fill-opacity": { "stops": [ [ 14, 0.06 ], [ 16, 0 ] ] }, - "fill-antialias": false - } - }, - { - "id": "waterway-river-canal", - "type": "line", - "source": "composite", - "source-layer": "waterway", - "minzoom": 8, - "filter": [ "in", "class", "canal", "river" ], - "layout": { - "line-cap": { "base": 1, "stops": [ [ 0, "butt" ], [ 11, "round" ] ] }, - "line-join": "round" }, - "paint": { - "line-color": "hsl(205, 87%, 76%)", - "line-width": { "base": 1.3, "stops": [ [ 8.5, 0.1 ], [ 20, 8 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 8, 0 ], [ 8.5, 1 ] ] } - } - }, - { - "id": "waterway-small", - "type": "line", - "source": "composite", - "source-layer": "waterway", - "minzoom": 13, - "filter": [ "!in", "class", "canal", "river" ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-color": "hsl(205, 87%, 76%)", - "line-width": { "base": 1.35, "stops": [ [ 13.5, 0.1 ], [ 20, 3 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13, 0 ], [ 13.5, 1 ] ] } - } - }, - { - "id": "water-shadow", - "type": "fill", - "source": "composite", - "source-layer": "water", - "layout": {}, - "paint": { - "fill-color": "hsl(215, 84%, 69%)", - "fill-translate": { "base": 1.2, "stops": [ [ 7, [ 0, 0 ] ], [ 16, [ -1, -1 ] ] ] }, - "fill-translate-anchor": "viewport", - "fill-opacity": 1 - } - }, - { "id": "water", "ref": "water-shadow", "paint": { "fill-color": "hsl(196, 80%, 70%)" } }, - { - "id": "barrier_line-land-polygon", - "type": "fill", - "source": "composite", - "source-layer": "barrier_line", - "filter": [ "all", [ "==", "$type", "Polygon" ], [ "==", "class", "land" ] ], - "layout": {}, - "paint": { "fill-color": "hsl(35, 12%, 89%)" } - }, - { - "id": "barrier_line-land-line", - "type": "line", - "source": "composite", - "source-layer": "barrier_line", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "land" ] ], - "layout": { "line-cap": "round" }, - "paint": { - "line-width": { "base": 1.99, "stops": [ [ 14, 0.75 ], [ 20, 40 ] ] }, - "line-color": "hsl(35, 12%, 89%)" - } - }, - { - "id": "aeroway-polygon", - "type": "fill", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "composite", - "source-layer": "aeroway", - "minzoom": 11, - "filter": [ "all", [ "==", "$type", "Polygon" ], [ "!=", "type", "apron" ] ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "fill-opacity": { "base": 1, "stops": [ [ 11, 0 ], [ 11.5, 1 ] ] } - } - }, - { - "id": "aeroway-runway", - "type": "line", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "composite", - "source-layer": "aeroway", - "minzoom": 9, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "runway" ] ], - "layout": {}, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 9, 1 ], [ 18, 80 ] ] } - } - }, - { - "id": "aeroway-taxiway", - "type": "line", - "metadata": { "mapbox:group": "1444934828655.3389" }, - "source": "composite", - "source-layer": "aeroway", - "minzoom": 9, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "taxiway" ] ], - "layout": {}, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(230, 23%, 82%)" ], [ 16, "hsl(230, 37%, 84%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 10, 0.5 ], [ 18, 20 ] ] } - } - }, - { - "id": "building-line", - "type": "line", - "source": "composite", - "source-layer": "building", - "minzoom": 15, - "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], - "layout": {}, - "paint": { - "line-color": "hsl(35, 6%, 79%)", - "line-width": { "base": 1.5, "stops": [ [ 15, 0.75 ], [ 20, 3 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] } - } - }, - { - "id": "building", - "type": "fill", - "source": "composite", - "source-layer": "building", - "minzoom": 15, - "filter": [ "all", [ "!=", "type", "building:part" ], [ "==", "underground", "false" ] ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 15, "hsl(35, 11%, 88%)" ], [ 16, "hsl(35, 8%, 85%)" ] ] }, - "fill-opacity": { "base": 1, "stops": [ [ 15.5, 0 ], [ 16, 1 ] ] }, - "fill-outline-color": "hsl(35, 6%, 79%)" - } - }, - { - "id": "tunnel-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "tunnel-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "tunnel-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "trunk_link" ] + "==", + "class", + "grass" ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-dasharray": [ 3, 3 ] - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" }, { - "id": "tunnel-street_limited-case", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street_limited-low", + "id": "landuse_cemetery", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } + "fill-color": "hsl(75, 37%, 81%)" + }, + "filter": [ + "==", + "class", + "cemetery" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-street-case", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street-low", + "id": "landuse_hospital", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 19%, 75%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } + "fill-color": "rgba(249, 225, 220, 1)" + }, + "filter": [ + "==", + "class", + "hospital" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "id": "landuse_school", + "type": "fill", + "paint": { + "fill-color": "rgb(236,238,204)" + }, + "filter": [ + "==", + "class", + "school" + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" + }, + { + "id": "landuse_stadium", + "type": "fill", + "paint": { + "fill-color": "rgb(236,238,204)" + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "in", "class", "secondary", "tertiary" ], [ "==", "structure", "tunnel" ] ] + [ + "in", + "class", + "stadium", + "pitch", + "track" + ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(230, 19%, 75%)" - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "id": "landuse_garages", + "type": "fill", + "paint": { + "fill-color": "rgba(236, 236, 236, 1)" + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "==", "structure", "tunnel" ] ] + [ + "in", + "class", + "garages" + ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-dasharray": [ 3, 3 ], - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(230, 19%, 75%)" - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, + "id": "landuse_dam", + "type": "fill", + "paint": { + "fill-color": "rgba(209, 212, 190, 1)" + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk_link" ] ] + [ + "in", + "class", + "dam" + ] ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ] - } + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landuse" }, { - "id": "tunnel-motorway_link-case", + "id": "waterway_tunnel", "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway_link" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "trunk" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": 1, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": 1, - "line-dasharray": [ 3, 3 ] - } - }, - { - "id": "tunnel-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 2, + 4 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 14, + "source-layer": "waterway" + }, + { + "id": "waterway_river", + "type": "line", + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 0.5 + ], + [ + 20, + 6 + ] ] } - } - }, - { - "id": "tunnel-path", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + }, "filter": [ "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "==", "class", "path" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "steps" ] + "==", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "!=", + "intermittent", + 1 ] ], - "layout": { "line-join": "round" }, + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" + }, + { + "id": "waterway_river_intermittent", + "type": "line", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 0.5 + ], + [ + 20, + 6 + ] + ] }, - "line-color": "hsl(35, 26%, 95%)", - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "tunnel-steps", - "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "line-dasharray": [ + 3, + 2 + ] + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "tunnel" ], [ "==", "type", "steps" ] ] + [ + "==", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "==", + "intermittent", + 1 + ] ], - "layout": { "line-join": "round" }, + "layout": { + "line-cap": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" + }, + { + "id": "waterway_other", + "type": "line", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(35, 26%, 95%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "!=", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "!=", + "intermittent", + 1 + ] + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" + }, + { + "id": "waterway_other_intermittent", + "type": "line", + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } + "line-dasharray": [ + 4, + 3 + ] + }, + "filter": [ + "all", + [ + "!=", + "class", + "river" + ], + [ + "!=", + "brunnel", + "tunnel" + ], + [ + "==", + "intermittent", + 1 + ] + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "waterway" }, { - "id": "tunnel-trunk_link", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-trunk_link-case", + "id": "water_intermittent", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 77%, 78%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ] - } + "fill-color": "rgba(172, 218, 251, 1)", + "fill-opacity": 0.85 + }, + "filter": [ + "all", + [ + "==", + "intermittent", + 1 + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "water" }, { - "id": "tunnel-motorway_link", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-motorway_link-case", + "id": "water", + "type": "fill", "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 78%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ] - } + "fill-color": "rgba(134, 204, 250, 1)" + }, + "filter": [ + "all", + [ + "!=", + "intermittent", + 1 + ], + [ + "!=", + "brunnel", + "tunnel" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "water" }, { - "id": "tunnel-pedestrian", + "id": "landcover_sand", + "type": "fill", + "paint": { + "fill-color": "#f2e9ac", + "fill-opacity": 1, + "fill-antialias": false + }, + "filter": [ + "all", + [ + "in", + "class", + "sand" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" + }, + { + "id": "landcover_sand_outline", "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, + "paint": { + "line-color": "#f2e9ac", + "line-width": 2 + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "tunnel-service-link-track", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-service-link-track-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": [ 1, 0 ] - } - }, - { - "id": "tunnel-street_limited", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-street", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "tunnel-secondary-tertiary", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-secondary-tertiary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ], - "line-blur": 0 - } - }, - { - "id": "tunnel-primary", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-primary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": [ 1, 0 ], - "line-blur": 0 - } - }, - { - "id": "tunnel-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "in", "class", "link", "path", "pedestrian", "service", "track" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "trunk_link" ] + "in", + "class", + "sand" ] ], "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 + "visibility": "visible" }, - "paint": {} + "source": "openmaptiles", + "metadata": {}, + "source-layer": "landcover" }, { - "id": "tunnel-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, + "id": "aeroway_fill", + "type": "fill", + "paint": { + "fill-color": "rgba(229, 228, 224, 1)", + "fill-opacity": 0.7 + }, "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] + "==", + "$type", + "Polygon" ], "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 + "visibility": "visible" }, - "paint": {} + "source": "openmaptiles", + "minzoom": 11, + "metadata": {}, + "source-layer": "aeroway" }, { - "id": "tunnel-trunk", + "id": "aeroway_runway", "type": "line", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", + "paint": { + "line-color": "#f0ede9", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 3 + ], + [ + 20, + 16 + ] + ] + } + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "trunk" ], [ "==", "structure", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 77%, 78%)" - } - }, - { - "id": "tunnel-motorway", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "ref": "tunnel-motorway-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-opacity": 1, - "line-color": "hsl(26, 100%, 78%)", - "line-blur": 0 - } - }, - { - "id": "tunnel-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855769305.6016" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], [ - "all", - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "tunnel" ], - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ] + "==", + "$type", + "LineString" + ], + [ + "==", + "class", + "runway" ] ], "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 + "visibility": "visible" }, - "paint": {} + "source": "openmaptiles", + "minzoom": 11, + "metadata": {}, + "source-layer": "aeroway" + }, + { + "id": "aeroway_taxiway", + "type": "line", + "paint": { + "line-color": "#f0ede9", + "line-width": { + "base": 1.2, + "stops": [ + [ + 11, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "class", + "taxiway" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 11, + "metadata": {}, + "source-layer": "aeroway" }, { "id": "ferry", "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry" ] ], - "layout": { "line-join": "round" }, "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, - "line-opacity": 1, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] }, - "line-dasharray": { "base": 1, "stops": [ [ 12, [ 1, 0 ] ], [ 13, [ 12, 4 ] ] ] } - } - }, - { - "id": "ferry_auto", - "type": "line", - "source": "composite", - "source-layer": "road", - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "type", "ferry_auto" ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "base": 1, "stops": [ [ 15, "hsl(205, 73%, 63%)" ], [ 17, "hsl(230, 73%, 63%)" ] ] }, - "line-opacity": 1, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "road-path-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "path" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!in", "type", "crossing", "sidewalk", "steps" ] + "line-color": "rgba(108, 159, 182, 1)", + "line-width": 1.1, + "line-dasharray": [ + 2, + 2 ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "road-steps-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "steps" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, - "line-color": "hsl(230, 17%, 82%)", - "line-dasharray": [ 1, 0 ], - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "road-sidewalk-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "structure", "bridge", "tunnel" ], - [ "in", "type", "crossing", "sidewalk" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 0.75 ] ] } - } - }, - { - "id": "turning-features-outline", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], - "layout": { - "icon-image": "turning-circle-outline", - "icon-size": { "base": 1.5, "stops": [ [ 14, 0.122 ], [ 18, 0.969 ], [ 20, 1 ] ] }, - "icon-allow-overlap": true, - "icon-ignore-placement": true, - "icon-padding": 0, - "icon-rotation-alignment": "map" }, - "paint": {} - }, - { - "id": "road-pedestrian-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": 0, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "road-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11, 0 ], [ 11.25, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "road-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } - } - }, - { - "id": "road-street_limited-case", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street-case", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "secondary", "tertiary" ], - [ "!in", "structure", "bridge", "tunnel" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } - } - }, - { - "id": "road-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 9.99, 0 ], [ 10, 1 ] ] } - } - }, - { - "id": "road-motorway_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 10, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway_link" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "road-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "!in", "structure", "bridge", "tunnel" ], [ "==", "type", "trunk_link" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "road-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "trunk" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 6, 0 ], [ 6.1, 1 ] ] } - } - }, - { - "id": "road-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "motorway" ], [ "!in", "structure", "bridge", "tunnel" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "road-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "none" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] - ] - } - } - }, - { - "id": "road-sidewalks", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-sidewalk-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } - } - }, - { - "id": "road-path", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-path-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "road-steps", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-steps-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "road-trunk_link", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-trunk_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)", - "line-opacity": 1 - } - }, - { - "id": "road-motorway_link", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-motorway_link-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)", - "line-opacity": 1 - } - }, - { - "id": "road-pedestrian", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-pedestrian-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "road-pedestrian-polygon-fill", - "type": "fill", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "Polygon" ], - [ "all", [ "in", "class", "path", "pedestrian" ], [ "==", "structure", "none" ] ] - ], - "layout": {}, - "paint": { - "fill-color": { "base": 1, "stops": [ [ 16, "hsl(230, 16%, 94%)" ], [ 16.25, "hsl(230, 50%, 98%)" ] ] }, - "fill-outline-color": "hsl(230, 26%, 88%)", - "fill-opacity": 1 - } - }, - { - "id": "road-pedestrian-polygon-pattern", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-pedestrian-polygon-fill", - "paint": { - "fill-color": "hsl(0, 0%, 100%)", - "fill-outline-color": "hsl(35, 10%, 83%)", - "fill-pattern": "pedestrian-polygon", - "fill-opacity": { "base": 1, "stops": [ [ 16, 0 ], [ 16.25, 1 ] ] } - } - }, - { - "id": "road-polygon", - "type": "fill", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 12, - "filter": [ - "all", - [ "==", "$type", "Polygon" ], - [ - "all", - [ "!in", "class", "motorway", "path", "pedestrian", "trunk" ], - [ "!in", "structure", "bridge", "tunnel" ] - ] - ], - "layout": {}, - "paint": { "fill-color": "hsl(0, 0%, 100%)", "fill-outline-color": "#d6d9e6" } - }, - { - "id": "road-service-link-track", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-service-link-track-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)" - } - }, - { - "id": "road-street_limited", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-street", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "road-secondary-tertiary", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-secondary-tertiary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 8, "hsl(0, 0%, 100%)" ] ] }, - "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } - } - }, - { - "id": "road-primary", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-primary-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { "base": 1, "stops": [ [ 5, "hsl(35, 32%, 91%)" ], [ 7, "hsl(0, 0%, 100%)" ] ] }, - "line-opacity": 1 - } - }, - { - "id": "road-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "path", "pedestrian", "service", "track" ], - [ "==", "oneway", "true" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "icon-rotation-alignment": "map", - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "road-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ], - [ "==", "oneway", "true" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "icon-rotation-alignment": "map", - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "road-trunk", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-trunk-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { - "base": 1, - "stops": [ [ 6, "hsl(0, 0%, 100%)" ], [ 6.1, "hsl(46, 80%, 60%)" ], [ 9, "hsl(46, 85%, 67%)" ] ] - } - } - }, - { - "id": "road-motorway", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-motorway-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": { "base": 1, "stops": [ [ 8, "hsl(26, 87%, 62%)" ], [ 9, "hsl(26, 100%, 68%)" ] ] } - } - }, - { - "id": "road-rail", - "type": "line", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "major_rail", "minor_rail" ], - [ "!in", "structure", "bridge", "tunnel" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "road-rail-tracks", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "ref": "road-rail", - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, - "line-dasharray": [ 0.1, 15 ], - "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "level-crossings", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "class", "level_crossing" ] ], - "layout": { "icon-size": 1, "icon-image": "level-crossing", "icon-allow-overlap": true }, - "paint": {} - }, - { - "id": "road-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ], - [ "==", "oneway", "true" ], - [ "!in", "structure", "bridge", "tunnel" ], - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "icon-padding": 2, - "symbol-spacing": 200 - }, - "paint": {} - }, - { - "id": "turning-features", - "type": "symbol", - "metadata": { "mapbox:group": "1444855786460.0557" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "class", "turning_circle", "turning_loop" ] ], - "layout": { - "icon-image": "turning-circle", - "icon-size": { "base": 1.5, "stops": [ [ 14, 0.095 ], [ 18, 1 ] ] }, - "icon-allow-overlap": true, - "icon-ignore-placement": true, - "icon-padding": 0, - "icon-rotation-alignment": "map" - }, - "paint": {} - }, - { - "id": "bridge-path-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "path" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "steps" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 18, 7 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-color": "hsl(230, 17%, 82%)", - "line-blur": 0, - "line-opacity": { "base": 1, "stops": [ [ 15, 0 ], [ 15.25, 1 ] ] } - } - }, - { - "id": "bridge-steps-bg", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "steps" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 2 ], [ 17, 4.6 ], [ 18, 7 ] ] }, - "line-color": "hsl(230, 17%, 82%)", - "line-dasharray": [ 1, 0 ], - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 0.75 ] ] } - } - }, - { - "id": "bridge-pedestrian-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "pedestrian" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 2 ], [ 18, 14.5 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": 0, - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-street-low", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "bridge-street_limited-low", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "stops": [ [ 11.5, 0 ], [ 12, 1 ], [ 14, 1 ], [ 14.01, 0 ] ] } - } - }, - { - "id": "bridge-service-link-track-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] } - } - }, - { - "id": "bridge-street_limited-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street_limited" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } - } - }, - { - "id": "bridge-street-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 11, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "street" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-gap-width": { "base": 1.5, "stops": [ [ 13, 0 ], [ 14, 2 ], [ 18, 18 ] ] } - } - }, - { - "id": "bridge-secondary-tertiary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "in", "class", "secondary", "tertiary" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.2, "stops": [ [ 10, 0.75 ], [ 18, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-translate": [ 0, 0 ] - } - }, - { - "id": "bridge-primary-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "primary" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-translate": [ 0, 0 ] - } - }, - { - "id": "bridge-trunk_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "bridge-motorway_link-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": 1 - } - }, - { - "id": "bridge-trunk-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-motorway-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-construction", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "class", "construction" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(230, 24%, 87%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "line-dasharray": { - "base": 1, - "stops": [ - [ 14, [ 0.4, 0.8 ] ], - [ 15, [ 0.3, 0.6 ] ], - [ 16, [ 0.2, 0.3 ] ], - [ 17, [ 0.2, 0.25 ] ], - [ 18, [ 0.15, 0.15 ] ] - ] - } - } - }, - { - "id": "bridge-path", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "path" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "steps" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 18, 4 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 1, 0.5 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "bridge-steps", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-steps-bg", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 15, 1 ], [ 16, 1.6 ], [ 18, 6 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-dasharray": { - "base": 1, - "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.75, 1 ] ], [ 16, [ 1, 0.75 ] ], [ 17, [ 0.3, 0.3 ] ] ] - }, - "line-opacity": { "base": 1, "stops": [ [ 14, 0 ], [ 14.25, 1 ] ] } - } - }, - { - "id": "bridge-trunk_link", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway_link", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-pedestrian", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-pedestrian-case", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1, - "line-dasharray": { "base": 1, "stops": [ [ 14, [ 1, 0 ] ], [ 15, [ 1.5, 0.4 ] ], [ 16, [ 1, 0.2 ] ] ] } - } - }, - { - "id": "bridge-service-link-track", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 14, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "service", "track" ], - [ "==", "structure", "bridge" ], - [ "!=", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 18, 12 ] ] }, - "line-color": "hsl(0, 0%, 100%)" - } - }, - { - "id": "bridge-street_limited", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-street_limited-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(35, 14%, 93%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-street", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-street-low", - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12.5, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] } - } - }, - { - "id": "bridge-secondary-tertiary", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "in", "type", "secondary", "tertiary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 8.5, 0.5 ], [ 10, 0.75 ], [ 18, 26 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": { "base": 1.2, "stops": [ [ 5, 0 ], [ 5.5, 1 ] ] } - } - }, - { - "id": "bridge-primary", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "==", "structure", "bridge" ], [ "==", "type", "primary" ] ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-opacity": 1 - } - }, - { - "id": "bridge-oneway-arrows-blue-minor", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "path", "pedestrian", "service", "track" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 17, "oneway-small" ], [ 18, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-rotation-alignment": "map", - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "bridge-oneway-arrows-blue-major", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "primary", "secondary", "street", "street_limited", "tertiary" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-small" ], [ 17, "oneway-large" ] ] }, - "symbol-spacing": 200, - "icon-rotation-alignment": "map", - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "bridge-trunk", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ "!in", "layer", 2, 3, 4, 5 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-rail", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ "all", [ "in", "class", "major_rail", "minor_rail" ], [ "==", "structure", "bridge" ] ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "bridge-rail-tracks", - "metadata": { "mapbox:group": "1444855799204.86" }, - "ref": "bridge-rail", - "paint": { - "line-color": { "stops": [ [ 13, "hsl(50, 17%, 82%)" ], [ 16, "hsl(230, 10%, 74%)" ] ] }, - "line-width": { "base": 1.5, "stops": [ [ 14, 4 ], [ 20, 8 ] ] }, - "line-dasharray": [ 0.1, 15 ], - "line-opacity": { "base": 1, "stops": [ [ 13.75, 0 ], [ 20, 1 ] ] } - } - }, - { - "id": "bridge-trunk_link-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 10.99, 0 ], [ 11, 1 ] ] } - } - }, - { - "id": "bridge-motorway_link-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.75 ], [ 20, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-opacity": 1 - } - }, - { - "id": "bridge-trunk-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-motorway-2-case", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 10, 1 ], [ 16, 2 ] ] }, - "line-color": "hsl(0, 0%, 100%)", - "line-gap-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] } - } - }, - { - "id": "bridge-trunk_link-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ], - [ "==", "type", "trunk_link" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway_link-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway_link" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 12, 0.5 ], [ 14, 2 ], [ 18, 18 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-trunk-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "trunk" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(46, 85%, 67%)" - } - }, - { - "id": "bridge-motorway-2", - "type": "line", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "==", "class", "motorway" ], - [ ">=", "layer", 2 ], - [ "==", "structure", "bridge" ] - ] - ], - "layout": { "line-cap": "round", "line-join": "round" }, - "paint": { - "line-width": { "base": 1.5, "stops": [ [ 5, 0.75 ], [ 18, 32 ] ] }, - "line-color": "hsl(26, 100%, 68%)" - } - }, - { - "id": "bridge-oneway-arrows-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444855799204.86" }, - "source": "composite", - "source-layer": "road", - "minzoom": 16, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "all", - [ "in", "class", "link", "motorway", "motorway_link", "trunk" ], - [ "==", "oneway", "true" ], - [ "==", "structure", "bridge" ], - [ "!in", "type", "primary_link", "secondary_link", "tertiary_link" ] - ] - ], - "layout": { - "symbol-placement": "line", - "icon-image": { "base": 1, "stops": [ [ 16, "oneway-white-small" ], [ 17, "oneway-white-large" ] ] }, - "symbol-spacing": 200, - "icon-padding": 2 - }, - "paint": {} - }, - { - "id": "aerialway", - "type": "line", - "source": "composite", - "source-layer": "road", - "minzoom": 13, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "class", "aerialway" ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-color": "hsl(230, 10%, 74%)", - "line-width": { "base": 1.5, "stops": [ [ 14, 0.5 ], [ 20, 1 ] ] } - } - }, - { - "id": "admin-3-4-boundaries-bg", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "filter": [ "all", [ ">=", "admin_level", 3 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "bevel" }, - "paint": { - "line-color": { "base": 1, "stops": [ [ 8, "hsl(35, 12%, 89%)" ], [ 16, "hsl(230, 49%, 90%)" ] ] }, - "line-width": { "base": 1, "stops": [ [ 7, 3.75 ], [ 12, 5.5 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 7, 0 ], [ 8, 0.75 ] ] }, - "line-dasharray": [ 1, 0 ], - "line-translate": [ 0, 0 ], - "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 8, 3 ] ] } - } - }, - { - "id": "admin-2-boundaries-bg", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "miter" }, - "paint": { - "line-width": { "base": 1, "stops": [ [ 3, 3.5 ], [ 10, 8 ] ] }, - "line-color": { "base": 1, "stops": [ [ 6, "hsl(35, 12%, 89%)" ], [ 8, "hsl(230, 49%, 90%)" ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 3, 0 ], [ 4, 0.5 ] ] }, - "line-translate": [ 0, 0 ], - "line-blur": { "base": 1, "stops": [ [ 3, 0 ], [ 10, 2 ] ] } - } - }, - { - "id": "admin-3-4-boundaries", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "filter": [ "all", [ ">=", "admin_level", 3 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-dasharray": { "base": 1, "stops": [ [ 6, [ 2, 0 ] ], [ 7, [ 2, 2, 6, 2 ] ] ] }, - "line-width": { "base": 1, "stops": [ [ 7, 0.75 ], [ 12, 1.5 ] ] }, - "line-opacity": { "base": 1, "stops": [ [ 2, 0 ], [ 3, 1 ] ] }, - "line-color": { "base": 1, "stops": [ [ 3, "hsl(230, 14%, 77%)" ], [ 7, "hsl(230, 8%, 62%)" ] ] } - } - }, - { - "id": "admin-2-boundaries", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 0 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round", "line-cap": "round" }, - "paint": { - "line-color": "hsl(230, 8%, 51%)", - "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } - } - }, - { - "id": "admin-2-boundaries-dispute", - "type": "line", - "metadata": { "mapbox:group": "1444934295202.7542" }, - "source": "composite", - "source-layer": "admin", - "minzoom": 1, - "filter": [ "all", [ "==", "admin_level", 2 ], [ "==", "disputed", 1 ], [ "==", "maritime", 0 ] ], - "layout": { "line-join": "round" }, - "paint": { - "line-dasharray": [ 1.5, 1.5 ], - "line-color": "hsl(230, 8%, 51%)", - "line-width": { "base": 1, "stops": [ [ 3, 0.5 ], [ 10, 2 ] ] } - } - }, - { - "id": "housenum-label", - "type": "symbol", - "source": "composite", - "source-layer": "housenum_label", - "minzoom": 17, - "layout": { - "text-field": "{house_num}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-padding": 4, - "text-max-width": 7, - "text-size": 9.5 - }, - "paint": { - "text-color": "hsl(35, 2%, 69%)", - "text-halo-color": "hsl(35, 8%, 85%)", - "text-halo-width": 0.5, - "text-halo-blur": 0 - } - }, - { - "id": "waterway-label", - "type": "symbol", - "source": "composite", - "source-layer": "waterway_label", - "minzoom": 12, - "filter": [ "in", "class", "canal", "river" ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-max-angle": 30, - "text-size": { "base": 1, "stops": [ [ 13, 12 ], [ 18, 16 ] ] } - }, - "paint": { - "text-halo-width": 0.5, - "text-halo-color": "hsl(196, 80%, 70%)", - "text-color": "hsl(230, 48%, 44%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank4-l15", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "composite", - "source-layer": "poi_label", - "minzoom": 17, - "filter": [ - "all", - [ ">=", "localrank", 15 ], - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 4 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank4-l1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "composite", - "source-layer": "poi_label", - "minzoom": 15, - "filter": [ - "all", - [ "<=", "localrank", 14 ], - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 4 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks_scalerank4", - "type": "symbol", - "metadata": { "mapbox:group": "1444933456003.5437" }, - "source": "composite", - "source-layer": "poi_label", - "minzoom": 15, "filter": [ "all", [ "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 4 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-scalerank3", - "type": "symbol", - "metadata": { "mapbox:group": "1444933372896.5967" }, - "source": "composite", - "source-layer": "poi_label", - "filter": [ - "all", - [ - "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 3 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 1, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks-scalerank3", - "type": "symbol", - "metadata": { "mapbox:group": "1444933372896.5967" }, - "source": "composite", - "source-layer": "poi_label", - "filter": [ - "all", - [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" - ], - [ "==", "scalerank", 3 ] - ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{maki}-11", - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 - }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } - }, - { - "id": "road-label-small", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "composite", - "source-layer": "road_label", - "minzoom": 15, - "filter": [ - "all", - [ "==", "$type", "LineString" ], - [ - "!in", "class", - "link", - "motorway", - "pedestrian", - "primary", - "secondary", + "ferry" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_service_track_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 16, + 4 + ], + [ + 20, + 11 + ] + ] + }, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "ramp", + "1" + ], + [ + "==", + "brunnel", + "tunnel" + ], + [ + ">", + "layer", + 0 + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_street_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 0.5 + ], + [ + 13, + 1 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": { + "stops": [ + [ + 12, + 0 + ], + [ + 12.5, + 1 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", "street", - "street_limited", - "tertiary", + "street_limited" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_secondary_tertiary_casing", + "type": "line", + "paint": { + "line-color": "rgba(195, 189, 187, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 8, + 1.5 + ], + [ + 20, + 17 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_trunk_primary_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + }, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "primary", "trunk" ] ], "layout": { - "text-size": { "base": 1, "stops": [ [ 15, 10 ], [ 20, 13 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_en}", - "text-letter-spacing": 0.01 + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-halo-blur": 1 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "road-label-medium", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "composite", - "source-layer": "road_label", - "minzoom": 11, + "id": "tunnel_motorway_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + }, + "line-dasharray": [ + 0.5, + 0.25 + ] + }, "filter": [ "all", - [ "==", "$type", "LineString" ], - [ "in", "class", "link", "pedestrian", "street", "street_limited" ] - ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 11, 10 ], [ 20, 14 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": ["format", ["get", "name_en"], {"text-color": "green"}], - "text-letter-spacing": 0.01 - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "road-label-large", - "type": "symbol", - "metadata": { "mapbox:group": "1444933721429.3076" }, - "source": "composite", - "source-layer": "road_label", - "filter": [ "in", "class", "motorway", "primary", "secondary", "tertiary", "trunk" ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 9, 10 ], [ 20, 16 ] ] }, - "text-max-angle": 30, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-padding": 1, - "text-rotation-alignment": "map", - "text-field": "{name_en}", - "text-letter-spacing": 0.01 - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsla(0, 0%, 100%, 0.75)", - "text-halo-width": 1, - "text-halo-blur": 1 - } - }, - { - "id": "road-shields-black", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "composite", - "source-layer": "road_label", - "filter": [ - "all", - [ "<=", "reflen", 6 ], [ - "!in", - "shield", - "at-expressway", - "at-motorway", - "at-state-b", - "bg-motorway", - "bg-national", - "ch-main", - "ch-motorway", - "cz-motorway", - "cz-road", - "de-motorway", - "e-road", - "fi-main", - "gr-motorway", - "gr-national", - "hr-motorway", - "hr-state", - "hu-main", - "hu-motorway", - "nz-state", - "pl-expressway", - "pl-motorway", - "pl-national", - "ro-county", - "ro-motorway", - "ro-national", - "rs-motorway", - "rs-state-1b", - "se-main", - "si-expressway", - "si-motorway", - "sk-highway", - "sk-road", - "us-interstate", - "us-interstate-business", - "us-interstate-duplex", - "us-interstate-truck", - "za-metropolitan", - "za-national", - "za-provincial", - "za-regional" + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "tunnel" ] ], "layout": { - "text-size": 9, - "icon-image": "{shield}-{reflen}", - "icon-rotation-alignment": "viewport", - "text-max-angle": 38, - "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, - "text-padding": 2, - "text-rotation-alignment": "viewport", - "text-field": "{ref}", - "text-letter-spacing": 0.05, - "icon-padding": 2 + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(0, 0%, 7%)", - "icon-halo-color": "rgba(0, 0, 0, 1)", - "icon-halo-width": 1, - "text-opacity": 1, - "icon-color": "white", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "road-shields-white", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "composite", - "source-layer": "road_label", + "id": "tunnel_path_pedestrian", + "type": "line", + "paint": { + "line-color": "rgba(204, 196, 176, 0.45)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 0.5 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 1, + 0.75 + ] + }, "filter": [ "all", - [ "<=", "reflen", 6 ], + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "tunnel" + ], [ "in", - "shield", - "at-expressway", - "at-motorway", - "at-state-b", - "bg-motorway", - "bg-national", - "ch-main", - "ch-motorway", - "cz-motorway", - "cz-road", - "de-motorway", - "e-road", - "fi-main", - "gr-motorway", - "gr-national", - "hr-motorway", - "hr-state", - "hu-main", - "hu-motorway", - "nz-state", - "pl-expressway", - "pl-motorway", - "pl-national", - "ro-county", - "ro-motorway", - "ro-national", - "rs-motorway", - "rs-state-1b", - "se-main", - "si-expressway", - "si-motorway", - "sk-highway", - "sk-road", - "us-interstate", - "us-interstate-business", - "us-interstate-duplex", - "us-interstate-truck", - "za-metropolitan", - "za-national", - "za-provincial", - "za-regional" + "class", + "path", + "pedestrian" ] ], "layout": { - "text-size": 9, - "icon-image": "{shield}-{reflen}", - "icon-rotation-alignment": "viewport", - "text-max-angle": 38, - "symbol-spacing": { "base": 1, "stops": [ [ 11, 150 ], [ 14, 200 ] ] }, - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "symbol-placement": { "base": 1, "stops": [ [ 10, "point" ], [ 11, "line" ] ] }, - "text-padding": 2, - "text-rotation-alignment": "viewport", - "text-field": "{ref}", - "text-letter-spacing": 0.05, - "icon-padding": 2 + "visibility": "visible" }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway_link", + "type": "line", "paint": { - "text-color": "hsl(0, 0%, 100%)", - "icon-halo-color": "rgba(0, 0, 0, 1)", - "icon-halo-width": 1, - "text-opacity": 1, - "icon-color": "white", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0 - } - }, - { - "id": "motorway-junction", - "type": "symbol", - "metadata": { "mapbox:group": "1444933575858.6992" }, - "source": "composite", - "source-layer": "motorway_junction", - "minzoom": 14, - "filter": [ "all", [ ">", "reflen", 0 ], [ "<=", "reflen", 9 ] ], - "layout": { - "text-field": "{ref}", - "text-size": 9, - "icon-image": "motorway-exit-{reflen}", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ] + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } }, - "paint": { "text-color": "hsl(0, 0%, 100%)", "text-translate": [ 0, 0 ] } + "filter": [ + "all", + [ + "==", + "class", + "motorway_link" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "poi-scalerank2", - "type": "symbol", - "metadata": { "mapbox:group": "1444933358918.2366" }, - "source": "composite", - "source-layer": "poi_label", + "id": "tunnel_service_track", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_service_track_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "service_construction", + "track_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_link", + "type": "line", + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "ramp", + "1" + ], + [ + "==", + "brunnel", + "tunnel" + ], + [ + ">", + "layer", + 0 + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_minor", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "minor" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_minor_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "minor_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_secondary_tertiary", + "type": "line", + "paint": { + "line-color": "rgba(245, 245, 243, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_secondary_tertiary_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "secondary_construction", + "tertiary_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_trunk_primary", + "type": "line", + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_trunk_primary_construction", + "type": "line", + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "primary_construction", + "trunk_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway", + "type": "line", + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_motorway_construction", + "type": "line", + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway_construction" + ], + [ + "==", + "brunnel", + "tunnel" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_major_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "in", + "class", + "rail" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "tunnel_major_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 3 + ], + [ + 20, + 8 + ] + ] + }, + "line-dasharray": [ + 0.2, + 8 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "tunnel" + ], + [ + "==", + "class", + "rail" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_area_pier", + "type": "fill", + "paint": { + "fill-color": "rgba(246, 241, 229, 1)", + "fill-antialias": true + }, + "filter": [ + "all", + [ + "==", + "$type", + "Polygon" + ], + [ + "==", + "class", + "pier" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_pier", + "type": "line", + "paint": { + "line-color": "rgba(246, 241, 229, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 17, + 4 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "in", + "class", + "pier" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_area_bridge", + "type": "fill", + "paint": { + "fill-color": "rgba(246, 241, 229, 0.6)", + "fill-antialias": true + }, + "filter": [ + "all", + [ + "==", + "$type", + "Polygon" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_area_pattern", + "type": "fill", + "paint": { + "fill-pattern": "pedestrian_polygon" + }, + "filter": [ + "all", + [ + "==", + "$type", + "Polygon" + ], + [ + "!has", + "brunnel" + ], + [ + "!in", + "class", + "bridge", + "pier" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_service_track_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 16, + 4 + ], + [ + 20, + 11 + ] + ] + } + }, "filter": [ "all", [ "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "brunnel", + "bridge", + "tunnel" ], - [ "==", "scalerank", 2 ] + [ + "in", + "class", + "service", + "track" + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, - "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round" }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "poi-parks-scalerank2", - "type": "symbol", - "metadata": { "mapbox:group": "1444933358918.2366" }, - "source": "composite", - "source-layer": "poi_label", + "id": "road_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, "filter": [ "all", [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "!in", + "brunnel", + "bridge", + "tunnel" ], - [ "==", "scalerank", 2 ] + [ + "!in", + "class", + "motorway", + "trunk", + "primary", + "pedestrian", + "path", + "track", + "service" + ], + [ + "==", + "ramp", + 1 + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 14, 11 ], [ 20, 14 ] ] }, - "icon-image": { "stops": [ [ 14, "{maki}-11" ], [ 15, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "minzoom": 13, + "metadata": {}, + "source-layer": "transportation" }, { - "id": "rail-label", - "type": "symbol", - "source": "composite", - "source-layer": "rail_station_label", + "id": "road_trunk_primary_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 0.7 + ], + [ + 20, + 14 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", "minzoom": 12, - "filter": [ "!=", "maki", "entrance" ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 16, 11 ], [ 20, 13 ] ] }, - "icon-image": "{network}", - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-offset": [ 0, 0.85 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": { "base": 1, "stops": [ [ 0, "" ], [ 13, "{name_en}" ] ] }, - "text-letter-spacing": 0.01, - "icon-padding": 0, - "text-max-width": 7 - }, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_casing", + "type": "line", "paint": { - "text-color": "hsl(230, 48%, 44%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "icon-halo-width": 4, - "icon-halo-color": "#fff", - "text-opacity": { "base": 1, "stops": [ [ 13.99, 0 ], [ 14, 1 ] ] }, - "text-halo-blur": 0.5 - } - }, - { - "id": "water-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444933808272.805" }, - "source": "composite", - "source-layer": "water_label", - "minzoom": 15, - "filter": [ "<=", "area", 10000 ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 16, 13 ], [ 20, 16 ] ] } + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 0.5 + ], + [ + 13, + 1 + ], + [ + 14, + 4 + ], + [ + 20, + 20 + ] + ] + }, + "line-opacity": { + "stops": [ + [ + 12, + 0 + ], + [ + 12.5, + 1 + ] + ] + } }, - "paint": { "text-color": "hsl(230, 48%, 44%)" } - }, - { - "id": "water-label", - "type": "symbol", - "metadata": { "mapbox:group": "1444933808272.805" }, - "source": "composite", - "source-layer": "water_label", - "minzoom": 5, - "filter": [ ">", "area", 10000 ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 13, 13 ], [ 18, 18 ] ] } - }, - "paint": { "text-color": "hsl(230, 48%, 44%)" } - }, - { - "id": "place-residential", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "maxzoom": 18, - "filter": [ - "all", - [ "in", "$type", "LineString", "Point", "Polygon" ], - [ "all", [ "<=", "localrank", 10 ], [ "==", "type", "residential" ] ] - ], - "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_en}", - "text-max-width": 7 - }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-halo-blur": 0.5 - } - }, - { - "id": "poi-parks-scalerank1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933322393.2852" }, - "source": "composite", - "source-layer": "poi_label", "filter": [ "all", [ - "in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "==", + "$type", + "LineString" ], - [ "<=", "scalerank", 1 ] + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "minor" + ], + [ + "!=", + "ramp", + "1" + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(100, 100%, 20%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "poi-scalerank1", - "type": "symbol", - "metadata": { "mapbox:group": "1444933322393.2852" }, - "source": "composite", - "source-layer": "poi_label", + "id": "road_secondary_tertiary_casing-copy", + "type": "line", + "paint": { + "line-color": "rgba(195, 189, 187, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 8, + 1.5 + ], + [ + 20, + 17 + ] + ] + }, + "line-opacity": 1 + }, "filter": [ "all", [ "!in", - "maki", - "campsite", - "cemetery", - "dog-park", - "garden", - "golf", - "park", - "picnic-site", - "playground", - "zoo" + "brunnel", + "bridge", + "tunnel" ], - [ "<=", "scalerank", 1 ] + [ + "in", + "class", + "secondary", + "tertiary" + ], + [ + "!=", + "ramp", + 1 + ] ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 14 ] ] }, - "icon-image": { "stops": [ [ 13, "{maki}-11" ], [ 14, "{maki}-15" ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.65 ], - "text-rotation-alignment": "viewport", - "text-anchor": "top", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 8 + "line-cap": "round", + "line-join": "round", + "visibility": "visible" }, - "paint": { - "text-color": "hsl(26, 25%, 32%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" }, { - "id": "airport-label", - "type": "symbol", - "source": "composite", - "source-layer": "airport_label", - "minzoom": 9, - "filter": [ "<=", "scalerank", 2 ], + "id": "road_trunk_primary_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "!=", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ], + [ + "!=", + "ramp", + 1 + ] + ], "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 10, 12 ], [ 18, 18 ] ] }, - "icon-image": { "stops": [ [ 12, "{maki}-11" ], [ 13, "{maki}-15" ] ] }, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-padding": 2, - "text-offset": [ 0, 0.75 ], - "text-rotation-alignment": "viewport", + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_path_pedestrian", + "type": "line", + "paint": { + "line-color": "rgba(204, 196, 176, 0.45)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 1 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 1, + 1 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "path", + "pedestrian" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 14, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_link", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "ramp", + 1 + ], + [ + "!in", + "class", + "motorway", + "trunk", + "primary", + "pedestrian", + "path", + "track", + "service" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 13, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_trunk_primary_link", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 0.5 + ], + [ + 20, + 10 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_link", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 12, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_service_track", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_service_track_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "service_construction", + "track_construction" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "minor" + ] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "minor_construction" + ] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_secondary_tertiary", + "type": "line", + "paint": { + "line-color": "rgba(245, 245, 243, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_secondary_tertiary_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "secondary_construction", + "tertiary_construction" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_trunk_primary", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "!=", + "ramp", + 1 + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_trunk_primary_construction", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "!=", + "ramp", + 1 + ], + [ + "in", + "class", + "primary_construction", + "trunk_construction" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway", + "type": "line", + "paint": { + "line-color": { + "base": 1, + "stops": [ + [ + 5, + "hsl(26, 87%, 62%)" + ], + [ + 6, + "#fc8" + ] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_motorway_construction", + "type": "line", + "paint": { + "line-color": { + "base": 1, + "stops": [ + [ + 5, + "hsl(26, 87%, 62%)" + ], + [ + 6, + "#fc8" + ] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "motorway_construction" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_major_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "class", + "rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_major_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 3 + ], + [ + 20, + 8 + ] + ] + }, + "line-dasharray": [ + 0.2, + 8 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "==", + "class", + "rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "subclass", + "tram", + "light_rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "road_minor_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 2 + ], + [ + 20, + 6 + ] + ] + }, + "line-dasharray": [ + 0.2, + 4 + ] + }, + "filter": [ + "all", + [ + "!in", + "brunnel", + "bridge", + "tunnel" + ], + [ + "in", + "subclass", + "tram", + "light_rail" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "building", + "type": "fill", + "paint": { + "fill-color": "rgba(189, 185, 181, 0.3)", + "fill-outline-color": { + "base": 1, + "stops": [ + [ + 13, + "hsla(35, 6%, 79%, 0.32)" + ], + [ + 14, + "hsl(35, 6%, 79%)" + ] + ] + } + }, + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 14, + "minzoom": 13, + "metadata": {}, + "source-layer": "building" + }, + { + "id": "building-3d", + "type": "fill-extrusion", + "paint": { + "fill-extrusion-base": { + "type": "identity", + "property": "render_min_height" + }, + "fill-extrusion-color": "rgba(189, 185, 181, 1)", + "fill-extrusion-height": { + "type": "identity", + "property": "render_height" + }, + "fill-extrusion-opacity": 0.3 + }, + "filter": [ + "all", + [ + "!has", + "hide_3d" + ] + ], + "layout": { + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 14, + "metadata": {}, + "source-layer": "building" + }, + { + "id": "waterway-bridge-case", + "type": "line", + "paint": { + "line-color": "#bbbbbb", + "line-width": { + "base": 1.6, + "stops": [ + [ + 12, + 0.5 + ], + [ + 20, + 5 + ] + ] + }, + "line-gap-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-cap": "butt", + "line-join": "miter" + }, + "source": "openmaptiles", + "source-layer": "waterway" + }, + { + "id": "waterway-bridge", + "type": "line", + "paint": { + "line-color": "rgba(134, 204, 250, 1)", + "line-width": { + "base": 1.3, + "stops": [ + [ + 13, + 0.5 + ], + [ + 20, + 6 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round" + }, + "source": "openmaptiles", + "source-layer": "waterway" + }, + { + "id": "bridge_motorway_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_service_track_casing", + "type": "line", + "paint": { + "line-color": "#cfcdca", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15, + 1 + ], + [ + 16, + 4 + ], + [ + 20, + 11 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_link_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 1 + ], + [ + 13, + 3 + ], + [ + 14, + 4 + ], + [ + 20, + 15 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "class", + "link" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_street_casing", + "type": "line", + "paint": { + "line-color": "hsl(36, 6%, 74%)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12, + 0.5 + ], + [ + 13, + 1 + ], + [ + 14, + 4 + ], + [ + 20, + 25 + ] + ] + }, + "line-opacity": { + "stops": [ + [ + 12, + 0 + ], + [ + 12.5, + 1 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "street", + "street_limited" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_path_pedestrian_casing", + "type": "line", + "paint": { + "line-color": "hsl(35, 6%, 80%)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 1.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 1, + 0 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "path", + "pedestrian" + ] + ], + "layout": { + "line-join": "miter", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_secondary_tertiary_casing", + "type": "line", + "paint": { + "line-color": "rgba(195, 189, 187, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 8, + 1.5 + ], + [ + 20, + 17 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_trunk_primary_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway_casing", + "type": "line", + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0.4 + ], + [ + 6, + 0.7 + ], + [ + 7, + 1.75 + ], + [ + 20, + 22 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_path_pedestrian", + "type": "line", + "paint": { + "line-color": "hsl(0, 0%, 100%)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 14, + 0.5 + ], + [ + 20, + 10 + ] + ] + }, + "line-dasharray": [ + 1, + 0.3 + ] + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "path", + "pedestrian" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway_link", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "ramp", + 1 + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_service_track", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "service", + "track" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_service_track_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 15.5, + 0 + ], + [ + 16, + 2 + ], + [ + 20, + 7.5 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "service_construction", + "track_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_link", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 12.5, + 0 + ], + [ + 13, + 1.5 + ], + [ + 14, + 2.5 + ], + [ + 20, + 11.5 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "link" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_minor", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "minor" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_minor_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 13.5, + 0 + ], + [ + 14, + 2.5 + ], + [ + 20, + 18 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "minor_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_secondary_tertiary", + "type": "line", + "paint": { + "line-color": "rgba(245, 245, 243, 1)", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "secondary", + "tertiary" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_secondary_tertiary_construction", + "type": "line", + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [ + 6.5, + 0 + ], + [ + 8, + 0.5 + ], + [ + 20, + 13 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "secondary_construction", + "tertiary_construction" + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_trunk_primary", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "primary", + "trunk" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_trunk_primary_construction", + "type": "line", + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "brunnel", + "bridge" + ], + [ + "in", + "class", + "primary_construction", + "trunk_construction" + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_motorway_construction", + "type": "line", + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [ + 5, + 0 + ], + [ + 7, + 1 + ], + [ + 20, + 18 + ] + ] + }, + "line-dasharray": [ + 2, + 2 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "motorway_construction" + ], + [ + "==", + "brunnel", + "bridge" + ], + [ + "!=", + "ramp", + 1 + ] + ], + "layout": { + "line-join": "round" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_major_rail", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14, + 0.4 + ], + [ + 15, + 0.75 + ], + [ + 20, + 2 + ] + ] + } + }, + "filter": [ + "all", + [ + "==", + "class", + "rail" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "bridge_major_rail_hatching", + "type": "line", + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [ + 14.5, + 0 + ], + [ + 15, + 3 + ], + [ + 20, + 8 + ] + ] + }, + "line-dasharray": [ + 0.2, + 8 + ] + }, + "filter": [ + "all", + [ + "==", + "class", + "rail" + ], + [ + "==", + "brunnel", + "bridge" + ] + ], + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation" + }, + { + "id": "cablecar", + "type": "line", + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [ + 11, + 1 + ], + [ + 19, + 2.5 + ] + ] + } + }, + "filter": [ + "==", + "class", + "aerialway" + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 13, + "source-layer": "transportation" + }, + { + "id": "cablecar-dash", + "type": "line", + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [ + 11, + 3 + ], + [ + 19, + 5.5 + ] + ] + }, + "line-dasharray": [ + 2, + 3 + ] + }, + "filter": [ + "==", + "class", + "aerialway" + ], + "layout": { + "line-cap": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 13, + "source-layer": "transportation" + }, + { + "id": "boundary_3", + "type": "line", + "paint": { + "line-color": "#9e9cab", + "line-width": { + "base": 1, + "stops": [ + [ + 4, + 0.4 + ], + [ + 5, + 0.7 + ], + [ + 12, + 1.6 + ] + ] + }, + "line-dasharray": [ + 5, + 3 + ] + }, + "filter": [ + "all", + [ + "in", + "admin_level", + 3, + 4 + ], + [ + "==", + "maritime", + 0 + ] + ], + "layout": { + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 3, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z0-4", + "type": "line", + "paint": { + "line-color": "rgba(139, 139, 139, 1)", + "line-width": { + "base": 1, + "stops": [ + [ + 3, + 1 + ], + [ + 5, + 1.2 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "maritime", + 0 + ], + [ + "!has", + "claimed_by" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 5, + "minzoom": 0, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z0-4_maritime", + "type": "line", + "paint": { + "line-color": "rgba(98,185,229,1)", + "line-width": { + "base": 1, + "stops": [ + [ + 3, + 1 + ], + [ + 5, + 1.2 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "!has", + "claimed_by" + ], + [ + "==", + "maritime", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "maxzoom": 5, + "minzoom": 0, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5", + "type": "line", + "paint": { + "line-color": "rgba(139, 139, 139, 1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 0 + ], + [ + "==", + "maritime", + 0 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5_disputed", + "type": "line", + "paint": { + "line-color": "rgba(120, 120, 120, 1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 4, + 3 + ] + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 1 + ], + [ + "==", + "maritime", + 0 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5_disputed_maritime", + "type": "line", + "paint": { + "line-color": "rgba(98,185,229,1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1, + "line-dasharray": [ + 4, + 3 + ] + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 1 + ], + [ + "==", + "maritime", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "boundary_2_z5_maritime", + "type": "line", + "paint": { + "line-color": "rgba(98,185,229,1)", + "line-width": { + "base": 1, + "stops": [ + [ + 5, + 1.2 + ], + [ + 12, + 3 + ] + ] + }, + "line-opacity": 1 + }, + "filter": [ + "all", + [ + "==", + "admin_level", + 2 + ], + [ + "==", + "disputed", + 0 + ], + [ + "==", + "maritime", + 1 + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "boundary" + }, + { + "id": "water_name_line", + "type": "symbol", + "paint": { + "text-color": "#5d60be", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "LineString" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": 12, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 5, + "symbol-placement": "line" + }, + "source": "openmaptiles", + "minzoom": 0, + "metadata": {}, + "source-layer": "water_name" + }, + { + "id": "water_name_point", + "type": "symbol", + "paint": { + "text-color": "rgba(76, 125, 173, 1)", + "text-halo-color": "rgba(255,255,255,0)", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + "!=", + "class", + "ocean" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": 12, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 5 + }, + "source": "openmaptiles", + "maxzoom": 24, + "minzoom": 2, + "metadata": {}, + "source-layer": "water_name" + }, + { + "id": "water_ocean_name_point", + "type": "symbol", + "paint": { + "text-color": "rgba(76, 125, 173, 1)", + "text-halo-color": "rgba(255,255,255,0)", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + "==", + "class", + "ocean" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": 12, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 5 + }, + "source": "openmaptiles", + "minzoom": 0, + "metadata": {}, + "source-layer": "water_name" + }, + { + "id": "poi_z16_subclass", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + ">=", + "rank", + 20 + ], + [ + "any", + [ + "all", + [ + "in", + "class", + "pitch" + ], + [ + "in", + "subclass", + "soccer", + "tennis", + "baseball", + "basketball", + "swimming", + "golf" + ] + ] + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{subclass}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", "text-anchor": "top", - "text-field": { "stops": [ [ 11, "{ref}" ], [ 12, "{name_en}" ] ] }, - "text-letter-spacing": 0.01, + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, "text-max-width": 9 }, - "paint": { - "text-color": "hsl(230, 48%, 44%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 0.5, - "text-halo-blur": 0.5 - } + "source": "openmaptiles", + "minzoom": 16, + "metadata": {}, + "source-layer": "poi" }, { - "id": "place-islet-archipelago-aboriginal", + "id": "poi_z16", "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "maxzoom": 16, - "filter": [ "in", "type", "aboriginal_lands", "archipelago", "islet" ], + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + ">=", + "rank", + 20 + ], + [ + "none", + [ + "all", + [ + "in", + "class", + "pitch" + ], + [ + "in", + "subclass", + "soccer", + "tennis", + "baseball", + "basketball", + "swimming", + "golf" + ] + ] + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 16, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "poi_z15", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + ">=", + "rank", + 7 + ], + [ + "<", + "rank", + 20 + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 15, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "poi_z14", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "==", + "$type", + "Point" + ], + [ + "any", + [ + "<", + "rank", + 7 + ] + ], + [ + "any", + [ + "!has", + "level" + ], + [ + "==", + "level", + 0 + ] + ] + ], + "layout": { + "icon-size": 0.9, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 14.2, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "poi_transit", + "type": "symbol", + "paint": { + "text-color": "rgba(102, 102, 102, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "in", + "class", + "bus", + "railway", + "airport" + ], + [ + "==", + "subclass", + "station" + ] + ], + "layout": { + "icon-size": 0.9, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 12, + "icon-image": "{class}_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "left", + "text-offset": [ + 0.9, + 0 + ], + "text-padding": 2, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 15, + "metadata": {}, + "source-layer": "poi" + }, + { + "id": "road_oneway", + "type": "symbol", + "paint": { + "icon-opacity": 0.5 + }, + "filter": [ + "all", + [ + "==", + "oneway", + 1 + ], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-size": { + "stops": [ + [ + 15, + 0.5 + ], + [ + 19, + 1 + ] + ] + }, + "icon-image": "oneway", + "visibility": "visible", + "icon-rotate": 90, + "icon-padding": 2, + "symbol-spacing": 75, + "symbol-placement": "line", + "icon-rotation-alignment": "map" + }, + "source": "openmaptiles", + "minzoom": 15, + "source-layer": "transportation" + }, + { + "id": "road_oneway_opposite", + "type": "symbol", + "paint": { + "icon-opacity": 0.5 + }, + "filter": [ + "all", + [ + "==", + "oneway", + -1 + ], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-size": { + "stops": [ + [ + 15, + 0.5 + ], + [ + 19, + 1 + ] + ] + }, + "icon-image": "oneway", + "icon-rotate": -90, + "icon-padding": 2, + "symbol-spacing": 75, + "symbol-placement": "line", + "icon-rotation-alignment": "map" + }, + "source": "openmaptiles", + "minzoom": 15, + "source-layer": "transportation" + }, + { + "id": "road_label", + "type": "symbol", + "paint": { + "text-color": "#765", + "text-halo-blur": 0.5, + "text-halo-width": 1 + }, + "filter": [ + "all" + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": { + "base": 1, + "stops": [ + [ + 13, + 12 + ], + [ + 14, + 13 + ] + ] + }, + "text-field": ["format", ["get", "name:latin"], {"text-color": "green"}], + "text-anchor": "center", + "text-offset": [ + 0, + 0.15 + ], + "symbol-placement": "line" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "transportation_name" + }, + { + "id": "highway-shield", + "type": "symbol", + "paint": { + "text-color": "rgba(37, 36, 36, 1)" + }, + "filter": [ + "all", + [ + "<=", + "ref_length", + 6 + ], + [ + "==", + "$type", + "LineString" + ], + [ + "!in", + "network", + "us-interstate", + "us-highway", + "us-state" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 10, + "icon-image": "road_{ref_length}", + "text-field": "{ref}", + "symbol-spacing": 200, + "symbol-placement": { + "base": 1, + "stops": [ + [ + 10, + "point" + ], + [ + 11, + "line" + ] + ] + }, + "symbol-avoid-edges": true, + "icon-rotation-alignment": "viewport", + "text-rotation-alignment": "viewport" + }, + "source": "openmaptiles", + "minzoom": 8, + "source-layer": "transportation_name" + }, + { + "id": "highway-shield-us-interstate", + "type": "symbol", + "paint": { + "text-color": "rgba(255, 255, 255, 1)" + }, + "filter": [ + "all", + [ + "<=", + "ref_length", + 6 + ], + [ + "==", + "$type", + "LineString" + ], + [ + "in", + "network", + "us-interstate" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 9, + "icon-image": "{network}_{ref_length}", + "text-field": "{ref}", + "symbol-spacing": 200, + "symbol-placement": { + "base": 1, + "stops": [ + [ + 7, + "point" + ], + [ + 7, + "line" + ], + [ + 8, + "line" + ] + ] + }, + "symbol-avoid-edges": true, + "icon-rotation-alignment": "viewport", + "text-rotation-alignment": "viewport" + }, + "source": "openmaptiles", + "minzoom": 7, + "source-layer": "transportation_name" + }, + { + "id": "highway-shield-us-other", + "type": "symbol", + "paint": { + "text-color": "rgba(37, 36, 36, 1)" + }, + "filter": [ + "all", + [ + "<=", + "ref_length", + 6 + ], + [ + "==", + "$type", + "LineString" + ], + [ + "in", + "network", + "us-highway", + "us-state" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 9, + "icon-image": "{network}_{ref_length}", + "text-field": "{ref}", + "symbol-spacing": 200, + "symbol-placement": { + "base": 1, + "stops": [ + [ + 10, + "point" + ], + [ + 11, + "line" + ] + ] + }, + "symbol-avoid-edges": true, + "icon-rotation-alignment": "viewport", + "text-rotation-alignment": "viewport" + }, + "source": "openmaptiles", + "minzoom": 9, + "source-layer": "transportation_name" + }, + { + "id": "airport-label-major", + "type": "symbol", + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + }, + "filter": [ + "all", + [ + "has", + "iata" + ] + ], + "layout": { + "icon-size": 1, + "text-font": [ + "Noto Sans Regular" + ], + "text-size": 12, + "icon-image": "airport_11", + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-anchor": "top", + "text-offset": [ + 0, + 0.6 + ], + "text-padding": 2, + "text-optional": true, + "text-max-width": 9 + }, + "source": "openmaptiles", + "minzoom": 10, + "source-layer": "aerodrome_label" + }, + { + "id": "airport_gate", + "type": "symbol", + "paint": { + "text-color": "rgba(135, 135, 135, 1)", + "text-halo-color": "rgba(255, 255, 255, 1)", + "text-halo-width": 1.5 + }, + "filter": [ + "all", + [ + "==", + "class", + "gate" + ] + ], + "layout": { + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": { + "stops": [ + [ + 17, + 9 + ], + [ + 19, + 15 + ] + ] + }, + "text-field": "{ref}" + }, + "source": "openmaptiles", + "minzoom": 16.5, + "source-layer": "aeroway" + }, + { + "id": "place_other", + "type": "symbol", + "paint": { + "text-color": "rgba(66, 62, 62, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "in", + "class", + "hamlet", + "island", + "islet", + "neighbourhood", + "suburb" + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 12, + 10 + ], + [ + 15, + 14 + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", + "visibility": "visible", + "text-max-width": 9, + "text-transform": "uppercase", + "text-letter-spacing": 0.1 + }, + "source": "openmaptiles", + "minzoom": 8, + "metadata": {}, + "source-layer": "place" + }, + { + "id": "place_village", + "type": "symbol", + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "==", + "class", + "village" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 10, + 12 + ], + [ + 15, + 22 + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", "text-max-width": 8 }, - "paint": { - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "place-neighbourhood", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "neighbourhood" ], - "layout": { - "text-field": "{name_en}", - "text-transform": "uppercase", - "text-letter-spacing": 0.1, - "text-max-width": 7, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-padding": 3, - "text-size": { "base": 1, "stops": [ [ 12, 11 ], [ 16, 16 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "place-suburb", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "suburb" ], - "layout": { - "text-field": "{name_en}", - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-letter-spacing": 0.15, - "text-max-width": 7, - "text-padding": 3, - "text-size": { "base": 1, "stops": [ [ 11, 11 ], [ 15, 18 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "text-color": "hsl(230, 29%, 35%)", - "text-halo-blur": 0.5 - } - }, - { - "id": "place-hamlet", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "minzoom": 10, - "maxzoom": 16, - "filter": [ "==", "type", "hamlet" ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 12, 11.5 ], [ 15, 16 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-color": "hsl(0, 0%, 0%)" - } - }, - { - "id": "place-village", - "type": "symbol", - "source": "composite", - "source-layer": "place_label", + "source": "openmaptiles", "minzoom": 8, - "maxzoom": 15, - "filter": [ "==", "type", "village" ], - "layout": { - "text-field": "{name_en}", - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 10, 11.5 ], [ 16, 18 ] ] } - }, - "paint": { - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "text-color": "hsl(0, 0%, 0%)" - } + "metadata": {}, + "source-layer": "place" }, { - "id": "place-town", + "id": "place_town", "type": "symbol", - "source": "composite", - "source-layer": "place_label", + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "==", + "class", + "town" + ] + ], + "layout": { + "text-font": [ + "Roboto Regular", + "Noto Sans Regular" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 7, + 12 + ], + [ + 11, + 16 + ] + ] + }, + "icon-image": { + "base": 1, + "stops": [ + [ + 0, + "circle-stroked_16" + ], + [ + 10, + "" + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-anchor": "bottom", + "text-offset": [ + 0, + 0 + ], + "text-max-width": 8 + }, + "source": "openmaptiles", "minzoom": 6, - "maxzoom": 15, - "filter": [ "==", "type", "town" ], - "layout": { - "icon-image": "dot-9", - "text-font": { - "base": 1, - "stops": [ - [ 11, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 12, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7, [ 0, -0.15 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 1, "stops": [ [ 7, 11.5 ], [ 15, 20 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } + "metadata": {}, + "source-layer": "place" }, { - "id": "place-island", + "id": "place_city", "type": "symbol", - "source": "composite", - "source-layer": "place_label", - "maxzoom": 16, - "filter": [ "==", "type", "island" ], + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + }, + "filter": [ + "all", + [ + "==", + "class", + "city" + ] + ], "layout": { - "text-line-height": 1.2, - "text-size": { "base": 1, "stops": [ [ 10, 11 ], [ 18, 16 ] ] }, - "text-max-angle": 38, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ], + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": { + "base": 1.2, + "stops": [ + [ + 7, + 14 + ], + [ + 11, + 24 + ] + ] + }, + "icon-image": { + "base": 1, + "stops": [ + [ + 0, + "circle-stroked_16" + ], + [ + 10, + "" + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-anchor": "bottom", + "text-offset": [ + 0, + 0 + ], + "icon-optional": false, + "text-max-width": 8, + "icon-allow-overlap": true + }, + "source": "openmaptiles", + "minzoom": 5, + "metadata": {}, + "source-layer": "place" + }, + { + "id": "place_state", + "type": "symbol", + "paint": { + "text-color": "rgba(74, 72, 66, 1)", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 0.8 + }, + "filter": [ + "all", + [ + "==", + "class", + "state" + ] + ], + "layout": { + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": { + "stops": [ + [ + 3, + 10 + ], + [ + 6, + 14 + ] + ] + }, + "text-field": "{name:latin}\n{name:nonlatin}", "text-padding": 2, - "text-offset": [ 0, 0 ], - "text-rotation-alignment": "viewport", - "text-field": "{name_en}", - "text-letter-spacing": 0.01, - "text-max-width": 7 + "text-transform": "uppercase", + "text-letter-spacing": 0.1 }, - "paint": { - "text-color": "hsl(230, 29%, 35%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } + "source": "openmaptiles", + "maxzoom": 6, + "minzoom": 3, + "metadata": {}, + "source-layer": "place" }, { - "id": "place-city-sm", + "id": "country_other", "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "maxzoom": 14, - "filter": [ "all", [ "!in", "scalerank", 0, 1, 2, 3, 4, 5 ], [ "==", "type", "city" ] ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 6, 12 ], [ 14, 22 ] ] }, - "icon-image": "dot-9", - "text-font": { - "base": 1, - "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] - ] - }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.2 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7 - }, "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1.25, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } - }, - { - "id": "place-city-md-s", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "maxzoom": 14, - "filter": [ - "all", - [ "in", "ldir", "E", "S", "SE", "SW" ], - [ "in", "scalerank", 3, 4, 5 ], - [ "==", "type", "city" ] - ], - "layout": { - "text-field": "{name_en}", - "icon-image": "dot-10", - "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.1 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-font": { - "base": 1, - "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] - ] - }, - "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } - }, - "paint": { - "text-halo-width": 1, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-color": "hsl(0, 0%, 0%)", + "text-color": "#334", "text-halo-blur": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] } - } - }, - { - "id": "place-city-md-n", - "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "maxzoom": 14, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, "filter": [ "all", - [ "in", "ldir", "N", "NE", "NW", "W" ], - [ "in", "scalerank", 3, 4, 5 ], - [ "==", "type", "city" ] + [ + "==", + "class", + "country" + ], + [ + "!has", + "iso_a2" + ] ], "layout": { - "icon-image": "dot-10", - "text-font": { - "base": 1, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] + [ + 3, + 9 + ], + [ + 7, + 15 + ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.25 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 5, 12 ], [ 12, 22 ] ] } + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" }, { - "id": "place-city-lg-s", + "id": "country_3", "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, "filter": [ "all", - [ "in", "ldir", "E", "S", "SE", "SW" ], - [ "<=", "scalerank", 2 ], - [ "==", "type", "city" ] + [ + ">=", + "rank", + 3 + ], + [ + "==", + "class", + "country" + ], + [ + "has", + "iso_a2" + ] ], "layout": { - "icon-image": "dot-11", - "text-font": { - "base": 1, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] + [ + 3, + 11 + ], + [ + 7, + 17 + ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, 0.15 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "top" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" }, { - "id": "place-city-lg-n", + "id": "country_2", "type": "symbol", - "metadata": { "mapbox:group": "1444862510685.128" }, - "source": "composite", - "source-layer": "place_label", - "minzoom": 1, - "maxzoom": 14, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, "filter": [ "all", - [ "in", "ldir", "N", "NE", "NW", "W" ], - [ "<=", "scalerank", 2 ], - [ "==", "type", "city" ] + [ + "==", + "rank", + 2 + ], + [ + "==", + "class", + "country" + ], + [ + "has", + "iso_a2" + ] ], "layout": { - "icon-image": "dot-11", - "text-font": { - "base": 1, + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { "stops": [ - [ 7, [ "DIN Offc Pro Regular", "Arial Unicode MS Regular" ] ], - [ 8, [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ] ] + [ + 2, + 11 + ], + [ + 5, + 17 + ] ] }, - "text-offset": { "base": 1, "stops": [ [ 7.99, [ 0, -0.25 ] ], [ 8, [ 0, 0 ] ] ] }, - "text-anchor": { "base": 1, "stops": [ [ 7, "bottom" ], [ 8, "center" ] ] }, - "text-field": "{name_en}", - "text-max-width": 7, - "text-size": { "base": 0.9, "stops": [ [ 4, 12 ], [ 10, 22 ] ] } + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" + }, + { + "id": "country_1", + "type": "symbol", "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-opacity": 1, - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1, - "icon-opacity": { "base": 1, "stops": [ [ 7.99, 1 ], [ 8, 0 ] ] }, - "text-halo-blur": 1 - } + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 0.8 + }, + "filter": [ + "all", + [ + "==", + "rank", + 1 + ], + [ + "==", + "class", + "country" + ], + [ + "has", + "iso_a2" + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": { + "stops": [ + [ + 1, + 11 + ], + [ + 4, + 17 + ], + [ + 6, + 19 + ] + ] + }, + "text-field": "{name:latin}", + "text-max-width": 6.25, + "text-transform": "none" + }, + "source": "openmaptiles", + "metadata": {}, + "source-layer": "place" }, { - "id": "marine-label-sm-ln", + "id": "continent", "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 3, - "maxzoom": 10, - "filter": [ "all", [ "==", "$type", "LineString" ], [ ">=", "labelrank", 4 ] ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] }, - "symbol-spacing": { "base": 1, "stops": [ [ 4, 100 ], [ 6, 400 ] ] }, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-field": "{name_en}", - "text-letter-spacing": 0.1, - "text-max-width": 5 - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-sm-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 3, - "maxzoom": 10, - "filter": [ "all", [ "==", "$type", "Point" ], [ ">=", "labelrank", 4 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 5, - "text-letter-spacing": 0.1, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 3, 12 ], [ 6, 16 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-md-ln", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 2, - "maxzoom": 8, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "in", "labelrank", 2, 3 ] ], - "layout": { - "text-line-height": 1.1, - "text-size": { "base": 1.1, "stops": [ [ 2, 12 ], [ 5, 20 ] ] }, - "symbol-spacing": 250, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "symbol-placement": "line", - "text-field": "{name_en}", - "text-letter-spacing": 0.15, - "text-max-width": 5 - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-md-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 2, - "maxzoom": 8, - "filter": [ "all", [ "==", "$type", "Point" ], [ "in", "labelrank", 2, 3 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 5, - "text-letter-spacing": 0.15, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1.1, "stops": [ [ 2, 14 ], [ 5, 20 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-lg-ln", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 1, - "maxzoom": 4, - "filter": [ "all", [ "==", "$type", "LineString" ], [ "==", "labelrank", 1 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 4, - "text-letter-spacing": 0.25, - "text-line-height": 1.1, - "symbol-placement": "line", - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "marine-label-lg-pt", - "type": "symbol", - "metadata": { "mapbox:group": "1444856087950.3635" }, - "source": "composite", - "source-layer": "marine_label", - "minzoom": 1, - "maxzoom": 4, - "filter": [ "all", [ "==", "$type", "Point" ], [ "==", "labelrank", 1 ] ], - "layout": { - "text-field": "{name_en}", - "text-max-width": 4, - "text-letter-spacing": 0.25, - "text-line-height": 1.5, - "text-font": [ "DIN Offc Pro Italic", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 14 ], [ 4, 30 ] ] } - }, - "paint": { "text-color": "hsl(205, 83%, 88%)" } - }, - { - "id": "state-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "composite", - "source-layer": "state_label", - "minzoom": 3, - "maxzoom": 9, - "filter": [ "<", "area", 20000 ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 6, 10 ], [ 9, 14 ] ] }, - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "text-field": { "base": 1, "stops": [ [ 0, "{abbr}" ], [ 6, "{name_en}" ] ] }, - "text-letter-spacing": 0.15, - "text-max-width": 5 - }, "paint": { - "text-opacity": 1, - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", + "text-color": "#633", + "text-halo-color": "rgba(255,255,255,0.7)", "text-halo-width": 1 - } + }, + "filter": [ + "all", + [ + "==", + "class", + "continent" + ] + ], + "layout": { + "text-font": [ + "Roboto Condensed Italic", + "Noto Sans Italic" + ], + "text-size": 13, + "text-field": "{name:latin}", + "text-justify": "center", + "text-transform": "uppercase" + }, + "source": "openmaptiles", + "maxzoom": 1, + "metadata": {}, + "source-layer": "place" }, { - "id": "state-label-md", + "id": "housenumber", "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "composite", - "source-layer": "state_label", - "minzoom": 3, - "maxzoom": 8, - "filter": [ "all", [ "<", "area", 80000 ], [ ">=", "area", 20000 ] ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 5, 10 ], [ 8, 16 ] ] }, - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "text-field": { "base": 1, "stops": [ [ 0, "{abbr}" ], [ 5, "{name_en}" ] ] }, - "text-letter-spacing": 0.15, - "text-max-width": 6 - }, "paint": { - "text-opacity": 1, - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "state-label-lg", - "type": "symbol", - "metadata": { "mapbox:group": "1444856151690.9143" }, - "source": "composite", - "source-layer": "state_label", - "minzoom": 3, - "maxzoom": 7, - "filter": [ ">=", "area", 80000 ], - "layout": { - "text-size": { "base": 1, "stops": [ [ 4, 10 ], [ 7, 18 ] ] }, - "text-transform": "uppercase", - "text-font": [ "DIN Offc Pro Bold", "Arial Unicode MS Bold" ], - "text-padding": 1, - "text-field": { "base": 1, "stops": [ [ 0, "{abbr}" ], [ 4, "{name_en}" ] ] }, - "text-letter-spacing": 0.15, - "text-max-width": 6 + "text-color": "rgba(119, 102, 85, 0.69)" }, - "paint": { - "text-opacity": 1, - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": "hsl(0, 0%, 100%)", - "text-halo-width": 1 - } - }, - { - "id": "country-label-sm", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "composite", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 10, - "filter": [ ">=", "scalerank", 5 ], "layout": { - "text-field": "{name_en}", - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 0.9, "stops": [ [ 5, 14 ], [ 9, 22 ] ] } + "text-font": [ + "Roboto Medium", + "Noto Sans Regular" + ], + "text-size": 10, + "text-field": "{housenumber}" }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } - }, - { - "id": "country-label-md", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "composite", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 8, - "filter": [ "in", "scalerank", 3, 4 ], - "layout": { - "text-field": { "base": 1, "stops": [ [ 0, "{code}" ], [ 2, "{name_en}" ] ] }, - "text-max-width": 6, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 3, 10 ], [ 8, 24 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } - }, - { - "id": "country-label-lg", - "type": "symbol", - "metadata": { "mapbox:group": "1444856144497.7825" }, - "source": "composite", - "source-layer": "country_label", - "minzoom": 1, - "maxzoom": 7, - "filter": [ "in", "scalerank", 1, 2 ], - "layout": { - "text-field": "{name_en}", - "text-max-width": { "base": 1, "stops": [ [ 0, 5 ], [ 3, 6 ] ] }, - "text-font": [ "DIN Offc Pro Medium", "Arial Unicode MS Regular" ], - "text-size": { "base": 1, "stops": [ [ 1, 10 ], [ 6, 24 ] ] } - }, - "paint": { - "text-color": "hsl(0, 0%, 0%)", - "text-halo-color": { "base": 1, "stops": [ [ 2, "rgba(255,255,255,0.75)" ], [ 3, "hsl(0, 0%, 100%)" ] ] }, - "text-halo-width": 1.25 - } + "source": "openmaptiles", + "minzoom": 17.5, + "source-layer": "housenumber" } - ] + ], + "sprite": "maptiler://sprites/streets/sprite", + "bearing": 0, + "sources": { + "openmaptiles": { + "url": "maptiler://sources/v3", + "type": "vector" + }, + "maptiler_attribution": { + "type": "vector", + "attribution": "© MapTiler © OpenStreetMap contributors" + } + }, + "version": 8, + "metadata": { + "mapbox:type": "template", + "maptiler:copyright": "This style was generated on MapTiler Cloud. Usage outside of MapTiler Cloud requires valid OpenMapTiles Production Package: https://openmaptiles.com/production-package/ -- please contact us.", + "openmaptiles:version": "3.x" + } } \ No newline at end of file diff --git a/benchmark/storage/offline_database.benchmark.cpp b/benchmark/storage/offline_database.benchmark.cpp index afdf6db4f..f2ad2605c 100644 --- a/benchmark/storage/offline_database.benchmark.cpp +++ b/benchmark/storage/offline_database.benchmark.cpp @@ -56,7 +56,7 @@ public: } mbgl::Response response; - mbgl::OfflineDatabase db{":memory:"}; + mbgl::OfflineDatabase db{":memory:", mbgl::TileServerOptions::DefaultConfiguration()}; const unsigned tileCount = 100; int64_t regionID = 0; diff --git a/bin/CMakeLists.txt b/bin/CMakeLists.txt index d6ac17ae1..842a91e72 100644 --- a/bin/CMakeLists.txt +++ b/bin/CMakeLists.txt @@ -36,7 +36,7 @@ install(TARGETS mbgl-offline mbgl-render RUNTIME DESTINATION bin) # FIXME: CI must have a valid token # -# add_test(NAME mbgl-offline-tool-test COMMAND mbgl-offline -s mapbox://styles/mapbox/satellite-v9 --maxZoom=0 WORKING_DIRECTORY +# add_test(NAME mbgl-offline-tool-test COMMAND mbgl-offline -s maptiler://maps/hybrid --maxZoom=0 WORKING_DIRECTORY # ${PROJECT_SOURCE_DIR} ) # # add_test(NAME mbgl-render-tool-test COMMAND mbgl-render WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} ) diff --git a/bin/offline.cpp b/bin/offline.cpp index 97b60c223..ed5ea10aa 100644 --- a/bin/offline.cpp +++ b/bin/offline.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -6,6 +5,7 @@ #include #include #include +#include #include @@ -80,7 +80,7 @@ int main(int argc, char *argv[]) { args::ArgumentParser argumentParser("Mapbox GL offline tool"); args::HelpFlag helpFlag(argumentParser, "help", "Display this help menu", {'h', "help"}); - args::ValueFlag tokenValue(argumentParser, "key", "Mapbox access token", {'t', "token"}); + args::ValueFlag tokenValue(argumentParser, "key", "API Key", {'t', "token"}); args::ValueFlag styleValue(argumentParser, "URL", "Map stylesheet", {'s', "style"}); args::ValueFlag outputValue(argumentParser, "file", "Output database file name", {'o', "output"}); args::ValueFlag apiBaseValue(argumentParser, "URL", "API Base URL", {'a', "apiBaseURL"}); @@ -120,8 +120,11 @@ int main(int argc, char *argv[]) { exit(2); } - std::string style = styleValue ? args::get(styleValue) : mbgl::util::default_styles::streets.url; - + auto mapTilerConfiguration = mbgl::TileServerOptions::MapTilerConfiguration(); + + std::string style = styleValue ? args::get(styleValue) : mapTilerConfiguration.defaultStyles().at(0).getUrl(); + std::cout << " Style: " << style << std::endl; + mbgl::optional mergePath = {}; if (mergePathValue) mergePath = args::get(mergePathValue); mbgl::optional inputDb = {}; @@ -156,17 +159,20 @@ int main(int argc, char *argv[]) { } }(); - const char* tokenEnv = getenv("MAPBOX_ACCESS_TOKEN"); - const std::string token = tokenValue ? args::get(tokenValue) : (tokenEnv ? tokenEnv : std::string()); + const char* apiEnv = getenv("MGL_API_KEY"); + const std::string apiKey = tokenValue ? args::get(tokenValue) : (apiEnv ? apiEnv : std::string()); - const std::string apiBaseURL = apiBaseValue ? args::get(apiBaseValue) : mbgl::util::API_BASE_URL; - + if (apiBaseValue) { + mapTilerConfiguration.withBaseURL(args::get(apiBaseValue)); + } util::RunLoop loop; std::shared_ptr fileSource = std::static_pointer_cast( std::shared_ptr(FileSourceManager::get()->getFileSource( FileSourceType::Database, - ResourceOptions().withAccessToken(token).withBaseURL(apiBaseURL).withCachePath(output)))); + ResourceOptions().withApiKey(apiKey) + .withTileServerOptions(mapTilerConfiguration) + .withCachePath(output)))); std::unique_ptr region; diff --git a/bin/offline.sh b/bin/offline.sh index 99ce2185e..d58220165 100755 --- a/bin/offline.sh +++ b/bin/offline.sh @@ -3,16 +3,16 @@ set -e set -o pipefail -OFFLINE=./build/macos/Release/mbgl-offline +OFFLINE=../platform/ios/build/macos/Debug/mbgl-offline # Barcelona $OFFLINE --north 41.4664 --west 2.0407 --south 41.2724 --east 2.2680 --output barcelona.db -$OFFLINE --north 41.4664 --west 2.0407 --south 41.2724 --east 2.2680 --output barcelona_sat.db --style mapbox://styles/mapbox/satellite-v8 +$OFFLINE --north 41.4664 --west 2.0407 --south 41.2724 --east 2.2680 --output barcelona_sat.db --style maptiler://maps/hybrid # Greater London within the M25 at zoom levels 0–15 $OFFLINE --north 51.6777 --west -0.5026 --south 51.3237 --east 0.2527 --maxZoom 15 --output london.db -$OFFLINE --north 51.6777 --west -0.5026 --south 51.3237 --east 0.2527 --maxZoom 15 --output london_sat.db --style mapbox://styles/mapbox/satellite-v8 +$OFFLINE --north 51.6777 --west -0.5026 --south 51.3237 --east 0.2527 --maxZoom 15 --output london_sat.db --style maptiler://maps/hybrid # The contiguous United States at zoom levels 0–9 $OFFLINE --north 49.6107 --west -125.5078 --south 24.2870 --east -66.3574 --maxZoom 9 --output us.db -$OFFLINE --north 49.6107 --west -125.5078 --south 24.2870 --east -66.3574 --maxZoom 9 --output us_sat.db --style mapbox://styles/mapbox/satellite-v8 +$OFFLINE --north 49.6107 --west -125.5078 --south 24.2870 --east -66.3574 --maxZoom 9 --output us_sat.db --style maptiler://maps/hybrid diff --git a/bin/render.cpp b/bin/render.cpp index 409dfa792..1680e1c44 100644 --- a/bin/render.cpp +++ b/bin/render.cpp @@ -19,7 +19,7 @@ int main(int argc, char *argv[]) { args::HelpFlag helpFlag(argumentParser, "help", "Display this help menu", {"help"}); args::ValueFlag backendValue(argumentParser, "Backend", "Rendering backend", {"backend"}); - args::ValueFlag tokenValue(argumentParser, "key", "Mapbox access token", {'t', "token"}); + args::ValueFlag apikeyValue(argumentParser, "key", "API key", {'t', "apikey"}); args::ValueFlag styleValue(argumentParser, "URL", "Map stylesheet", {'s', "style"}); args::ValueFlag outputValue(argumentParser, "file", "Output file name", {'o', "output"}); args::ValueFlag cacheValue(argumentParser, "file", "Cache database file name", {'c', "cache"}); @@ -67,9 +67,9 @@ int main(int argc, char *argv[]) { const std::string cache_file = cacheValue ? args::get(cacheValue) : "cache.sqlite"; const std::string asset_root = assetsValue ? args::get(assetsValue) : "."; - // Try to load the token from the environment. - const char* tokenEnv = getenv("MAPBOX_ACCESS_TOKEN"); - const std::string token = tokenValue ? args::get(tokenValue) : (tokenEnv ? tokenEnv : std::string()); + // Try to load the apikey from the environment. + const char* apikeyEnv = getenv("MGL_API_KEY"); + const std::string apikey = apikeyValue ? args::get(apikeyValue) : (apikeyEnv ? apikeyEnv : std::string()); const bool debug = debugFlag ? args::get(debugFlag) : false; @@ -80,7 +80,7 @@ int main(int argc, char *argv[]) { HeadlessFrontend frontend({ width, height }, pixelRatio); Map map(frontend, MapObserver::nullObserver(), MapOptions().withMapMode(MapMode::Static).withSize(frontend.getSize()).withPixelRatio(pixelRatio), - ResourceOptions().withCachePath(cache_file).withAssetPath(asset_root).withAccessToken(std::string(token))); + ResourceOptions().withCachePath(cache_file).withAssetPath(asset_root).withApiKey(std::string(apikey))); if (style.find("://") == std::string::npos) { style = std::string("file://") + style; diff --git a/include/mbgl/storage/database_file_source.hpp b/include/mbgl/storage/database_file_source.hpp index 8a4791462..c1e99e277 100644 --- a/include/mbgl/storage/database_file_source.hpp +++ b/include/mbgl/storage/database_file_source.hpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace mbgl { @@ -232,6 +233,9 @@ public: */ virtual void setOfflineMapboxTileCountLimit(uint64_t) const; + void setResourceOptions(ResourceOptions) override; + ResourceOptions getResourceOptions() override; + private: class Impl; const std::unique_ptr impl; diff --git a/include/mbgl/storage/file_source.hpp b/include/mbgl/storage/file_source.hpp index b236ff9ee..21b6a4358 100644 --- a/include/mbgl/storage/file_source.hpp +++ b/include/mbgl/storage/file_source.hpp @@ -2,6 +2,7 @@ #include #include +#include #include @@ -33,7 +34,6 @@ enum FileSourceType : uint8_t { // GeoJSONSource, RasterSource, VectorSource, CustomGeometrySource and other *Sources. class FileSource { public: - FileSource(const FileSource&) = delete; FileSource& operator=(const FileSource&) = delete; virtual ~FileSource() = default; @@ -87,6 +87,11 @@ public: // When supported, sets the modifier of the requested resources. virtual void setResourceTransform(ResourceTransform) {} // NOLINT(performance-unnecessary-value-param) + // sets the resource options + virtual void setResourceOptions(ResourceOptions) = 0; + // gets the resource options + virtual ResourceOptions getResourceOptions() = 0; + protected: FileSource() = default; }; @@ -95,7 +100,7 @@ protected: // Property name to set / get an access token. // type: std::string -constexpr const char* ACCESS_TOKEN_KEY = "access-token"; +constexpr const char* API_KEY_KEY = "api-tkey"; // Property name to set / get base url. // type: std::string diff --git a/include/mbgl/storage/online_file_source.hpp b/include/mbgl/storage/online_file_source.hpp index d830450f9..599fe3a94 100644 --- a/include/mbgl/storage/online_file_source.hpp +++ b/include/mbgl/storage/online_file_source.hpp @@ -1,14 +1,17 @@ #pragma once #include +#include #include namespace mbgl { class OnlineFileSource : public FileSource { public: - OnlineFileSource(); + OnlineFileSource(const ResourceOptions& options); ~OnlineFileSource() override; + void setResourceOptions(ResourceOptions) override; + ResourceOptions getResourceOptions() override; private: // FileSource overrides diff --git a/include/mbgl/storage/resource_options.hpp b/include/mbgl/storage/resource_options.hpp index 6d603b8cc..fe2e77b36 100644 --- a/include/mbgl/storage/resource_options.hpp +++ b/include/mbgl/storage/resource_options.hpp @@ -2,6 +2,7 @@ #include #include +#include namespace mbgl { @@ -17,6 +18,7 @@ public: ~ResourceOptions(); ResourceOptions(ResourceOptions&&) noexcept; + ResourceOptions& operator=(ResourceOptions& options); ResourceOptions clone() const; @@ -26,29 +28,29 @@ public: * @param token Mapbox access token. * @return ResourceOptions for chaining options together. */ - ResourceOptions& withAccessToken(std::string token); + ResourceOptions& withApiKey(std::string token); /** * @brief Gets the previously set (or default) Mapbox access token. * * @return const std::string& Mapbox access token. */ - const std::string& accessToken() const; + const std::string& apiKey() const; /** - * @brief Sets the API base URL. Default is https://api.mapbox.com for Mapbox. + * @brief Sets the tile server options.. * - * @param baseURL API base URL. + * @param tileServerOptions Tile server options. * @return ResourceOptions for chaining options together. */ - ResourceOptions& withBaseURL(std::string baseURL); + ResourceOptions& withTileServerOptions(TileServerOptions tileServerOptions); /** - * @brief Gets the previously set (or default) API base URL. + * @brief Gets the previously set (or default) TileServerOptions. * - * @return const std::string& API base URL. + * @return const TileServerOptions tile server options. */ - const std::string& baseURL() const; + const TileServerOptions tileServerOptions() const; /** * @brief Sets the cache path. @@ -112,6 +114,13 @@ public: */ void* platformContext() const; + /** + * @brief Returns default resource options. + * + * @return Resource options. + */ + static ResourceOptions Default(); + private: ResourceOptions(const ResourceOptions&); diff --git a/include/mbgl/util/constants.hpp b/include/mbgl/util/constants.hpp index 345733f22..678a7469d 100644 --- a/include/mbgl/util/constants.hpp +++ b/include/mbgl/util/constants.hpp @@ -59,7 +59,6 @@ constexpr UnitBezier DEFAULT_TRANSITION_EASE = { 0, 0, 0.25, 1 }; constexpr int DEFAULT_RATE_LIMIT_TIMEOUT = 5; -constexpr const char* API_BASE_URL = "https://api.mapbox.com"; constexpr const char* ASSET_PROTOCOL = "asset://"; constexpr const char* FILE_PROTOCOL = "file://"; constexpr const char* MBTILES_PROTOCOL = "mbtiles://"; diff --git a/include/mbgl/util/default_style.hpp b/include/mbgl/util/default_style.hpp new file mode 100644 index 000000000..b97d86ba9 --- /dev/null +++ b/include/mbgl/util/default_style.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include +#include +#include + +namespace mbgl { +namespace util { + +class DefaultStyle { +public: + DefaultStyle(std::string, std::string, int); + + const std::string& getUrl() const; + const std::string& getName() const; + int getCurrentVersion() const; + +private: + std::string url; + std::string name; + int currentVersion; +}; + +} // end namespace util +} // end namespace mbgl diff --git a/include/mbgl/util/default_styles.hpp b/include/mbgl/util/default_styles.hpp deleted file mode 100644 index e1c53178b..000000000 --- a/include/mbgl/util/default_styles.hpp +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include -#include -#include - -namespace mbgl { -namespace util { -namespace default_styles { - -struct DefaultStyle { - const char* url; - const char* name; - const unsigned currentVersion; -}; - -// clang-format off -constexpr const DefaultStyle streets = { "mapbox://styles/mapbox/streets-v11", "Streets", 11 }; -constexpr const DefaultStyle outdoors = { "mapbox://styles/mapbox/outdoors-v11", "Outdoors", 11 }; -constexpr const DefaultStyle light = { "mapbox://styles/mapbox/light-v10", "Light", 10 }; -constexpr const DefaultStyle dark = { "mapbox://styles/mapbox/dark-v10", "Dark", 10 }; -constexpr const DefaultStyle satellite = { "mapbox://styles/mapbox/satellite-v9", "Satellite", 9 }; -constexpr const DefaultStyle satelliteStreets = { "mapbox://styles/mapbox/satellite-streets-v11", "Satellite Streets", 11 }; -// clang-format on - -constexpr std::array orderedStyles = { - {streets, outdoors, light, dark, satellite, satelliteStreets}}; - -constexpr size_t numOrderedStyles = orderedStyles.size(); - -} // end namespace default_styles -} // end namespace util -} // end namespace mbgl diff --git a/include/mbgl/util/tile_server_options.hpp b/include/mbgl/util/tile_server_options.hpp new file mode 100644 index 000000000..b1ade8cf3 --- /dev/null +++ b/include/mbgl/util/tile_server_options.hpp @@ -0,0 +1,288 @@ +#pragma once + +#include +#include +#include +#include + +namespace mbgl { + +/** + * @brief Holds values for tile server options. + */ + class TileServerOptions final { + public: + /** + * @brief Constructs a TileServerOptions object with default values. + */ + explicit TileServerOptions(); + ~TileServerOptions(); + + // movable + TileServerOptions(TileServerOptions&& options) noexcept; + TileServerOptions& operator=(TileServerOptions&& options) noexcept; + + // copyable + TileServerOptions(const TileServerOptions&); + + + TileServerOptions clone() const; + + /** + * @brief Sets the API base URL. + * + * @param baseURL API base URL. + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withBaseURL(std::string baseURL); + + /** + * @brief Gets the previously set (or default) API base URL. + * + * @return const std::string& API base URL. + */ + const std::string& baseURL() const; + + /** + * @brief Sets the scheme alias for the tile server. For example maptiler:// for MapTiler. + * + * @param alias The URI alias. + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withUriSchemeAlias(std::string alias); + + /** + * @brief Gets the previously set (or default) tile server URI alias. + * + * @return const std::string& scheme alias. + */ + const std::string& uriSchemeAlias() const; + + /** + * @brief Sets the template for sources. + * + * @param sourceTemplate The source template. + * @param domainName The domain name. + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withSourceTemplate(std::string sourceTemplate, std::string domainName, optional versionPrefix); + + /** + * @brief Gets the previously set (or default) source template. + * + * @return const std::string& source template. + */ + const std::string& sourceTemplate() const; + + /** + * @brief Gets the previously set (or default) source domain name + * + * @return const std::string& source domain name. + */ + const std::string& sourceDomainName() const; + + /** + * @brief Gets the previously set (or default) version prefix + * + * @return const optional& version prefix. + */ + const optional& sourceVersionPrefix() const; + + /** + * @brief Sets the template for styles. + * + * @param styleTemplate The style template. + * @param domainName If set, the URL domain must contain the specified string to be matched as canonical style URL . + * + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withStyleTemplate(std::string styleTemplate, std::string domainName, optional versionPrefix); + + /** + * @brief Gets the previously set (or default) style template. + * + * @return const std::string& style template. + */ + const std::string& styleTemplate() const; + + /** + * @brief Gets the previously set (or default) style domain name. + * + * @return const std::string& domain name. + */ + const std::string& styleDomainName() const; + + /** + * @brief Gets the previously set (or default) version prefix + * + * @return const optional& version prefix. + */ + const optional& styleVersionPrefix() const; + + /** + * @brief Sets the template for sprites. + * @param domainName If set, the URL domain must contain the specified string to be matched as canonical sprite URL . + * + * @param spritesTemplate The sprites template. + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withSpritesTemplate(std::string spritesTemplate, std::string domainName, optional versionPrefix); + + /** + * @brief Gets the previously set (or default) sprites template. + * + * @return const std::string& sprites template. + */ + const std::string& spritesTemplate() const; + + /** + * @brief Gets the previously set (or default) sprites domain name. + * + * @return const std::string& domain name. + */ + const std::string& spritesDomainName() const; + + /** + * @brief Gets the previously set (or default) version prefix + * + * @return const optional& version prefix. + */ + const optional& spritesVersionPrefix() const; + + /** + * @brief Sets the template for glyphs. + * + * @param glyphsTemplate The glyphs template. + * @param domainName If set, the URL domain must contain the specified string to be matched as canonical glyphs URL . + * + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withGlyphsTemplate(std::string glyphsTemplate, std::string domainName, optional versionPrefix); + + /** + * @brief Gets the previously set (or default) glyphs template. + * + * @return const std::string& glyphs template. + */ + const std::string& glyphsTemplate() const; + + /** + * @brief Gets the previously set (or default) glyphs domain name. + * + * @return const std::string& domain name. + */ + const std::string& glyphsDomainName() const; + + /** + * @brief Gets the previously set (or default) version prefix + * + * @return const optional& version prefix. + */ + const optional& glyphsVersionPrefix() const; + + /** + * @brief Sets the template for tiles. + * + * @param tileTemplate The tile template. + * @param domainName If set, the URL domain must contain the specified string to be matched as canonical tile URL . + * + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withTileTemplate(std::string tileTemplate, std::string domainName, optional versionPrefix); + + /** + * @brief Gets the previously set (or default) tile template. + * + * @return const std::string& tile template. + */ + const std::string& tileTemplate() const; + + /** + * @brief Gets the previously set (or default) tile domain name. + * + * @return const std::string& domain name. + */ + const std::string& tileDomainName() const; + + /** + * @brief Gets the previously set (or default) version prefix + * + * @return const optional& version prefix. + */ + const optional& tileVersionPrefix() const; + + /** + * @brief Sets the access token parameter name. + * + * @param apiKeyParameterName The parameter name. + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withApiKeyParameterName(std::string apiKeyParameterName); + + /** + * @brief Gets the previously set (or default) apiKeyParameterName. + * + * @return const std::string& apiKeyParameterName. + */ + const std::string& apiKeyParameterName() const; + + TileServerOptions& setRequiresApiKey(bool apiKeyRequired); + + /** + * @brief Whether the tile server requires API key + * + * @return const bool true if API key is required + */ + bool requiresApiKey() const; + /** + * @brief Gets the default styles. + */ + const std::vector defaultStyles() const; + + /** + * @brief Sets the collection default styles. + * + * @param styles The style set. + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withDefaultStyles(std::vector styles); + + /** + * @brief Sets the default style by name. The style name must exists in defaultStyles collection + * + * @param defaultStyle The style name + * @return TileServerOptions for chaining options together. + */ + TileServerOptions& withDefaultStyle(std::string defaultStyle); + + /** + * @brief Get the default style name + */ + const std::string& defaultStyle() const; + + /** + * @brief Get the default configuration + */ + static TileServerOptions DefaultConfiguration(); + + /** + * @brief Get the tile server options configured for MapLibre. + */ + static TileServerOptions MapLibreConfiguration(); + + /** + * @brief Get the tile server options configured for Mapbox. + */ + static TileServerOptions MapboxConfiguration(); + + /** + * @brief Get the tile server options configured for MapTiler. + */ + static TileServerOptions MapTilerConfiguration(); + + private: + class Impl; + std::unique_ptr impl_; + }; + +} // namespace mbgl diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index 2549cd46b..91751d68e 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -2,11 +2,15 @@ MapLibre welcomes participation and contributions from everyone. Please read [`Contributing Guide`](https://github.com/maplibre/maplibre-gl-native/blob/master/CONTRIBUTING.md) to get started. -## master +## 9.5.0 - June 29, 2021 ### Features -### Bug Fixes +* Replacing hardcoded configuration with configurable API and removing Mapbox assets and dependencies [#90](https://github.com/maplibre/maplibre-gl-native/pull/90) + +### Other + +* Migration from bintray [#77](https://github.com/maplibre/maplibre-gl-native/pull/77) ## 9.4.2 - May 6, 2021 diff --git a/platform/android/Makefile b/platform/android/Makefile index 391bfe9e0..22b18cb82 100644 --- a/platform/android/Makefile +++ b/platform/android/Makefile @@ -224,14 +224,14 @@ run-android-unit-test-%: gradle/configuration.gradle $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:testDebugUnitTest --info --tests "$*" # Run unit test and build a coverage report from .exec file generated by unit tests and .ec file generated by instrumentation tests -.PHONY: android-create-jacoco-report -android-create-jacoco-report: gradle/configuration.gradle - $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:jacocoTestReport +#.PHONY: android-create-jacoco-report +#android-create-jacoco-report: gradle/configuration.gradle +# $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:jacocoTestReport -# Parse merged jacoco report and send it to S3 -.PHONY: android-parse-and-send-jacoco-report -android-parse-and-send-jacoco-report: - python scripts/parse-jacoco-report.py +## Parse merged jacoco report and send it to S3 +#.PHONY: android-parse-and-send-jacoco-report +#android-parse-and-send-jacoco-report: +# python scripts/parse-jacoco-report.py # Builds a release package of the Android SDK .PHONY: apackage diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle index c21331a1d..b7afd2182 100644 --- a/platform/android/MapboxGLAndroidSDK/build.gradle +++ b/platform/android/MapboxGLAndroidSDK/build.gradle @@ -8,7 +8,6 @@ dependencies { lintChecks project(":MapboxGLAndroidSDKLint") api dependenciesList.mapboxJavaGeoJSON api dependenciesList.mapboxAndroidGestures - api dependenciesList.mapboxAndroidAccounts implementation dependenciesList.mapboxJavaTurf implementation dependenciesList.supportAnnotations @@ -106,5 +105,5 @@ apply from: "${rootDir}/gradle/gradle-dependencies-graph.gradle" apply from: "${rootDir}/gradle/gradle-update-vendor-modules.gradle" apply from: "${rootDir}/gradle/android-nitpick.gradle" apply from: "${rootDir}/gradle/gradle-publish.gradle" -// Disabled to prevent timeouts -// apply from: "${rootDir}/gradle/jacoco-report.gradle" +// intentionally disabled +// apply from: "${rootDir}/gradle/jacoco-report.gradle" \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/CMakeLists.txt b/platform/android/MapboxGLAndroidSDK/src/cpp/CMakeLists.txt index a3deab8e6..7e0ffa111 100644 --- a/platform/android/MapboxGLAndroidSDK/src/cpp/CMakeLists.txt +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/CMakeLists.txt @@ -183,7 +183,11 @@ add_library(mapbox-gl SHARED ${PROJECT_SOURCE_DIR}/style/transition_options.cpp ${PROJECT_SOURCE_DIR}/style/transition_options.hpp ${PROJECT_SOURCE_DIR}/style/value.cpp - ${PROJECT_SOURCE_DIR}/style/value.hpp) + ${PROJECT_SOURCE_DIR}/style/value.hpp + ${PROJECT_SOURCE_DIR}/util/default_style.cpp + ${PROJECT_SOURCE_DIR}/util/tile_server_options.cpp + ${PROJECT_SOURCE_DIR}/util/default_style.hpp + ${PROJECT_SOURCE_DIR}/util/tile_server_options.hpp) target_include_directories( mapbox-gl diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.cpp b/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.cpp index a8045a2b9..aebe6eda1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.cpp +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -15,8 +16,9 @@ namespace mbgl { class AssetManagerFileSource::Impl { public: - Impl(ActorRef, AAssetManager* assetManager_) : assetManager(assetManager_) { - } + Impl(ActorRef, AAssetManager* assetManager_, const ResourceOptions options) : + resourceOptions(options.clone()), + assetManager(assetManager_) {} void request(const std::string& url, ActorRef req) { // Note: AssetManager already prepends "assets" to the filename. @@ -36,17 +38,28 @@ public: req.invoke(&FileSourceRequest::setResponse, response); } + void setResourceOptions(ResourceOptions options) { + resourceOptions = options; + } + + ResourceOptions getResourceOptions() { + return resourceOptions.clone(); + } + private: AAssetManager* assetManager; + ResourceOptions resourceOptions; }; AssetManagerFileSource::AssetManagerFileSource(jni::JNIEnv& env, - const jni::Object& assetManager_) + const jni::Object& assetManager_, + const ResourceOptions options) : assetManager(jni::NewGlobal(env, assetManager_)), impl(std::make_unique>( util::makeThreadPrioritySetter(platform::EXPERIMENTAL_THREAD_PRIORITY_FILE), "AssetManagerFileSource", - AAssetManager_fromJava(&env, jni::Unwrap(assetManager.get())))) {} + AAssetManager_fromJava(&env, jni::Unwrap(assetManager.get())), + options.clone())) {} AssetManagerFileSource::~AssetManagerFileSource() = default; @@ -62,4 +75,11 @@ bool AssetManagerFileSource::canRequest(const Resource& resource) const { return 0 == resource.url.rfind(mbgl::util::ASSET_PROTOCOL, 0); } +void AssetManagerFileSource::setResourceOptions(ResourceOptions options) { + impl->actor().invoke(&Impl::setResourceOptions, options.clone()); +} + +ResourceOptions AssetManagerFileSource::getResourceOptions() { + return impl->actor().ask(&Impl::getResourceOptions).get(); +} } // namespace mbgl diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.hpp b/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.hpp index bcbc6f1e9..7467e39cc 100644 --- a/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.hpp +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/asset_manager_file_source.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include "asset_manager.hpp" @@ -14,12 +15,15 @@ template class Thread; class AssetManagerFileSource : public FileSource { public: - AssetManagerFileSource(jni::JNIEnv&, const jni::Object&); + AssetManagerFileSource(jni::JNIEnv&, const jni::Object&, const ResourceOptions); ~AssetManagerFileSource() override; std::unique_ptr request(const Resource&, Callback) override; bool canRequest(const Resource&) const override; + void setResourceOptions(ResourceOptions options) override; + ResourceOptions getResourceOptions() override; + private: class Impl; diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.cpp b/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.cpp index 8af8d6228..74980e493 100644 --- a/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.cpp +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.cpp @@ -19,24 +19,27 @@ namespace android { // FileSource // -FileSource::FileSource(jni::JNIEnv& _env, const jni::String& accessToken, const jni::String& _cachePath) +FileSource::FileSource(jni::JNIEnv& _env, const jni::String& apiKey, const jni::String& _cachePath, const jni::Object& _options) :activationCounter( optional(1)) { std::string path = jni::Make(_env, _cachePath); mapbox::sqlite::setTempPath(path); mbgl::FileSourceManager::get()->registerFileSourceFactory( - mbgl::FileSourceType::Asset, [](const mbgl::ResourceOptions&) { + mbgl::FileSourceType::Asset, [](const mbgl::ResourceOptions& opts) { auto env{android::AttachEnv()}; std::unique_ptr assetFileSource; if (android::Mapbox::hasInstance(*env)) { auto assetManager = android::Mapbox::getAssetManager(*env); - assetFileSource = std::make_unique(*env, assetManager); + assetFileSource = std::make_unique(*env, assetManager, opts.clone()); } return assetFileSource; }); - resourceOptions.withAccessToken(accessToken ? jni::Make(_env, accessToken) : "") - .withCachePath(path + DATABASE_FILE); + auto tileServerOptions = TileServerOptions::getTileServerOptions(_env, _options); + resourceOptions + .withTileServerOptions(tileServerOptions) + .withApiKey(apiKey ? jni::Make(_env, apiKey) : "") + .withCachePath(path + DATABASE_FILE); // Create a core file sources // TODO: Split Android FileSource API to smaller interfaces @@ -50,8 +53,16 @@ FileSource::FileSource(jni::JNIEnv& _env, const jni::String& accessToken, const FileSource::~FileSource() { } -jni::Local FileSource::getAccessToken(jni::JNIEnv& env) { - if (auto* token = onlineSource->getProperty(mbgl::ACCESS_TOKEN_KEY).getString()) { +void FileSource::setTileServerOptions(jni::JNIEnv& _env, const jni::Object& _options) { + auto tileServerOptions = TileServerOptions::getTileServerOptions(_env, _options); + resourceOptions.withTileServerOptions(tileServerOptions); + resourceLoader->setResourceOptions(resourceOptions.clone()); + databaseSource->setResourceOptions(resourceOptions.clone()); + onlineSource->setResourceOptions(resourceOptions.clone()); +} + +jni::Local FileSource::getApiKey(jni::JNIEnv& env) { + if (auto* token = onlineSource->getProperty(mbgl::API_KEY_KEY).getString()) { return jni::Make(env, *token); } @@ -59,9 +70,9 @@ jni::Local FileSource::getAccessToken(jni::JNIEnv& env) { return jni::Make(env, ""); } -void FileSource::setAccessToken(jni::JNIEnv& env, const jni::String& token) { +void FileSource::setApiKey(jni::JNIEnv& env, const jni::String& token) { if (onlineSource) { - onlineSource->setProperty(mbgl::ACCESS_TOKEN_KEY, token ? jni::Make(env, token) : ""); + onlineSource->setProperty(mbgl::API_KEY_KEY, token ? jni::Make(env, token) : ""); } else { ThrowNew(env, jni::FindClass(env, "java/lang/IllegalStateException"), "Online functionality is disabled."); } @@ -75,6 +86,15 @@ void FileSource::setAPIBaseUrl(jni::JNIEnv& env, const jni::String& url) { } } +jni::Local FileSource::getAPIBaseUrl(jni::JNIEnv& env) { + if (auto* url = onlineSource->getProperty(mbgl::API_BASE_URL_KEY).getString()) { + return jni::Make(env, *url); + } + + ThrowNew(env, jni::FindClass(env, "java/lang/IllegalStateException"), "Online functionality is disabled."); + return jni::Make(env, ""); +} + void FileSource::setResourceTransform(jni::JNIEnv& env, const jni::Object& transformCallback) { // Core could be built without support for network resource provider. if (!onlineSource) { @@ -214,12 +234,14 @@ void FileSource::registerNative(jni::JNIEnv& env) { jni::RegisterNativePeer(env, javaClass, "nativePtr", - jni::MakePeer, + jni::MakePeer&>, "initialize", "finalize", - METHOD(&FileSource::getAccessToken, "getAccessToken"), - METHOD(&FileSource::setAccessToken, "setAccessToken"), + METHOD(&FileSource::setTileServerOptions, "setTileServerOptions"), + METHOD(&FileSource::getApiKey, "getApiKey"), + METHOD(&FileSource::setApiKey, "setApiKey"), METHOD(&FileSource::setAPIBaseUrl, "setApiBaseUrl"), + METHOD(&FileSource::getAPIBaseUrl, "getApiBaseUrl"), METHOD(&FileSource::setResourceTransform, "setResourceTransform"), METHOD(&FileSource::setResourceCachePath, "setResourceCachePath"), METHOD(&FileSource::resume, "activate"), diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.hpp b/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.hpp index 3bf0fed2e..a4849cf87 100644 --- a/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.hpp +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/file_source.hpp @@ -9,6 +9,8 @@ #include +#include "util/tile_server_options.hpp" + namespace mbgl { template class Actor; @@ -42,13 +44,17 @@ public: const jni::String&); }; - FileSource(jni::JNIEnv&, const jni::String&, const jni::String&); + FileSource(jni::JNIEnv&, const jni::String&, const jni::String&, const jni::Object&); ~FileSource(); - jni::Local getAccessToken(jni::JNIEnv&); + void setTileServerOptions(jni::JNIEnv& _env, const jni::Object& _options); - void setAccessToken(jni::JNIEnv&, const jni::String&); + jni::Local getApiKey(jni::JNIEnv&); + + void setApiKey(jni::JNIEnv&, const jni::String&); + + jni::Local getAPIBaseUrl(jni::JNIEnv&); void setAPIBaseUrl(jni::JNIEnv&, const jni::String&); diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/http_file_source.cpp b/platform/android/MapboxGLAndroidSDK/src/cpp/http_file_source.cpp index 37f730737..b276985ce 100644 --- a/platform/android/MapboxGLAndroidSDK/src/cpp/http_file_source.cpp +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/http_file_source.cpp @@ -1,5 +1,6 @@ #include #include +#include #include #include @@ -16,7 +17,15 @@ namespace mbgl { class HTTPFileSource::Impl { public: + Impl(const ResourceOptions options): resourceOptions(options.clone()){}; + android::UniqueEnv env { android::AttachEnv() }; + + void setResourceOptions(ResourceOptions options) {resourceOptions = options;}; + ResourceOptions getResourceOptions() {return resourceOptions.clone(); }; + +private: + ResourceOptions resourceOptions; }; class HTTPRequest : public AsyncRequest { @@ -182,8 +191,8 @@ void HTTPRequest::onFailure(jni::JNIEnv& env, int type, const jni::String& messa async.send(); } -HTTPFileSource::HTTPFileSource() - : impl(std::make_unique()) { +HTTPFileSource::HTTPFileSource(const ResourceOptions& options) + : impl(std::make_unique(options.clone())) { } HTTPFileSource::~HTTPFileSource() = default; @@ -192,4 +201,12 @@ std::unique_ptr HTTPFileSource::request(const Resource& resource, return std::make_unique(*impl->env, resource, callback); } +void HTTPFileSource::setResourceOptions(ResourceOptions options) { + impl->setResourceOptions(options.clone()); +} + +ResourceOptions HTTPFileSource::getResourceOptions() { + return impl->getResourceOptions(); +} + } // namespace mbgl diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/jni_native.cpp b/platform/android/MapboxGLAndroidSDK/src/cpp/jni_native.cpp index d6b03d981..52b3016ff 100644 --- a/platform/android/MapboxGLAndroidSDK/src/cpp/jni_native.cpp +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/jni_native.cpp @@ -34,6 +34,7 @@ #include "map_renderer_runnable.hpp" #include "mapbox.hpp" #include "native_map_view.hpp" +#include "util/tile_server_options.hpp" #ifndef MBGL_MODULE_OFFLINE_DISABLE #include "offline/offline_manager.hpp" #include "offline/offline_region.hpp" @@ -162,6 +163,10 @@ void registerNatives(JavaVM *vm) { // AssetManager Mapbox::registerNative(env); + + // Util + DefaultStyle::registerNative(env); + TileServerOptions::registerNative(env); } } // namespace android diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/util/default_style.cpp b/platform/android/MapboxGLAndroidSDK/src/cpp/util/default_style.cpp new file mode 100644 index 000000000..fa5c9730a --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/util/default_style.cpp @@ -0,0 +1,31 @@ +#include "default_style.hpp" + +namespace mbgl { +namespace android { + +jni::Local> DefaultStyle::New(jni::JNIEnv& env, const mbgl::util::DefaultStyle& jDefaultStyle) { + static auto& javaClass = jni::Class::Singleton(env); + static auto constructor = javaClass.GetConstructor(env); + return javaClass.New( + env, + constructor, + jni::Make(env, jDefaultStyle.getUrl()), + jni::Make(env, jDefaultStyle.getName()), + jDefaultStyle.getCurrentVersion()); +} + +mbgl::util::DefaultStyle DefaultStyle::getDefaultStyle(jni::JNIEnv& env, const jni::Object& options) { + static auto& javaClass = jni::Class::Singleton(env); + return mbgl::util::DefaultStyle ( + jni::Make(env, options.Get(env, javaClass.GetField(env, "url"))), + jni::Make(env, options.Get(env, javaClass.GetField(env, "name"))), + options.Get(env, javaClass.GetField(env, "version")) + ); +} + +void DefaultStyle::registerNative(jni::JNIEnv& env) { + jni::Class::Singleton(env); +} + +} // namespace android +} // namespace mbgl \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/util/default_style.hpp b/platform/android/MapboxGLAndroidSDK/src/cpp/util/default_style.hpp new file mode 100644 index 000000000..5b788361f --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/util/default_style.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include +#include + +#include + +namespace mbgl { +namespace android { + +class DefaultStyle : private mbgl::util::noncopyable { +public: + + static constexpr auto Name() { return "com/mapbox/mapboxsdk/util/DefaultStyle"; }; + + static jni::Local> New(jni::JNIEnv&, const mbgl::util::DefaultStyle&); + static mbgl::util::DefaultStyle getDefaultStyle(jni::JNIEnv&, const jni::Object&); + + static void registerNative(jni::JNIEnv&); + +}; + + +} // namespace android +} // namespace mbgl \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/util/tile_server_options.cpp b/platform/android/MapboxGLAndroidSDK/src/cpp/util/tile_server_options.cpp new file mode 100644 index 000000000..cd6120b51 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/util/tile_server_options.cpp @@ -0,0 +1,178 @@ +#include "tile_server_options.hpp" + +namespace mbgl { +namespace android { + +jni::Local> TileServerOptions::New(jni::JNIEnv& env, const mbgl::TileServerOptions& tileServerOptions) { + static auto& javaClass = jni::Class::Singleton(env); + static auto constructor = javaClass.GetConstructor< + jni::String, jni::String, jni::String, jni::String, jni::String, jni::String, + jni::String, jni::String, jni::String, jni::String, jni::String, + jni::String, jni::String, jni::String, jni::String, jni::String, + jni::String, jni::String, jni::jboolean, jni::String, jni::Array>>(env); + + optional sourceVersionPrefixValue = tileServerOptions.sourceVersionPrefix(); + optional styleVersionPrefixValue = tileServerOptions.styleVersionPrefix(); + optional spritesVersionPrefixValue = tileServerOptions.spritesVersionPrefix(); + optional glyphsVersionPrefixValue = tileServerOptions.glyphsVersionPrefix(); + optional tileVersionPrefixValue = tileServerOptions.tileVersionPrefix(); + + return javaClass.New(env, constructor, + jni::Make(env, tileServerOptions.baseURL()), + jni::Make(env, tileServerOptions.uriSchemeAlias()), + jni::Make(env, tileServerOptions.sourceTemplate()), + jni::Make(env, tileServerOptions.sourceDomainName()), + sourceVersionPrefixValue ? jni::Make(env, *sourceVersionPrefixValue) : jni::Local(), + jni::Make(env, tileServerOptions.styleTemplate()), + jni::Make(env, tileServerOptions.styleDomainName()), + styleVersionPrefixValue ? jni::Make(env, *styleVersionPrefixValue) : jni::Local(), + jni::Make(env, tileServerOptions.spritesTemplate()), + jni::Make(env, tileServerOptions.spritesDomainName()), + spritesVersionPrefixValue ? jni::Make(env, *spritesVersionPrefixValue) : jni::Local(), + jni::Make(env, tileServerOptions.glyphsTemplate()), + jni::Make(env, tileServerOptions.glyphsDomainName()), + glyphsVersionPrefixValue ? jni::Make(env, *glyphsVersionPrefixValue) : jni::Local(), + jni::Make(env, tileServerOptions.tileTemplate()), + jni::Make(env, tileServerOptions.tileDomainName()), + tileVersionPrefixValue ? jni::Make(env, *tileVersionPrefixValue) : jni::Local(), + jni::Make(env, tileServerOptions.apiKeyParameterName()), + jni::jboolean(tileServerOptions.requiresApiKey()), + jni::Make(env, tileServerOptions.defaultStyle()), + TileServerOptions::NewStyles(env, tileServerOptions.defaultStyles()) + ); +} + +jni::Local>> TileServerOptions::NewStyles(jni::JNIEnv& env, const std::vector nativeStyles) { + + auto retVal = jni::Array>::New(env, nativeStyles.size()); + for (auto it = begin(nativeStyles); it != end(nativeStyles); ++it) { + auto converted = DefaultStyle::New(env, *it); + retVal.Set(env, it - nativeStyles.begin(), converted); + } + + return retVal; +} + +jni::Local> TileServerOptions::DefaultConfiguration(jni::JNIEnv& env, const jni::Class& jOptions) { + auto options = mbgl::TileServerOptions::DefaultConfiguration(); + return TileServerOptions::New(env, options); +} + +jni::Local> TileServerOptions::MapboxConfiguration(jni::JNIEnv& env, const jni::Class& jOptions) { + auto options = mbgl::TileServerOptions::MapboxConfiguration(); + return TileServerOptions::New(env, options); +} + +jni::Local> TileServerOptions::MapTilerConfiguration(jni::JNIEnv& env, const jni::Class& jOptions) { + auto options = mbgl::TileServerOptions::MapTilerConfiguration(); + return TileServerOptions::New(env, options); +} + +jni::Local> TileServerOptions::MapLibreConfiguration(jni::JNIEnv& env, const jni::Class& jOptions) { + auto options = mbgl::TileServerOptions::MapLibreConfiguration(); + return TileServerOptions::New(env, options); +} + +mbgl::TileServerOptions TileServerOptions::getTileServerOptions(jni::JNIEnv& env, const jni::Object& options) { + auto opts = mbgl::TileServerOptions(); + static auto& javaClass = jni::Class::Singleton(env); + + static auto baseURLField = javaClass.GetField(env, "baseURL"); + + static auto uriSchemeAliasField = javaClass.GetField(env, "uriSchemeAlias"); + + static auto sourceTemplateField = javaClass.GetField(env, "sourceTemplate"); + static auto sourceDomainNameField = javaClass.GetField(env, "sourceDomainName"); + static auto sourceVersionPrefixField = javaClass.GetField(env, "sourceVersionPrefix"); + + static auto styleTemplateField = javaClass.GetField(env, "styleTemplate"); + static auto styleDomainNameField = javaClass.GetField(env, "styleDomainName"); + static auto styleVersionPrefixField = javaClass.GetField(env, "styleVersionPrefix"); + + static auto spritesTemplateField = javaClass.GetField(env, "spritesTemplate"); + static auto spritesDomainNameField = javaClass.GetField(env, "spritesDomainName"); + static auto spritesVersionPrefixField = javaClass.GetField(env, "spritesVersionPrefix"); + + static auto glyphsTemplateField = javaClass.GetField(env, "glyphsTemplate"); + static auto glyphsDomainNameField = javaClass.GetField(env, "glyphsDomainName"); + static auto glyphsVersionPrefixField = javaClass.GetField(env, "glyphsVersionPrefix"); + + static auto tileTemplateField = javaClass.GetField(env, "tileTemplate"); + static auto tileDomainNameField = javaClass.GetField(env, "tileDomainName"); + static auto tileVersionPrefixField = javaClass.GetField(env, "tileVersionPrefix"); + + static auto apiKeyParameterNameField = javaClass.GetField(env, "apiKeyParameterName"); + static auto apiKeyRequiredField = javaClass.GetField(env, "apiKeyRequired"); + + static auto defaultStyleField = javaClass.GetField(env, "defaultStyle"); + + static auto defaultStylesField = javaClass.GetField>>(env, "defaultStyles"); + std::vector defaultStyles = TileServerOptions::getDefaultStyles(env, options.Get(env, defaultStylesField)); + + auto retVal = mbgl::TileServerOptions() + .withBaseURL(jni::Make(env, options.Get(env, baseURLField))) + .withUriSchemeAlias(jni::Make(env, options.Get(env, uriSchemeAliasField))) + .withApiKeyParameterName(jni::Make(env, options.Get(env, apiKeyParameterNameField))) + .setRequiresApiKey(options.Get(env, apiKeyRequiredField)); + + auto sourcePrefixValue = options.Get(env, sourceVersionPrefixField); + retVal.withSourceTemplate( + jni::Make(env, options.Get(env, sourceTemplateField)), + jni::Make(env, options.Get(env, sourceDomainNameField)), + sourcePrefixValue ? jni::Make(env, sourcePrefixValue): optional{}); + + auto styleVersionPrefixValue = options.Get(env, styleVersionPrefixField); + retVal.withStyleTemplate( + jni::Make(env, options.Get(env, styleTemplateField)), + jni::Make(env, options.Get(env, styleDomainNameField)), + styleVersionPrefixValue ? jni::Make(env, styleVersionPrefixValue): optional{}); + + auto spritesVersionPrefixValue = options.Get(env, spritesVersionPrefixField); + retVal.withSpritesTemplate( + jni::Make(env, options.Get(env, spritesTemplateField)), + jni::Make(env, options.Get(env, spritesDomainNameField)), + spritesVersionPrefixValue ? jni::Make(env, spritesVersionPrefixValue): optional{}); + + auto glyphsVersionPrefixValue = options.Get(env, glyphsVersionPrefixField); + retVal.withGlyphsTemplate( + jni::Make(env, options.Get(env, glyphsTemplateField)), + jni::Make(env, options.Get(env, glyphsDomainNameField)), + glyphsVersionPrefixValue ? jni::Make(env, glyphsVersionPrefixValue) : optional{}); + + auto tileVersionPrefixValue = options.Get(env, tileVersionPrefixField); + retVal.withTileTemplate( + jni::Make(env, options.Get(env, tileTemplateField)), + jni::Make(env, options.Get(env, tileDomainNameField)), + tileVersionPrefixValue ? jni::Make(env, tileVersionPrefixValue): optional{}); + + retVal.withDefaultStyle(jni::Make(env, options.Get(env, defaultStyleField))); + retVal.withDefaultStyles(defaultStyles); + + return retVal; +} + +std::vector TileServerOptions::getDefaultStyles(jni::JNIEnv& env, const jni::Array>& styles_) { + + std::size_t length = styles_.Length(env); + std::vector convertedStyles; + //convertedStyles.reserve(length); + for (std::size_t i = 0; i < length; i++) { + const mbgl::util::DefaultStyle converted = DefaultStyle::getDefaultStyle(env, styles_.Get(env, i)); + convertedStyles.push_back(converted); + } + + return convertedStyles; +} + +void TileServerOptions::registerNative(jni::JNIEnv& env) { + static auto& javaClass = jni::Class::Singleton(env); + jni::RegisterNatives(env, + *javaClass, + jni::MakeNativeMethod("defaultConfiguration"), + jni::MakeNativeMethod("mapboxConfiguration"), + jni::MakeNativeMethod("mapTilerConfiguration"), + jni::MakeNativeMethod("mapLibreConfiguration")); +} + +} // namespace android +} // namespace mbgl \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/cpp/util/tile_server_options.hpp b/platform/android/MapboxGLAndroidSDK/src/cpp/util/tile_server_options.hpp new file mode 100644 index 000000000..2237a3517 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/cpp/util/tile_server_options.hpp @@ -0,0 +1,38 @@ +#pragma once + +#include +#include +#include + +#include + +#include "default_style.hpp" + +namespace mbgl { +namespace android { + +class TileServerOptions : private mbgl::util::noncopyable { +public: + + static constexpr auto Name() { return "com/mapbox/mapboxsdk/util/TileServerOptions"; }; + + static jni::Local> New(jni::JNIEnv&, const mbgl::TileServerOptions&); + + static jni::Local> DefaultConfiguration(jni::JNIEnv&, const jni::Class&); + static jni::Local> MapboxConfiguration(jni::JNIEnv&, const jni::Class&); + static jni::Local> MapTilerConfiguration(jni::JNIEnv&, const jni::Class&); + static jni::Local> MapLibreConfiguration(jni::JNIEnv&, const jni::Class&); + + static mbgl::TileServerOptions getTileServerOptions(jni::JNIEnv&, const jni::Object&); + + static void registerNative(jni::JNIEnv&); + + static jni::Local>> NewStyles(jni::JNIEnv& env, const std::vector); + static std::vector getDefaultStyles(jni::JNIEnv& env, const jni::Array>& styles_); + + +}; + + +} // namespace android +} // namespace mbgl \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java deleted file mode 100644 index 3de11c416..000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/AccountsManager.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.mapbox.mapboxsdk; - -import android.content.Context; -import android.content.SharedPreferences; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.text.TextUtils; -import android.text.format.DateUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.VisibleForTesting; - -import com.mapbox.android.accounts.v1.MapboxAccounts; -import com.mapbox.mapboxsdk.constants.MapboxConstants; -import com.mapbox.mapboxsdk.log.Logger; - -/** - * REMOVAL OR MODIFICATION OF THE FOLLOWING CODE VIOLATES THE MAPBOX TERMS - * OF SERVICE - *

- * The following code is used to access Mapbox's Mapping APIs. - *

- * Removal or modification of this code when used with Mapbox's Mapping APIs - * can result in termination of your agreement and/or your account with - * Mapbox. - *

- * Using this code to access Mapbox Mapping APIs from outside the Mapbox Maps - * SDK also violates the Mapbox Terms of Service. On Android, Mapping APIs - * should be accessed using the methods documented at - * https://www.mapbox.com/android. - *

- * You can access the Mapbox Terms of Service at https://www.mapbox.com/tos/ - */ -class AccountsManager { - private static final String TAG = "Mbgl-AccountsManager"; - private static final String PREFERENCE_USER_ID = "com.mapbox.mapboxsdk.accounts.userid"; - private static final String PREFERENCE_TIMESTAMP = "com.mapbox.mapboxsdk.accounts.timestamp"; - - private SharedPreferences sharedPreferences; - private String userId; - private long timestamp; - - AccountsManager() { - initialize(); - } - - @VisibleForTesting - AccountsManager(SharedPreferences sharedPreferences) { - this.sharedPreferences = sharedPreferences; - initialize(); - } - - private void initialize() { - } - - private ApplicationInfo retrieveApplicationInfo() throws PackageManager.NameNotFoundException { - return Mapbox.getApplicationContext().getPackageManager().getApplicationInfo( - Mapbox.getApplicationContext().getPackageName(), - PackageManager.GET_META_DATA); - } - - private boolean isExpired() { - return isExpired(getNow(), timestamp); - } - - static boolean isExpired(long now, long then) { - return ((now - then) > DateUtils.HOUR_IN_MILLIS); - } - - @NonNull - private SharedPreferences getSharedPreferences() { - if (sharedPreferences == null) { - sharedPreferences = Mapbox.getApplicationContext() - .getSharedPreferences(MapboxConstants.MAPBOX_SHARED_PREFERENCES, Context.MODE_PRIVATE); - } - return sharedPreferences; - } - - static long getNow() { - return System.currentTimeMillis(); - } - - private synchronized String getUserId() { - if (!TextUtils.isEmpty(userId)) { - return userId; - } - - SharedPreferences sharedPreferences = getSharedPreferences(); - userId = sharedPreferences.getString(PREFERENCE_USER_ID, ""); - - if (TextUtils.isEmpty(userId)) { - userId = generateUserId(); - SharedPreferences.Editor editor = getSharedPreferences().edit(); - editor.putString(PREFERENCE_USER_ID, userId); - if (!editor.commit()) { - Logger.e(TAG, "Failed to save user id."); - } - } - - return userId; - } - - @NonNull - private String generateUserId() { - return MapboxAccounts.obtainEndUserId(); - } -} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java index b52c2b7ef..94bcb032b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/Mapbox.java @@ -13,14 +13,16 @@ import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.exceptions.MapboxConfigurationException; import com.mapbox.mapboxsdk.net.ConnectivityReceiver; import com.mapbox.mapboxsdk.storage.FileSource; +import com.mapbox.mapboxsdk.util.DefaultStyle; +import com.mapbox.mapboxsdk.util.TileServerOptions; import com.mapbox.mapboxsdk.utils.ThreadUtils; /** - * The entry point to initialize the Mapbox Android SDK. + * The entry point to initialize the MapLibre Android SDK. *

- * Obtain a reference by calling {@link #getInstance(Context, String)}. Usually this class is configured in - * Application#onCreate() and is responsible for the active access token, application context, and - * connectivity state. + * Obtain a reference by calling {@link #getInstance(Context, String, WellKnownTileServer)}. + * Usually this class is configured in Application#onCreate() and is responsible for the + * active API key, application context, and connectivity state. *

*/ @UiThread @@ -34,62 +36,149 @@ public final class Mapbox { private Context context; @Nullable - private String accessToken; + private String apiKey; @Nullable - private AccountsManager accounts; + private TileServerOptions tileServerOptions; /** * Get an instance of Mapbox. *

- * This class manages the Mapbox access token, application context, and connectivity state. + * This class manages the API key, application context, and connectivity state. *

* - * @param context Android context which holds or is an application context - * @param accessToken Mapbox access token + * @param context Android context which holds or is an application context * @return the single instance of Mapbox */ @UiThread @NonNull - public static synchronized Mapbox getInstance(@NonNull Context context, @Nullable String accessToken) { + public static synchronized Mapbox getInstance(@NonNull Context context) { ThreadUtils.init(context); ThreadUtils.checkThread(TAG); if (INSTANCE == null) { Context appContext = context.getApplicationContext(); FileSource.initializeFileDirsPaths(appContext); - INSTANCE = new Mapbox(appContext, accessToken); - if (isAccessTokenValid(accessToken)) { - INSTANCE.accounts = new AccountsManager(); - } + INSTANCE = new Mapbox(appContext, null); ConnectivityReceiver.instance(appContext); + } else { + TileServerOptions tileServerOptions = TileServerOptions.get(WellKnownTileServer.MapLibre); + INSTANCE.tileServerOptions = tileServerOptions; + INSTANCE.apiKey = null; + FileSource fileSource = FileSource.getInstance(context); + fileSource.setTileServerOptions(tileServerOptions); + fileSource.setApiKey(null); } return INSTANCE; } - Mapbox(@NonNull Context context, @Nullable String accessToken) { + /** + * Get an instance of Mapbox. + *

+ * This class manages the API key, application context, and connectivity state. + *

+ * + * @param context Android context which holds or is an application context + * @param apiKey api key + * @param tileServer the tile server whose predefined configuration will be used to + * bootstrap the SDK. The predefined configuration includes + * rules for converting resource URLs between normal and canonical forms + * and set of predefined styles available on the server. + * @return the single instance of Mapbox + */ + @UiThread + @NonNull + public static synchronized Mapbox getInstance(@NonNull Context context, @Nullable String apiKey, + WellKnownTileServer tileServer) { + ThreadUtils.init(context); + ThreadUtils.checkThread(TAG); + if (INSTANCE == null) { + Context appContext = context.getApplicationContext(); + FileSource.initializeFileDirsPaths(appContext); + INSTANCE = new Mapbox(appContext, apiKey); + ConnectivityReceiver.instance(appContext); + } else { + INSTANCE.apiKey = apiKey; + } + + TileServerOptions tileServerOptions = TileServerOptions.get(tileServer); + INSTANCE.tileServerOptions = tileServerOptions; + FileSource fileSource = FileSource.getInstance(context); + fileSource.setTileServerOptions(tileServerOptions); + fileSource.setApiKey(apiKey); + return INSTANCE; + } + + Mapbox(@NonNull Context context, @Nullable String apiKey) { this.context = context; - this.accessToken = accessToken; + this.apiKey = apiKey; + } + + Mapbox(@NonNull Context context, @Nullable String apiKey, @NonNull TileServerOptions options) { + this.context = context; + this.apiKey = apiKey; + this.tileServerOptions = options; } /** - * Get the current active access token for this application. + * Get the current active API key for this application. * - * @return Mapbox access token + * @return API key */ @Nullable - public static String getAccessToken() { + public static String getApiKey() { validateMapbox(); - return INSTANCE.accessToken; + return INSTANCE.apiKey; } /** - * Set the current active accessToken. + * Set the current active apiKey. */ - public static void setAccessToken(String accessToken) { + public static void setApiKey(String apiKey) { validateMapbox(); - throwIfAccessTokenInvalid(accessToken); - INSTANCE.accessToken = accessToken; - INSTANCE.accounts = new AccountsManager(); - FileSource.getInstance(getApplicationContext()).setAccessToken(accessToken); + throwIfApiKeyInvalid(apiKey); + INSTANCE.apiKey = apiKey; + FileSource.getInstance(getApplicationContext()).setApiKey(apiKey); + } + + /** + * Get tile server configuration. + */ + @Nullable + public static TileServerOptions getTileServerOptions() { + validateMapbox(); + return INSTANCE.tileServerOptions; + } + + /** + * Get all pre-defined styles + * + * @return List of predefined styles + */ + @Nullable + public static DefaultStyle[] getPredefinedStyles() { + validateMapbox(); + if (INSTANCE.tileServerOptions != null) { + return INSTANCE.tileServerOptions.getDefaultStyles(); + } + return null; + } + + /** + * Get predefined style by name + * + * @return Predefined style if found + */ + @Nullable + public static DefaultStyle getPredefinedStyle(String name) { + validateMapbox(); + if (INSTANCE.tileServerOptions != null) { + DefaultStyle[] styles = INSTANCE.tileServerOptions.getDefaultStyles(); + for (DefaultStyle style : styles) { + if (style.getName().equalsIgnoreCase(name)) { + return style; + } + } + } + return null; } /** @@ -151,28 +240,25 @@ public final class Mapbox { /** * Runtime validation of Mapbox access token * - * @param accessToken the access token to validate + * @param apiKey the access token to validate * @return true is valid, false otherwise */ - static boolean isAccessTokenValid(@Nullable String accessToken) { - if (accessToken == null) { + static boolean isApiKeyValid(@Nullable String apiKey) { + if (apiKey == null) { return false; } - accessToken = accessToken.trim().toLowerCase(MapboxConstants.MAPBOX_LOCALE); - return accessToken.length() != 0 && (accessToken.startsWith("pk.") || accessToken.startsWith("sk.")); + apiKey = apiKey.trim().toLowerCase(MapboxConstants.MAPBOX_LOCALE); + return apiKey.length() != 0; } /** * Throws exception when access token is invalid */ - public static void throwIfAccessTokenInvalid(@Nullable String accessToken) { - if (!isAccessTokenValid(accessToken)) { + public static void throwIfApiKeyInvalid(@Nullable String apiKey) { + if (!isApiKeyValid(apiKey)) { throw new MapboxConfigurationException( - "A valid access token parameter is required when using a Mapbox service." - + "\nPlease see https://www.mapbox.com/help/create-api-access-token/ to learn how to create one." - + "\nMore information in this guide https://www.mapbox.com/help/first-steps-android-sdk/#access-tokens." - + "Currently provided token is: " + accessToken); + "A valid API key is required, currently provided key is: " + apiKey); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/WellKnownTileServer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/WellKnownTileServer.java new file mode 100644 index 000000000..0d9cd44c4 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/WellKnownTileServer.java @@ -0,0 +1,7 @@ +package com.mapbox.mapboxsdk; + +public enum WellKnownTileServer { + Mapbox, + MapTiler, + MapLibre; +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java index cebe34086..88fc1b871 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/exceptions/MapboxConfigurationException.java @@ -7,7 +7,7 @@ import androidx.annotation.NonNull; /** * A MapboxConfigurationException is thrown by MapboxMap when the SDK hasn't been properly initialised. *

- * This occurs either when {@link com.mapbox.mapboxsdk.Mapbox} is not correctly initialised or the provided access token + * This occurs either when {@link com.mapbox.mapboxsdk.Mapbox} is not correctly initialised or the provided apiKey * through {@link com.mapbox.mapboxsdk.Mapbox#getInstance(Context, String)} isn't valid. *

* @@ -19,10 +19,8 @@ public class MapboxConfigurationException extends RuntimeException { * Creates a Mapbox configuration exception thrown by MapboxMap when the SDK hasn't been properly initialised. */ public MapboxConfigurationException() { - super("\nUsing MapView requires calling Mapbox.getInstance(Context context, String accessToken) before " - + "inflating or creating the view. The access token parameter is required when using a Mapbox service." - + "\nPlease see https://www.mapbox.com/help/create-api-access-token/ to learn how to create one." - + "\nMore information in this guide https://www.mapbox.com/help/first-steps-android-sdk/#access-tokens."); + super("\nUsing MapView requires calling Mapbox.getInstance(Context context, String apiKey) before " + + "inflating or creating the view."); } /** diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java index 24ffe199e..87037ee3b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java @@ -108,13 +108,13 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt Attribution[] attributions = attributionSet.toArray(new Attribution[attributionSet.size()]); String url = attributions[which].getUrl(); if (url.contains(MAP_FEEDBACK_URL_OLD) || url.contains(MAP_FEEDBACK_URL)) { - url = buildMapFeedbackMapUrl(Mapbox.getAccessToken()); + url = buildMapFeedbackMapUrl(Mapbox.getApiKey()); } showWebPage(url); } @NonNull - String buildMapFeedbackMapUrl(@Nullable String accessToken) { + String buildMapFeedbackMapUrl(@Nullable String apiKey) { // TODO Add Android Maps SDK version to the query parameter, currently the version API is not available. // TODO Keep track of this issue at [#15632](https://github.com/mapbox/mapbox-gl-native/issues/15632) @@ -132,8 +132,9 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt builder.appendQueryParameter("referrer", packageName); } - if (accessToken != null) { - builder.appendQueryParameter("access_token", accessToken); + if (apiKey != null) { + //TODO:PP + builder.appendQueryParameter("access_token", apiKey); } Style style = mapboxMap.getStyle(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 19d72ed6b..53d6f1901 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -883,7 +883,7 @@ public final class MapboxMap { * @param style The bundled style * @see Style */ - public void setStyle(@Style.StyleUrl String style) { + public void setStyle(String style) { this.setStyle(style, null); } @@ -899,7 +899,7 @@ public final class MapboxMap { * @param callback The callback to be invoked when the style has loaded * @see Style */ - public void setStyle(@Style.StyleUrl String style, final Style.OnStyleLoaded callback) { + public void setStyle(String style, final Style.OnStyleLoaded callback) { this.setStyle(new Style.Builder().fromUri(style), callback); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java index d767b5a28..a8f4bce2a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Style.java @@ -9,17 +9,16 @@ import android.util.Pair; import androidx.annotation.IntRange; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.StringDef; +import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.style.layers.Layer; import com.mapbox.mapboxsdk.style.layers.TransitionOptions; import com.mapbox.mapboxsdk.style.light.Light; import com.mapbox.mapboxsdk.style.sources.Source; +import com.mapbox.mapboxsdk.util.DefaultStyle; import com.mapbox.mapboxsdk.utils.BitmapUtils; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -802,11 +801,6 @@ public class Style { *

* {@code url} can take the following forms: *
    - *
  • {@code Style#StyleUrl}: load one of the bundled styles in {@link Style}.
  • - *
  • {@code mapbox://styles//