From ce3a6c1917d315c034864ed8b23d903d44363488 Mon Sep 17 00:00:00 2001 From: Fityan <63894003+fityannugroho@users.noreply.github.com> Date: Tue, 12 Nov 2024 20:57:39 +0700 Subject: [PATCH 1/3] refactor: move dark mode styles for leaflet layer to globals.css --- app/globals.css | 5 +++++ components/map.tsx | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/globals.css b/app/globals.css index 74b68c2..a251d7f 100644 --- a/app/globals.css +++ b/app/globals.css @@ -96,4 +96,9 @@ @apply bg-card text-card-foreground; } } + + /* Tile layer */ + .leaflet-layer { + @apply dark:hue-rotate-180 dark:invert dark:contrast-[.90] dark:brightness-90; + } } diff --git a/components/map.tsx b/components/map.tsx index 39effef..a8eabb3 100644 --- a/components/map.tsx +++ b/components/map.tsx @@ -23,7 +23,6 @@ export default function Map({ {children} From a131157fdb953c5fa3fee67831e8d4e12a7945b6 Mon Sep 17 00:00:00 2001 From: Fityan <63894003+fityannugroho@users.noreply.github.com> Date: Wed, 13 Nov 2024 06:33:30 +0700 Subject: [PATCH 2/3] feat: replace `react-leaflet` tile layer with MaplibreGL tile layer --- app/globals.css | 5 - components/map.tsx | 11 +- components/tile-layer.tsx | 29 + package.json | 1 + pnpm-lock.yaml | 297 ++- public/map-styles/dark.json | 3988 +++++++++++++++++++++++++++++++ public/map-styles/light.json | 4271 ++++++++++++++++++++++++++++++++++ 7 files changed, 8582 insertions(+), 20 deletions(-) create mode 100644 components/tile-layer.tsx create mode 100644 public/map-styles/dark.json create mode 100644 public/map-styles/light.json diff --git a/app/globals.css b/app/globals.css index a251d7f..74b68c2 100644 --- a/app/globals.css +++ b/app/globals.css @@ -96,9 +96,4 @@ @apply bg-card text-card-foreground; } } - - /* Tile layer */ - .leaflet-layer { - @apply dark:hue-rotate-180 dark:invert dark:contrast-[.90] dark:brightness-90; - } } diff --git a/components/map.tsx b/components/map.tsx index a8eabb3..a53a919 100644 --- a/components/map.tsx +++ b/components/map.tsx @@ -2,7 +2,8 @@ import 'leaflet/dist/leaflet.css' import type { PropsWithChildren } from 'react' -import { MapContainer, type MapContainerProps, TileLayer } from 'react-leaflet' +import { MapContainer, type MapContainerProps } from 'react-leaflet' +import TileLayer from './tile-layer' export type MapProps = MapContainerProps & PropsWithChildren @@ -15,15 +16,13 @@ export default function Map({ }: MapProps) { return ( - + {children} ) diff --git a/components/tile-layer.tsx b/components/tile-layer.tsx new file mode 100644 index 0000000..d371c2e --- /dev/null +++ b/components/tile-layer.tsx @@ -0,0 +1,29 @@ +import '@maplibre/maplibre-gl-leaflet' +import L from 'leaflet' +import { useTheme } from 'next-themes' +import { useEffect, useRef } from 'react' +import { useMap } from 'react-leaflet' + +export default function TileLayer() { + const map = useMap() + const { resolvedTheme } = useTheme() + const glRef = useRef( + L.maplibreGL({ + style: `/map-styles/${resolvedTheme}.json`, + }), + ) + + useEffect(() => { + const maplibreMap = glRef.current.getMaplibreMap() + + if (!maplibreMap) { + glRef.current.addTo(map) + return + } + + // Update the style when the theme changes + maplibreMap.setStyle(`/map-styles/${resolvedTheme}.json`) + }, [map, resolvedTheme]) + + return null +} diff --git a/package.json b/package.json index 1a417c3..74c9b0e 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "node": ">=18.17" }, "dependencies": { + "@maplibre/maplibre-gl-leaflet": "^0.0.22", "@next/env": "^15.0.2", "@radix-ui/react-alert-dialog": "^1.1.2", "@radix-ui/react-dialog": "^1.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c20889..82938ca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@maplibre/maplibre-gl-leaflet': + specifier: ^0.0.22 + version: 0.0.22(@types/leaflet@1.9.14)(leaflet@1.9.4)(maplibre-gl@4.7.1) '@next/env': specifier: ^15.0.2 version: 15.0.3 @@ -670,6 +673,41 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@mapbox/geojson-rewind@0.5.2': + resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} + hasBin: true + + '@mapbox/jsonlint-lines-primitives@2.0.2': + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + + '@mapbox/point-geometry@0.1.0': + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + + '@mapbox/tiny-sdf@2.0.6': + resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==} + + '@mapbox/unitbezier@0.0.1': + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} + + '@mapbox/vector-tile@1.3.1': + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + + '@mapbox/whoots-js@3.1.0': + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + + '@maplibre/maplibre-gl-leaflet@0.0.22': + resolution: {integrity: sha512-9p4DSPLUE5t0StXH/IcZw37/UL7Ekea4jcVdkSsb2jWI+sM3K7mYHLOnti/2wn+HqxG4jMVUHah7Xun3bs00AQ==} + peerDependencies: + '@types/leaflet': ^1.9.0 + leaflet: ^1.9.3 + maplibre-gl: ^2.4.0 || ^3.3.1 || ^4.3.2 + + '@maplibre/maplibre-gl-style-spec@20.4.0': + resolution: {integrity: sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==} + hasBin: true + '@mswjs/interceptors@0.36.10': resolution: {integrity: sha512-GXrJgakgJW3DWKueebkvtYgGKkxA7s0u5B0P5syJM5rvQUnrpLPigvci8Hukl7yEM+sU06l+er2Fgvx/gmiRgg==} engines: {node: '>=18'} @@ -1319,6 +1357,9 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/geojson-vt@3.2.5': + resolution: {integrity: sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==} + '@types/geojson@7946.0.14': resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} @@ -1337,9 +1378,18 @@ packages: '@types/leaflet@1.9.14': resolution: {integrity: sha512-sx2q6MDJaajwhKeVgPSvqXd8rhNJSTA3tMidQGduZn9S6WBYxDkCpSpV5xXEmSg7Cgdk/5vJGhVF1kMYLzauBg==} + '@types/mapbox__point-geometry@0.1.4': + resolution: {integrity: sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==} + + '@types/mapbox__vector-tile@1.3.4': + resolution: {integrity: sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==} + '@types/node@20.17.6': resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} + '@types/pbf@3.0.5': + resolution: {integrity: sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==} + '@types/prop-types@15.7.13': resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} @@ -1361,6 +1411,9 @@ packages: '@types/statuses@2.0.5': resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + '@types/supercluster@7.1.3': + resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} + '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -1846,6 +1899,9 @@ packages: dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + earcut@3.0.0: + resolution: {integrity: sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -2104,6 +2160,9 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + geojson-vt@4.0.2: + resolution: {integrity: sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2120,6 +2179,10 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -2127,6 +2190,9 @@ packages: get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2148,6 +2214,10 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported + global-prefix@4.0.0: + resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==} + engines: {node: '>=16'} + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -2232,6 +2302,9 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -2251,6 +2324,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@4.1.3: + resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -2388,6 +2465,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} @@ -2449,6 +2530,9 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-pretty-compact@4.0.0: + resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} + json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -2462,9 +2546,16 @@ packages: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} + kdbush@4.0.2: + resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -2559,6 +2650,10 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + maplibre-gl@4.7.1: + resolution: {integrity: sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2616,6 +2711,9 @@ packages: typescript: optional: true + murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} @@ -2773,6 +2871,10 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + pbf@3.3.0: + resolution: {integrity: sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==} + hasBin: true + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2847,6 +2949,9 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} + potpack@2.0.0: + resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2858,6 +2963,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + psl@1.10.0: resolution: {integrity: sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==} @@ -2878,6 +2986,12 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + + quickselect@3.0.0: + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} + react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -2978,6 +3092,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -3009,6 +3126,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -3174,6 +3294,9 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true + supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -3226,6 +3349,9 @@ packages: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} + tinyqueue@3.0.0: + resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} + tinyrainbow@1.2.0: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} @@ -3423,6 +3549,9 @@ packages: jsdom: optional: true + vt-pbf@3.1.3: + resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -3463,6 +3592,11 @@ packages: engines: {node: '>= 8'} hasBin: true + which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -3971,6 +4105,41 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@mapbox/geojson-rewind@0.5.2': + dependencies: + get-stream: 6.0.1 + minimist: 1.2.8 + + '@mapbox/jsonlint-lines-primitives@2.0.2': {} + + '@mapbox/point-geometry@0.1.0': {} + + '@mapbox/tiny-sdf@2.0.6': {} + + '@mapbox/unitbezier@0.0.1': {} + + '@mapbox/vector-tile@1.3.1': + dependencies: + '@mapbox/point-geometry': 0.1.0 + + '@mapbox/whoots-js@3.1.0': {} + + '@maplibre/maplibre-gl-leaflet@0.0.22(@types/leaflet@1.9.14)(leaflet@1.9.4)(maplibre-gl@4.7.1)': + dependencies: + '@types/leaflet': 1.9.14 + leaflet: 1.9.4 + maplibre-gl: 4.7.1 + + '@maplibre/maplibre-gl-style-spec@20.4.0': + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/unitbezier': 0.0.1 + json-stringify-pretty-compact: 4.0.0 + minimist: 1.2.8 + quickselect: 2.0.0 + rw: 1.3.3 + tinyqueue: 3.0.0 + '@mswjs/interceptors@0.36.10': dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -4566,6 +4735,10 @@ snapshots: '@types/estree@1.0.6': {} + '@types/geojson-vt@3.2.5': + dependencies: + '@types/geojson': 7946.0.14 + '@types/geojson@7946.0.14': {} '@types/http-cache-semantics@4.0.4': {} @@ -4584,10 +4757,20 @@ snapshots: dependencies: '@types/geojson': 7946.0.14 + '@types/mapbox__point-geometry@0.1.4': {} + + '@types/mapbox__vector-tile@1.3.4': + dependencies: + '@types/geojson': 7946.0.14 + '@types/mapbox__point-geometry': 0.1.4 + '@types/pbf': 3.0.5 + '@types/node@20.17.6': dependencies: undici-types: 6.19.8 + '@types/pbf@3.0.5': {} + '@types/prop-types@15.7.13': {} '@types/react-dom@18.3.1': @@ -4613,6 +4796,10 @@ snapshots: '@types/statuses@2.0.5': {} + '@types/supercluster@7.1.3': + dependencies: + '@types/geojson': 7946.0.14 + '@types/tough-cookie@4.0.5': {} '@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1)(typescript@5.0.4)': @@ -5161,6 +5348,8 @@ snapshots: dom-accessibility-api@0.5.16: {} + earcut@3.0.0: {} + eastasianwidth@0.2.0: {} electron-to-chromium@1.5.55: {} @@ -5311,8 +5500,8 @@ snapshots: '@typescript-eslint/parser': 8.13.0(eslint@8.57.1)(typescript@5.0.4) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-react: 7.37.2(eslint@8.57.1) eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1) @@ -5331,37 +5520,37 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1): + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.13.0(eslint@8.57.1)(typescript@5.0.4) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -5372,7 +5561,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.13.0(eslint@8.57.1)(typescript@5.0.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -5586,6 +5775,8 @@ snapshots: gensync@1.0.0-beta.2: {} + geojson-vt@4.0.2: {} + get-caller-file@2.0.5: {} get-intrinsic@1.2.4: @@ -5602,6 +5793,8 @@ snapshots: dependencies: pump: 3.0.2 + get-stream@6.0.1: {} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 @@ -5612,6 +5805,8 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + gl-matrix@3.4.3: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -5646,6 +5841,12 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + global-prefix@4.0.0: + dependencies: + ini: 4.1.3 + kind-of: 6.0.3 + which: 4.0.0 + globals@11.12.0: {} globals@13.24.0: @@ -5734,6 +5935,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 + ieee754@1.2.1: {} + ignore@5.3.2: {} import-fresh@3.3.0: @@ -5750,6 +5953,8 @@ snapshots: inherits@2.0.4: {} + ini@4.1.3: {} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 @@ -5874,6 +6079,8 @@ snapshots: isexe@2.0.0: {} + isexe@3.1.1: {} + istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -5959,6 +6166,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-pretty-compact@4.0.0: {} + json5@1.0.2: dependencies: minimist: 1.2.8 @@ -5972,10 +6181,14 @@ snapshots: object.assign: 4.1.5 object.values: 1.2.0 + kdbush@4.0.2: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 + kind-of@6.0.3: {} + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -6053,6 +6266,35 @@ snapshots: dependencies: semver: 7.6.3 + maplibre-gl@4.7.1: + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 2.0.6 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/maplibre-gl-style-spec': 20.4.0 + '@types/geojson': 7946.0.14 + '@types/geojson-vt': 3.2.5 + '@types/mapbox__point-geometry': 0.1.4 + '@types/mapbox__vector-tile': 1.3.4 + '@types/pbf': 3.0.5 + '@types/supercluster': 7.1.3 + earcut: 3.0.0 + geojson-vt: 4.0.2 + gl-matrix: 3.4.3 + global-prefix: 4.0.0 + kdbush: 4.0.2 + murmurhash-js: 1.0.0 + pbf: 3.3.0 + potpack: 2.0.0 + quickselect: 3.0.0 + supercluster: 8.0.1 + tinyqueue: 3.0.0 + vt-pbf: 3.1.3 + merge2@1.4.1: {} micromatch@4.0.8: @@ -6116,6 +6358,8 @@ snapshots: transitivePeerDependencies: - '@types/node' + murmurhash-js@1.0.0: {} + mute-stream@2.0.0: {} mz@2.7.0: @@ -6265,6 +6509,11 @@ snapshots: pathval@2.0.0: {} + pbf@3.3.0: + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -6326,6 +6575,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + potpack@2.0.0: {} + prelude-ls@1.2.1: {} pretty-format@27.5.1: @@ -6340,6 +6591,8 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + protocol-buffers-schema@3.6.0: {} + psl@1.10.0: dependencies: punycode: 2.3.1 @@ -6357,6 +6610,10 @@ snapshots: quick-lru@5.1.1: {} + quickselect@2.0.0: {} + + quickselect@3.0.0: {} + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -6457,6 +6714,10 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve-protobuf-schema@2.1.0: + dependencies: + protocol-buffers-schema: 3.6.0 + resolve@1.22.8: dependencies: is-core-module: 2.15.1 @@ -6509,6 +6770,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 @@ -6728,6 +6991,10 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 + supercluster@8.0.1: + dependencies: + kdbush: 4.0.2 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -6793,6 +7060,8 @@ snapshots: tinypool@1.0.1: {} + tinyqueue@3.0.0: {} + tinyrainbow@1.2.0: {} tinyspy@3.0.2: {} @@ -6992,6 +7261,12 @@ snapshots: - supports-color - terser + vt-pbf@3.1.3: + dependencies: + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 + pbf: 3.3.0 + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 @@ -7051,6 +7326,10 @@ snapshots: dependencies: isexe: 2.0.0 + which@4.0.0: + dependencies: + isexe: 3.1.1 + why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 diff --git a/public/map-styles/dark.json b/public/map-styles/dark.json new file mode 100644 index 0000000..a916e7d --- /dev/null +++ b/public/map-styles/dark.json @@ -0,0 +1,3988 @@ +{ + "version": 8, + "sources": { + "protomaps": { + "type": "vector", + "url": "https://maps.datawan.id/tiles/planet.json", + "attribution": "Datawan | Protomaps © OpenStreetMap" + } + }, + "sprite": "https://maps.datawan.id/sprites/black", + "glyphs": "https://maps.datawan.id/glyphs/{fontstack}/{range}.pbf", + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "#2b2b2b" + } + }, + { + "id": "earth", + "type": "fill", + "filter": ["==", ["geometry-type"], "Polygon"], + "source": "protomaps", + "source-layer": "earth", + "paint": { + "fill-color": "#141414" + } + }, + { + "id": "landuse_park", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "national_park", + "park", + "cemetery", + "protected_area", + "nature_reserve", + "forest", + "golf_course" + ], + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + "#181818", + 12, + "#181818" + ] + } + }, + { + "id": "landuse_urban_green", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "allotments", "village_green", "playground"], + "paint": { + "fill-color": "#181818", + "fill-opacity": 0.7 + } + }, + { + "id": "landuse_hospital", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "hospital"], + "paint": { + "fill-color": "#1d1d1d" + } + }, + { + "id": "landuse_industrial", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "industrial"], + "paint": { + "fill-color": "#101010" + } + }, + { + "id": "landuse_school", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "school", "university", "college"], + "paint": { + "fill-color": "#111111" + } + }, + { + "id": "landuse_beach", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "beach"], + "paint": { + "fill-color": "#1f1f1f" + } + }, + { + "id": "landuse_zoo", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "zoo"], + "paint": { + "fill-color": "#191919" + } + }, + { + "id": "landuse_military", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "military", "naval_base", "airfield"], + "paint": { + "fill-color": "#191919" + } + }, + { + "id": "landuse_wood", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "wood", "nature_reserve", "forest"], + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + "#1a1a1a", + 12, + "#1a1a1a" + ] + } + }, + { + "id": "landuse_scrub", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "scrub", "grassland", "grass"], + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + "#1c1c1c", + 12, + "#1c1c1c" + ] + } + }, + { + "id": "landuse_glacier", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "glacier"], + "paint": { + "fill-color": "#191919" + } + }, + { + "id": "landuse_sand", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "sand"], + "paint": { + "fill-color": "#161616" + } + }, + { + "id": "landuse_aerodrome", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "aerodrome"], + "paint": { + "fill-color": "#191919" + } + }, + { + "id": "roads_runway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["==", "kind_detail", "runway"], + "paint": { + "line-color": "#323232", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 10, + 0, + 12, + 4, + 18, + 30 + ] + } + }, + { + "id": "roads_taxiway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": ["==", "kind_detail", "taxiway"], + "paint": { + "line-color": "#323232", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 15, + 6 + ] + } + }, + { + "id": "landuse_runway", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["any", ["in", "kind", "runway", "taxiway"]], + "paint": { + "fill-color": "#323232" + } + }, + { + "id": "water", + "type": "fill", + "filter": ["==", ["geometry-type"], "Polygon"], + "source": "protomaps", + "source-layer": "water", + "paint": { + "fill-color": "#333333" + } + }, + { + "id": "water_stream", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 14, + "filter": ["in", "kind", "stream"], + "paint": { + "line-color": "#333333", + "line-width": 0.5 + } + }, + { + "id": "water_river", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 9, + "filter": ["in", "kind", "river"], + "paint": { + "line-color": "#333333", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1, + 18, + 12 + ] + } + }, + { + "id": "landuse_pedestrian", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "pedestrian"], + "paint": { + "fill-color": "#191919" + } + }, + { + "id": "landuse_pier", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "pier"], + "paint": { + "fill-color": "#0a0a0a" + } + }, + { + "id": "roads_tunnels_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#101010", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#101010", + "line-dasharray": [3, 2], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["has", "is_link"]], + "paint": { + "line-color": "#101010", + "line-dasharray": [3, 2], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#101010", + "line-dasharray": [3, 2], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_highway_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#101010", + "line-dasharray": [6, 0.5], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_tunnels_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#292929", + "line-dasharray": [4.5, 0.5], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["has", "is_link"]], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["==", "kind", "major_road"]], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_tunnels_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["has", "is_tunnel"], + ["==", ["get", "kind"], "highway"], + ["!", ["has", "is_link"]] + ], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "buildings", + "type": "fill", + "source": "protomaps", + "source-layer": "buildings", + "paint": { + "fill-color": "#0a0a0a", + "fill-opacity": 0.5 + } + }, + { + "id": "roads_pier", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["==", "kind_detail", "pier"], + "paint": { + "line-color": "#0a0a0a", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 0.5, + 20, + 16 + ] + } + }, + { + "id": "roads_minor_service_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["==", "kind_detail", "service"] + ], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 18, + 8 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["!=", "kind_detail", "service"] + ], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": ["has", "is_link"], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1.5 + ] + } + }, + { + "id": "roads_major_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_highway_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["in", "kind", "other", "path"], + ["!=", "kind_detail", "pier"] + ], + "paint": { + "line-color": "#1f1f1f", + "line-dasharray": [3, 1], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["has", "is_link"], + "paint": { + "line-color": "#1f1f1f", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_minor_service", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["==", "kind_detail", "service"] + ], + "paint": { + "line-color": "#1f1f1f", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 18, + 8 + ] + } + }, + { + "id": "roads_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["!=", "kind_detail", "service"] + ], + "paint": { + "line-color": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + "#292929", + 16, + "#1f1f1f" + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_major_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_highway_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1 + ] + } + }, + { + "id": "roads_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "roads_rail", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["==", "kind", "rail"], + "paint": { + "line-dasharray": [0.3, 0.75], + "line-opacity": 0.5, + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 0.15, + 18, + 9 + ] + } + }, + { + "id": "boundaries_country", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "filter": ["<=", "kind_detail", 2], + "paint": { + "line-color": "#707070", + "line-width": 1, + "line-dasharray": [3, 2] + } + }, + { + "id": "boundaries", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "filter": [">", "kind_detail", 2], + "paint": { + "line-color": "#707070", + "line-width": 0.5, + "line-dasharray": [3, 2] + } + }, + { + "id": "roads_bridges_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["has", "is_link"]], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_bridges_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "major_road"]], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 0.5, + 18, + 10 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#1f1f1f", + "line-dasharray": [2, 1], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#1f1f1f", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_bridges_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["has", "is_link"]], + "paint": { + "line-color": "#1f1f1f", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_bridges_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "major_road"]], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_bridges_highway_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + ["has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#141414", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_bridges_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#292929", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "water_waterway_label", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "minzoom": 13, + "filter": ["in", "kind", "river", "stream"], + "layout": { + "symbol-placement": "line", + "text-font": ["Noto Sans Italic"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": 12, + "text-letter-spacing": 0.2 + }, + "paint": { + "text-color": "#707070" + } + }, + { + "id": "roads_labels_minor", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 15, + "filter": ["in", "kind", "minor_road", "other", "path"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "symbol-placement": "line", + "text-font": ["Noto Sans Regular"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": 12 + }, + "paint": { + "text-color": "#525252", + "text-halo-color": "#141414", + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "water_label_ocean", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": [ + "in", + "kind", + "sea", + "ocean", + "lake", + "water", + "bay", + "strait", + "fjord" + ], + "layout": { + "text-font": ["Noto Sans Italic"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": ["interpolate", ["linear"], ["zoom"], 3, 10, 10, 12], + "text-letter-spacing": 0.1, + "text-max-width": 9, + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#707070" + } + }, + { + "id": "water_label_lakes", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": ["in", "kind", "lake", "water"], + "layout": { + "text-font": ["Noto Sans Italic"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": ["interpolate", ["linear"], ["zoom"], 3, 0, 6, 12, 10, 12], + "text-letter-spacing": 0.1, + "text-max-width": 9 + }, + "paint": { + "text-color": "#707070" + } + }, + { + "id": "roads_labels_major", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 11, + "filter": ["in", "kind", "highway", "major_road"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "symbol-placement": "line", + "text-font": ["Noto Sans Regular"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": 12 + }, + "paint": { + "text-color": "#5c5c5c", + "text-halo-color": "#141414", + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "places_subplace", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "neighbourhood"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-font": ["Noto Sans Regular"], + "text-max-width": 7, + "text-letter-spacing": 0.1, + "text-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 5, + 2, + 8, + 4, + 12, + 18, + 15, + 20 + ], + "text-size": [ + "interpolate", + ["exponential", 1.2], + ["zoom"], + 11, + 8, + 14, + 14, + 18, + 24 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#5c5c5c", + "text-halo-color": "#141414", + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "places_locality", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "locality"], + "layout": { + "icon-image": ["step", ["zoom"], "townspot", 8, ""], + "icon-size": 0.7, + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-font": [ + "case", + ["<=", ["get", "min_zoom"], 5], + ["literal", ["Noto Sans Medium"]], + ["literal", ["Noto Sans Regular"]] + ], + "text-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 5, + 3, + 8, + 7, + 12, + 11 + ], + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 2, + [ + "case", + ["<", ["get", "population_rank"], 13], + 8, + [">=", ["get", "population_rank"], 13], + 13, + 0 + ], + 4, + [ + "case", + ["<", ["get", "population_rank"], 13], + 10, + [">=", ["get", "population_rank"], 13], + 15, + 0 + ], + 6, + [ + "case", + ["<", ["get", "population_rank"], 12], + 11, + [">=", ["get", "population_rank"], 12], + 17, + 0 + ], + 8, + [ + "case", + ["<", ["get", "population_rank"], 11], + 11, + [">=", ["get", "population_rank"], 11], + 18, + 0 + ], + 10, + [ + "case", + ["<", ["get", "population_rank"], 9], + 12, + [">=", ["get", "population_rank"], 9], + 20, + 0 + ], + 15, + [ + "case", + ["<", ["get", "population_rank"], 8], + 12, + [">=", ["get", "population_rank"], 8], + 22, + 0 + ] + ], + "icon-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + 0, + 8, + 4, + 10, + 8, + 12, + 6, + 22, + 2 + ], + "text-justify": "auto", + "text-anchor": ["step", ["zoom"], "left", 8, "center"], + "text-radial-offset": 0.4 + }, + "paint": { + "text-color": "#999999", + "text-halo-color": "#141414", + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "places_region", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "region"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "text-field": [ + "step", + ["zoom"], + ["get", "name:short"], + 6, + [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + ["has", "script"], + ["has", "script2"], + ["has", "script3"] + ], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ] + ], + "text-font": ["Noto Sans Regular"], + "text-size": ["interpolate", ["linear"], ["zoom"], 3, 11, 7, 16], + "text-radial-offset": 0.2, + "text-anchor": "center", + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#3d3d3d", + "text-halo-color": "#141414", + "text-halo-width": 1, + "text-halo-blur": 1 + } + }, + { + "id": "places_country", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "country"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "text-field": [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {} + ], + "text-font": ["Noto Sans Medium"], + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 2, + [ + "case", + ["<", ["get", "population_rank"], 10], + 8, + [">=", ["get", "population_rank"], 10], + 12, + 0 + ], + 6, + [ + "case", + ["<", ["get", "population_rank"], 8], + 10, + [">=", ["get", "population_rank"], 8], + 18, + 0 + ], + 8, + [ + "case", + ["<", ["get", "population_rank"], 7], + 11, + [">=", ["get", "population_rank"], 7], + 20, + 0 + ] + ], + "icon-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + 2, + 14, + 2, + 16, + 20, + 17, + 2, + 22, + 2 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#707070" + } + } + ] +} diff --git a/public/map-styles/light.json b/public/map-styles/light.json new file mode 100644 index 0000000..e51d5cd --- /dev/null +++ b/public/map-styles/light.json @@ -0,0 +1,4271 @@ +{ + "version": 8, + "sources": { + "protomaps": { + "type": "vector", + "url": "https://maps.datawan.id/tiles/planet.json", + "attribution": "Datawan | Protomaps © OpenStreetMap" + } + }, + "sprite": "https://maps.datawan.id/sprites/light", + "glyphs": "https://maps.datawan.id/glyphs/{fontstack}/{range}.pbf", + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "#cccccc" + } + }, + { + "id": "earth", + "type": "fill", + "filter": ["==", ["geometry-type"], "Polygon"], + "source": "protomaps", + "source-layer": "earth", + "paint": { + "fill-color": "#f2efe9" + } + }, + { + "id": "landuse_park", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": [ + "in", + "kind", + "national_park", + "park", + "cemetery", + "protected_area", + "nature_reserve", + "forest", + "golf_course" + ], + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + "#cfddd5", + 12, + "#9cd3b4" + ] + } + }, + { + "id": "landuse_urban_green", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "allotments", "village_green", "playground"], + "paint": { + "fill-color": "#9cd3b4", + "fill-opacity": 0.7 + } + }, + { + "id": "landuse_hospital", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "hospital"], + "paint": { + "fill-color": "#e4dad9" + } + }, + { + "id": "landuse_industrial", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "industrial"], + "paint": { + "fill-color": "#d1dde1" + } + }, + { + "id": "landuse_school", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "school", "university", "college"], + "paint": { + "fill-color": "#e4ded7" + } + }, + { + "id": "landuse_beach", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "beach"], + "paint": { + "fill-color": "#e8e4d0" + } + }, + { + "id": "landuse_zoo", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "zoo"], + "paint": { + "fill-color": "#c6dcdc" + } + }, + { + "id": "landuse_military", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "military", "naval_base", "airfield"], + "paint": { + "fill-color": "#c6dcdc" + } + }, + { + "id": "landuse_wood", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "wood", "nature_reserve", "forest"], + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + "#d0ded0", + 12, + "#a0d9a0" + ] + } + }, + { + "id": "landuse_scrub", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "scrub", "grassland", "grass"], + "paint": { + "fill-color": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + "#cedcd7", + 12, + "#99d2bb" + ] + } + }, + { + "id": "landuse_glacier", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "glacier"], + "paint": { + "fill-color": "#e7e7e7" + } + }, + { + "id": "landuse_sand", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "sand"], + "paint": { + "fill-color": "#e2e0d7" + } + }, + { + "id": "landuse_aerodrome", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["in", "kind", "aerodrome"], + "paint": { + "fill-color": "#dadbdf" + } + }, + { + "id": "roads_runway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["==", "kind_detail", "runway"], + "paint": { + "line-color": "#e9e9ed", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 10, + 0, + 12, + 4, + 18, + 30 + ] + } + }, + { + "id": "roads_taxiway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": ["==", "kind_detail", "taxiway"], + "paint": { + "line-color": "#e9e9ed", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 15, + 6 + ] + } + }, + { + "id": "water", + "type": "fill", + "filter": ["==", ["geometry-type"], "Polygon"], + "source": "protomaps", + "source-layer": "water", + "paint": { + "fill-color": "#aad3df" + } + }, + { + "id": "water_stream", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 14, + "filter": ["in", "kind", "stream"], + "paint": { + "line-color": "#aad3df", + "line-width": 0.5 + } + }, + { + "id": "water_river", + "type": "line", + "source": "protomaps", + "source-layer": "water", + "minzoom": 9, + "filter": ["in", "kind", "river"], + "paint": { + "line-color": "#aad3df", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1, + 18, + 12 + ] + } + }, + { + "id": "landuse_pedestrian", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "pedestrian"], + "paint": { + "fill-color": "#e3e0d4" + } + }, + { + "id": "landuse_pier", + "type": "fill", + "source": "protomaps", + "source-layer": "landuse", + "filter": ["==", "kind", "pier"], + "paint": { + "fill-color": "#f2efe9" + } + }, + { + "id": "roads_tunnels_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#f2efe9", + "line-dasharray": [3, 2], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["has", "is_link"]], + "paint": { + "line-color": "#f2efe9", + "line-dasharray": [3, 2], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#f2efe9", + "line-dasharray": [3, 2], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_tunnels_highway_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#f2efe9", + "line-dasharray": [6, 0.5], + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_tunnels_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#d5d5d5", + "line-dasharray": [4.5, 0.5], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_tunnels_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["has", "is_link"]], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_tunnels_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["all", ["has", "is_tunnel"], ["==", "kind", "major_road"]], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_tunnels_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["has", "is_tunnel"], + ["==", ["get", "kind"], "highway"], + ["!", ["has", "is_link"]] + ], + "paint": { + "line-color": "#d5d5d5", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "buildings", + "type": "fill", + "source": "protomaps", + "source-layer": "buildings", + "paint": { + "fill-color": "#cccccc", + "fill-opacity": 0.5 + } + }, + { + "id": "roads_pier", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["==", "kind_detail", "pier"], + "paint": { + "line-color": "#f2efe9", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 0.5, + 20, + 16 + ] + } + }, + { + "id": "roads_minor_service_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["==", "kind_detail", "service"] + ], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 18, + 8 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["!=", "kind_detail", "service"] + ], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1 + ] + } + }, + { + "id": "roads_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 13, + "filter": ["has", "is_link"], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1.5 + ] + } + }, + { + "id": "roads_major_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_highway_casing_late", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["in", "kind", "other", "path"], + ["!=", "kind_detail", "pier"] + ], + "paint": { + "line-color": "#ebebeb", + "line-dasharray": [3, 1], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["has", "is_link"], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_minor_service", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["==", "kind_detail", "service"] + ], + "paint": { + "line-color": "#ebebeb", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 18, + 8 + ] + } + }, + { + "id": "roads_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "minor_road"], + ["!=", "kind_detail", "service"] + ], + "paint": { + "line-color": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + "#ebebeb", + 16, + "#ffffff" + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_major_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 0.5, + 18, + 13 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1 + ] + } + }, + { + "id": "roads_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "major_road"] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_highway_casing_early", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "maxzoom": 12, + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1 + ] + } + }, + { + "id": "roads_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["!has", "is_tunnel"], + ["!has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "roads_rail", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": ["==", "kind", "rail"], + "paint": { + "line-dasharray": [0.3, 0.75], + "line-opacity": 0.5, + "line-color": "#a7b1b3", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 0.15, + 18, + 9 + ] + } + }, + { + "id": "boundaries_country", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "paint": { + "line-color": "#adadad", + "line-width": 1, + "line-dasharray": [3, 2] + } + }, + { + "id": "boundaries", + "type": "line", + "source": "protomaps", + "source-layer": "boundaries", + "paint": { + "line-color": "#adadad", + "line-width": 0.5, + "line-dasharray": [3, 2] + } + }, + { + "id": "roads_bridges_other_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_link_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["has", "is_link"]], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 12, + 0, + 12.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_minor_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 0.8 + ] + } + }, + { + "id": "roads_bridges_major_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "major_road"]], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 0.5, + 18, + 10 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 9, + 0, + 9.5, + 1.5 + ] + } + }, + { + "id": "roads_bridges_other", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["in", "kind", "other", "path"]], + "paint": { + "line-color": "#ebebeb", + "line-dasharray": [2, 1], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 14, + 0, + 20, + 7 + ] + } + }, + { + "id": "roads_bridges_minor", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "minor_road"]], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 11, + 0, + 12.5, + 0.5, + 15, + 2, + 18, + 11 + ] + } + }, + { + "id": "roads_bridges_link", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["has", "is_link"]], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 13, + 0, + 13.5, + 1, + 18, + 11 + ] + } + }, + { + "id": "roads_bridges_major", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": ["all", ["has", "is_bridge"], ["==", "kind", "major_road"]], + "paint": { + "line-color": "#f5f5f5", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 6, + 0, + 12, + 1.6, + 15, + 3, + 18, + 13 + ] + } + }, + { + "id": "roads_bridges_highway_casing", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 12, + "filter": [ + "all", + ["has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#f2efe9", + "line-gap-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 3.5, + 0.5, + 18, + 15 + ], + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 7, + 0, + 7.5, + 1, + 20, + 15 + ] + } + }, + { + "id": "roads_bridges_highway", + "type": "line", + "source": "protomaps", + "source-layer": "roads", + "filter": [ + "all", + ["has", "is_bridge"], + ["==", "kind", "highway"], + ["!has", "is_link"] + ], + "paint": { + "line-color": "#ffffff", + "line-width": [ + "interpolate", + ["exponential", 1.6], + ["zoom"], + 3, + 0, + 6, + 1.1, + 12, + 1.6, + 15, + 5, + 18, + 15 + ] + } + }, + { + "id": "water_waterway_label", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "minzoom": 13, + "filter": ["in", "kind", "river", "stream"], + "layout": { + "symbol-placement": "line", + "text-font": ["Noto Sans Regular"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": 12, + "text-letter-spacing": 0.3 + }, + "paint": { + "text-color": "#ffffff" + } + }, + { + "id": "pois_peak", + "type": "symbol", + "source": "protomaps", + "source-layer": "pois", + "filter": ["==", "kind", "peak"], + "layout": { + "text-font": ["Noto Sans Italic"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": ["interpolate", ["linear"], ["zoom"], 10, 8, 16, 12], + "text-letter-spacing": 0.1, + "text-max-width": 9 + }, + "paint": { + "text-color": "#7e9aa0", + "text-halo-width": 1.5 + } + }, + { + "id": "roads_labels_minor", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 15, + "filter": ["in", "kind", "minor_road", "other", "path"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "symbol-placement": "line", + "text-font": ["Noto Sans Regular"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": 12 + }, + "paint": { + "text-color": "#91888b", + "text-halo-color": "#ffffff", + "text-halo-width": 2 + } + }, + { + "id": "water_label_ocean", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": [ + "in", + "kind", + "sea", + "ocean", + "lake", + "water", + "bay", + "strait", + "fjord" + ], + "layout": { + "text-font": ["Noto Sans Medium"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": ["interpolate", ["linear"], ["zoom"], 3, 10, 10, 12], + "text-letter-spacing": 0.1, + "text-max-width": 9, + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#ffffff" + } + }, + { + "id": "water_label_lakes", + "type": "symbol", + "source": "protomaps", + "source-layer": "water", + "filter": ["in", "kind", "lake", "water"], + "layout": { + "text-font": ["Noto Sans Medium"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": ["interpolate", ["linear"], ["zoom"], 3, 0, 6, 12, 10, 12], + "text-letter-spacing": 0.1, + "text-max-width": 9 + }, + "paint": { + "text-color": "#ffffff" + } + }, + { + "id": "roads_labels_major", + "type": "symbol", + "source": "protomaps", + "source-layer": "roads", + "minzoom": 11, + "filter": ["in", "kind", "highway", "major_road"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "symbol-placement": "line", + "text-font": ["Noto Sans Regular"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-size": 12 + }, + "paint": { + "text-color": "#938a8d", + "text-halo-color": "#ffffff", + "text-halo-width": 2 + } + }, + { + "id": "places_subplace", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "neighbourhood"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-font": ["Noto Sans Regular"], + "text-max-width": 7, + "text-letter-spacing": 0.1, + "text-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 5, + 2, + 8, + 4, + 12, + 18, + 15, + 20 + ], + "text-size": [ + "interpolate", + ["exponential", 1.2], + ["zoom"], + 11, + 8, + 14, + 14, + 18, + 24 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#8f8f8f", + "text-halo-color": "#f2efe9", + "text-halo-width": 1.5 + } + }, + { + "id": "places_locality", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "locality"], + "layout": { + "icon-image": ["step", ["zoom"], "townspot", 8, ""], + "icon-size": 0.7, + "text-field": [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"], ["has", "script3"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ], + "text-font": [ + "case", + ["<=", ["get", "min_zoom"], 5], + ["literal", ["Noto Sans Medium"]], + ["literal", ["Noto Sans Regular"]] + ], + "text-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 5, + 3, + 8, + 7, + 12, + 11 + ], + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 2, + [ + "case", + ["<", ["get", "population_rank"], 13], + 8, + [">=", ["get", "population_rank"], 13], + 13, + 0 + ], + 4, + [ + "case", + ["<", ["get", "population_rank"], 13], + 10, + [">=", ["get", "population_rank"], 13], + 15, + 0 + ], + 6, + [ + "case", + ["<", ["get", "population_rank"], 12], + 11, + [">=", ["get", "population_rank"], 12], + 17, + 0 + ], + 8, + [ + "case", + ["<", ["get", "population_rank"], 11], + 11, + [">=", ["get", "population_rank"], 11], + 18, + 0 + ], + 10, + [ + "case", + ["<", ["get", "population_rank"], 9], + 12, + [">=", ["get", "population_rank"], 9], + 20, + 0 + ], + 15, + [ + "case", + ["<", ["get", "population_rank"], 8], + 12, + [">=", ["get", "population_rank"], 8], + 22, + 0 + ] + ], + "icon-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + 0, + 8, + 4, + 10, + 8, + 12, + 6, + 22, + 2 + ], + "text-anchor": ["step", ["zoom"], "left", 8, "center"], + "text-radial-offset": 0.4 + }, + "paint": { + "text-color": "#5c5c5c", + "text-halo-color": "#f2efe9", + "text-halo-width": 1 + } + }, + { + "id": "places_region", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "region"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "text-field": [ + "step", + ["zoom"], + ["get", "name:short"], + 6, + [ + "case", + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["!", ["any", ["has", "name2"], ["has", "pgf:name2"]]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["has", "script"], + [ + "case", + [ + "any", + ["is-supported-script", ["get", "name"]], + ["has", "pgf:name"] + ], + [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {}, + "\n", + {}, + [ + "case", + [ + "all", + ["!", ["has", "name:id"]], + ["has", "name:id"], + ["!", ["has", "script"]] + ], + "", + ["coalesce", ["get", "pgf:name"], ["get", "name"]] + ], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["get", "name:id"] + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {} + ] + ], + [ + "all", + ["any", ["has", "name"], ["has", "pgf:name"]], + ["any", ["has", "name2"], ["has", "pgf:name2"]], + ["!", ["any", ["has", "name3"], ["has", "pgf:name3"]]] + ], + [ + "case", + ["all", ["has", "script"], ["has", "script2"]], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["has", "script2"], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ], + [ + "case", + [ + "all", + ["has", "script"], + ["has", "script2"], + ["has", "script3"] + ], + [ + "format", + ["get", "name:id"], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "case", + ["!", ["has", "script"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name"], + ["get", "name"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + ["!", ["has", "script2"]], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name2"], + ["get", "name2"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name3"], ["get", "name3"]], + { + "text-font": [ + "case", + ["==", ["get", "script3"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ], + [ + "format", + [ + "coalesce", + ["get", "name:id"], + ["get", "pgf:name3"], + ["get", "name3"] + ], + {}, + "\n", + {}, + ["coalesce", ["get", "pgf:name"], ["get", "name"]], + { + "text-font": [ + "case", + ["==", ["get", "script"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + }, + "\n", + {}, + ["coalesce", ["get", "pgf:name2"], ["get", "name2"]], + { + "text-font": [ + "case", + ["==", ["get", "script2"], "Devanagari"], + ["literal", ["Noto Sans Devanagari Regular v1"]], + ["literal", ["Noto Sans Regular"]] + ] + } + ] + ] + ] + ] + ], + "text-font": ["Noto Sans Regular"], + "text-size": ["interpolate", ["linear"], ["zoom"], 3, 11, 7, 16], + "text-radial-offset": 0.2, + "text-anchor": "center", + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#b3b3b3", + "text-halo-color": "#f2efe9", + "text-halo-width": 2 + } + }, + { + "id": "places_country", + "type": "symbol", + "source": "protomaps", + "source-layer": "places", + "filter": ["==", "kind", "country"], + "layout": { + "symbol-sort-key": ["get", "min_zoom"], + "text-field": [ + "format", + ["coalesce", ["get", "name:id"], ["get", "name:id"]], + {} + ], + "text-font": ["Noto Sans Medium"], + "text-size": [ + "interpolate", + ["linear"], + ["zoom"], + 2, + [ + "case", + ["<", ["get", "population_rank"], 10], + 8, + [">=", ["get", "population_rank"], 10], + 12, + 0 + ], + 6, + [ + "case", + ["<", ["get", "population_rank"], 8], + 10, + [">=", ["get", "population_rank"], 8], + 18, + 0 + ], + 8, + [ + "case", + ["<", ["get", "population_rank"], 7], + 11, + [">=", ["get", "population_rank"], 7], + 20, + 0 + ] + ], + "icon-padding": [ + "interpolate", + ["linear"], + ["zoom"], + 0, + 2, + 14, + 2, + 16, + 20, + 17, + 2, + 22, + 2 + ], + "text-transform": "uppercase" + }, + "paint": { + "text-color": "#a3a3a3" + } + } + ] +} From e3dc6a3887294ba84cef8a528cc7d4ec503c65f4 Mon Sep 17 00:00:00 2001 From: Fityan <63894003+fityannugroho@users.noreply.github.com> Date: Wed, 13 Nov 2024 10:24:58 +0700 Subject: [PATCH 3/3] fix: add attribution control for map layers in TileLayer component --- components/tile-layer.tsx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/components/tile-layer.tsx b/components/tile-layer.tsx index d371c2e..fa83063 100644 --- a/components/tile-layer.tsx +++ b/components/tile-layer.tsx @@ -18,6 +18,13 @@ export default function TileLayer() { if (!maplibreMap) { glRef.current.addTo(map) + + map.attributionControl + .addAttribution( + 'Datawan | Protomaps © OpenStreetMap', + ) + .setPrefix('Leaflet') + return }