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
}