├── LICENSE.md ├── README.md ├── icons ├── circle-11.svg └── star-11.svg └── style.json /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2024, MapTiler.com & OpenMapTiles contributors. 2 | Copyright (c) 2015, CartoDB Inc. 3 | All rights reserved. 4 | 5 | Derived from "CartoDB Basemaps" (https://github.com/CartoDB/CartoDB-basemaps) 6 | designed by Stamen and Paul Norman for CartoDB Inc., licensed under CC-BY 3.0. 7 | 8 | # Code license: BSD 3-Clause License 9 | 10 | Redistribution and use in source and binary forms, with or without 11 | modification, are permitted provided that the following conditions are met: 12 | 13 | * Redistributions of source code must retain the above copyright notice, this 14 | list of conditions and the following disclaimer. 15 | 16 | * Redistributions in binary form must reproduce the above copyright notice, 17 | this list of conditions and the following disclaimer in the documentation 18 | and/or other materials provided with the distribution. 19 | 20 | * Neither the name of the copyright holder nor the names of its 21 | contributors may be used to endorse or promote products derived from 22 | this software without specific prior written permission. 23 | 24 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 28 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 30 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 32 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 | 35 | # Design license: CC-BY 4.0 36 | 37 | The visual design features of the style (also known as the "look and feel" of 38 | the map) are licensed under the Creative Commons Attribution 4.0 license. 39 | 40 | To view a copy of the license, visit https://creativecommons.org/licenses/by/4.0/. 41 | 42 | Attribution for the design defined in this repository needs not to be provided 43 | on map images, but should be reasonably accessible from maps based on this style 44 | (for example, in a webpage linked from copyright notice on the map). 45 | 46 | Products or services using maps derived from OpenMapTiles schema need to visibly 47 | credit "OpenMapTiles.org" or reference "OpenMapTiles" with a link to 48 | https://openmaptiles.org/. 49 | 50 | For a browsable electronic map based on OpenMapTiles and OpenStreetMap data, the 51 | credit should appear in the corner of the map. For example: 52 | 53 | [© OpenMapTiles](https://openmaptiles.org/) 54 | [© OpenStreetMap contributors](https://www.openstreetmap.org/copyright) 55 | 56 | For printed and static maps a similar attribution should be made in a textual 57 | description near the image, in the same fashion as if you cite a photograph. 58 | 59 | Exceptions to OpenMapTiles attribution requirement can be in a written form granted 60 | by MapTiler AG (info@maptiler.com). 61 | The project contributors grant MapTiler AG the license to give such 62 | exceptions on a commercial basis. 63 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Positron 2 | 3 | A GL JS basemap style useful for data visualizations. The cartography is based on the 4 | [CartoDB Positron Basemap](https://github.com/CartoDB/CartoDB-basemaps) and it is using the vector tile 5 | schema of [OpenMapTiles](https://github.com/openmaptiles/openmaptiles). 6 | 7 | ## Preview 8 | 9 | **[:globe_with_meridians: Browse the map](https://openmaptiles.github.io/positron-gl-style)** 10 | 11 | ## Edit the Style 12 | 13 | Use the map editor in MapTiler Cloud to view and adjust this map. Open the editor and upload style from this repository or host from various styles available on the platform. 14 | 15 | [Try style editor](https://cloud.maptiler.com/maps/editor) 16 | 17 | [Test Positron](https://cloud.maptiler.com/maps/editor?map=positron) 18 | 19 | Or use the [Maputnik CLI](https://openmaptiles.org/docs/style/maputnik/) to edit and develop the style. 20 | After you've started Maputnik open the editor on `localhost:8000`. 21 | 22 | ``` 23 | maputnik --watch --file style.json 24 | ``` 25 | -------------------------------------------------------------------------------- /icons/circle-11.svg: -------------------------------------------------------------------------------- 1 | circle-11.svg -------------------------------------------------------------------------------- /icons/star-11.svg: -------------------------------------------------------------------------------- 1 | star-11.svg -------------------------------------------------------------------------------- /style.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 8, 3 | "name": "Positron", 4 | "metadata": { 5 | "mapbox:autocomposite": false, 6 | "mapbox:groups": { 7 | "101da9f13b64a08fa4b6ac1168e89e5f": { 8 | "collapsed": false, 9 | "name": "Places" 10 | }, 11 | "a14c9607bc7954ba1df7205bf660433f": {"name": "Boundaries"}, 12 | "b6371a3f2f5a9932464fa3867530a2e5": { 13 | "collapsed": false, 14 | "name": "Transportation" 15 | } 16 | }, 17 | "mapbox:type": "template", 18 | "openmaptiles:mapbox:owner": "openmaptiles", 19 | "openmaptiles:mapbox:source:url": "mapbox://openmaptiles.4qljc88t", 20 | "openmaptiles:version": "3.x" 21 | }, 22 | "sources": { 23 | "openmaptiles": { 24 | "type": "vector", 25 | "url": "https://api.maptiler.com/tiles/v3-openmaptiles/tiles.json?key={key}" 26 | } 27 | }, 28 | "sprite": "https://openmaptiles.github.io/positron-gl-style/sprite", 29 | "glyphs": "https://api.maptiler.com/fonts/{fontstack}/{range}.pbf?key={key}", 30 | "layers": [ 31 | { 32 | "id": "background", 33 | "type": "background", 34 | "paint": {"background-color": "rgb(242,243,240)"} 35 | }, 36 | { 37 | "id": "park", 38 | "type": "fill", 39 | "source": "openmaptiles", 40 | "source-layer": "park", 41 | "filter": ["==", "$type", "Polygon"], 42 | "layout": {"visibility": "visible"}, 43 | "paint": {"fill-color": "rgb(230, 233, 229)"} 44 | }, 45 | { 46 | "id": "water", 47 | "type": "fill", 48 | "source": "openmaptiles", 49 | "source-layer": "water", 50 | "filter": [ 51 | "all", 52 | ["==", "$type", "Polygon"], 53 | ["!=", "brunnel", "tunnel"] 54 | ], 55 | "layout": {"visibility": "visible"}, 56 | "paint": {"fill-antialias": true, "fill-color": "rgb(194, 200, 202)"} 57 | }, 58 | { 59 | "id": "landcover_ice_shelf", 60 | "type": "fill", 61 | "source": "openmaptiles", 62 | "source-layer": "landcover", 63 | "maxzoom": 8, 64 | "filter": [ 65 | "all", 66 | ["==", "$type", "Polygon"], 67 | ["==", "subclass", "ice_shelf"] 68 | ], 69 | "layout": {"visibility": "visible"}, 70 | "paint": {"fill-color": "hsl(0, 0%, 98%)", "fill-opacity": 0.7} 71 | }, 72 | { 73 | "id": "landcover_glacier", 74 | "type": "fill", 75 | "source": "openmaptiles", 76 | "source-layer": "landcover", 77 | "maxzoom": 8, 78 | "filter": [ 79 | "all", 80 | ["==", "$type", "Polygon"], 81 | ["==", "subclass", "glacier"] 82 | ], 83 | "layout": {"visibility": "visible"}, 84 | "paint": { 85 | "fill-color": "hsl(0, 0%, 98%)", 86 | "fill-opacity": {"base": 1, "stops": [[0, 1], [8, 0.5]]} 87 | } 88 | }, 89 | { 90 | "id": "landuse_residential", 91 | "type": "fill", 92 | "source": "openmaptiles", 93 | "source-layer": "landuse", 94 | "maxzoom": 16, 95 | "filter": [ 96 | "all", 97 | ["==", "$type", "Polygon"], 98 | ["==", "class", "residential"] 99 | ], 100 | "layout": {"visibility": "visible"}, 101 | "paint": { 102 | "fill-color": "rgb(234, 234, 230)", 103 | "fill-opacity": {"base": 0.6, "stops": [[8, 0.8], [9, 0.6]]} 104 | } 105 | }, 106 | { 107 | "id": "landcover_wood", 108 | "type": "fill", 109 | "source": "openmaptiles", 110 | "source-layer": "landcover", 111 | "minzoom": 10, 112 | "filter": ["all", ["==", "$type", "Polygon"], ["==", "class", "wood"]], 113 | "layout": {"visibility": "visible"}, 114 | "paint": { 115 | "fill-color": "rgb(220,224,220)", 116 | "fill-opacity": {"base": 1, "stops": [[8, 0], [12, 1]]} 117 | } 118 | }, 119 | { 120 | "id": "waterway", 121 | "type": "line", 122 | "source": "openmaptiles", 123 | "source-layer": "waterway", 124 | "filter": ["==", "$type", "LineString"], 125 | "layout": {"visibility": "visible"}, 126 | "paint": {"line-color": "hsl(195, 17%, 78%)"} 127 | }, 128 | { 129 | "id": "water_name", 130 | "type": "symbol", 131 | "source": "openmaptiles", 132 | "source-layer": "water_name", 133 | "filter": ["==", "$type", "LineString"], 134 | "layout": { 135 | "symbol-placement": "line", 136 | "symbol-spacing": 500, 137 | "text-field": "{name:latin}\n{name:nonlatin}", 138 | "text-font": ["Metropolis Medium Italic", "Noto Sans Italic"], 139 | "text-rotation-alignment": "map", 140 | "text-size": 12 141 | }, 142 | "paint": { 143 | "text-color": "rgb(157,169,177)", 144 | "text-halo-blur": 1, 145 | "text-halo-color": "rgb(242,243,240)", 146 | "text-halo-width": 1 147 | } 148 | }, 149 | { 150 | "id": "building", 151 | "type": "fill", 152 | "source": "openmaptiles", 153 | "source-layer": "building", 154 | "minzoom": 12, 155 | "paint": { 156 | "fill-antialias": true, 157 | "fill-color": "rgb(234, 234, 229)", 158 | "fill-outline-color": "rgb(219, 219, 218)" 159 | } 160 | }, 161 | { 162 | "id": "tunnel_motorway_casing", 163 | "type": "line", 164 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 165 | "source": "openmaptiles", 166 | "source-layer": "transportation", 167 | "minzoom": 6, 168 | "filter": [ 169 | "all", 170 | ["==", "$type", "LineString"], 171 | ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]] 172 | ], 173 | "layout": { 174 | "line-cap": "butt", 175 | "line-join": "miter", 176 | "visibility": "visible" 177 | }, 178 | "paint": { 179 | "line-color": "rgb(213, 213, 213)", 180 | "line-opacity": 1, 181 | "line-width": {"base": 1.4, "stops": [[5.8, 0], [6, 3], [20, 40]]} 182 | } 183 | }, 184 | { 185 | "id": "tunnel_motorway_inner", 186 | "type": "line", 187 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 188 | "source": "openmaptiles", 189 | "source-layer": "transportation", 190 | "minzoom": 6, 191 | "filter": [ 192 | "all", 193 | ["==", "$type", "LineString"], 194 | ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]] 195 | ], 196 | "layout": { 197 | "line-cap": "round", 198 | "line-join": "round", 199 | "visibility": "visible" 200 | }, 201 | "paint": { 202 | "line-color": "rgb(234,234,234)", 203 | "line-width": {"base": 1.4, "stops": [[4, 2], [6, 1.3], [20, 30]]} 204 | } 205 | }, 206 | { 207 | "id": "aeroway-taxiway", 208 | "type": "line", 209 | "metadata": {"mapbox:group": "1444849345966.4436"}, 210 | "source": "openmaptiles", 211 | "source-layer": "aeroway", 212 | "minzoom": 12, 213 | "filter": ["all", ["in", "class", "taxiway"]], 214 | "layout": { 215 | "line-cap": "round", 216 | "line-join": "round", 217 | "visibility": "visible" 218 | }, 219 | "paint": { 220 | "line-color": "hsl(0, 0%, 88%)", 221 | "line-opacity": 1, 222 | "line-width": {"base": 1.55, "stops": [[13, 1.8], [20, 20]]} 223 | } 224 | }, 225 | { 226 | "id": "aeroway-runway-casing", 227 | "type": "line", 228 | "metadata": {"mapbox:group": "1444849345966.4436"}, 229 | "source": "openmaptiles", 230 | "source-layer": "aeroway", 231 | "minzoom": 11, 232 | "filter": ["all", ["in", "class", "runway"]], 233 | "layout": { 234 | "line-cap": "round", 235 | "line-join": "round", 236 | "visibility": "visible" 237 | }, 238 | "paint": { 239 | "line-color": "hsl(0, 0%, 88%)", 240 | "line-opacity": 1, 241 | "line-width": {"base": 1.5, "stops": [[11, 6], [17, 55]]} 242 | } 243 | }, 244 | { 245 | "id": "aeroway-area", 246 | "type": "fill", 247 | "metadata": {"mapbox:group": "1444849345966.4436"}, 248 | "source": "openmaptiles", 249 | "source-layer": "aeroway", 250 | "minzoom": 4, 251 | "filter": [ 252 | "all", 253 | ["==", "$type", "Polygon"], 254 | ["in", "class", "runway", "taxiway"] 255 | ], 256 | "layout": {"visibility": "visible"}, 257 | "paint": { 258 | "fill-color": "rgba(255, 255, 255, 1)", 259 | "fill-opacity": {"base": 1, "stops": [[13, 0], [14, 1]]} 260 | } 261 | }, 262 | { 263 | "id": "aeroway-runway", 264 | "type": "line", 265 | "metadata": {"mapbox:group": "1444849345966.4436"}, 266 | "source": "openmaptiles", 267 | "source-layer": "aeroway", 268 | "minzoom": 11, 269 | "filter": [ 270 | "all", 271 | ["in", "class", "runway"], 272 | ["==", "$type", "LineString"] 273 | ], 274 | "layout": { 275 | "line-cap": "round", 276 | "line-join": "round", 277 | "visibility": "visible" 278 | }, 279 | "paint": { 280 | "line-color": "rgba(255, 255, 255, 1)", 281 | "line-opacity": 1, 282 | "line-width": {"base": 1.5, "stops": [[11, 4], [17, 50]]} 283 | } 284 | }, 285 | { 286 | "id": "road_area_pier", 287 | "type": "fill", 288 | "metadata": {}, 289 | "source": "openmaptiles", 290 | "source-layer": "transportation", 291 | "filter": ["all", ["==", "$type", "Polygon"], ["==", "class", "pier"]], 292 | "layout": {"visibility": "visible"}, 293 | "paint": {"fill-antialias": true, "fill-color": "rgb(242,243,240)"} 294 | }, 295 | { 296 | "id": "road_pier", 297 | "type": "line", 298 | "metadata": {}, 299 | "source": "openmaptiles", 300 | "source-layer": "transportation", 301 | "filter": ["all", ["==", "$type", "LineString"], ["in", "class", "pier"]], 302 | "layout": {"line-cap": "round", "line-join": "round"}, 303 | "paint": { 304 | "line-color": "rgb(242,243,240)", 305 | "line-width": {"base": 1.2, "stops": [[15, 1], [17, 4]]} 306 | } 307 | }, 308 | { 309 | "id": "highway_path", 310 | "type": "line", 311 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 312 | "source": "openmaptiles", 313 | "source-layer": "transportation", 314 | "filter": ["all", ["==", "$type", "LineString"], ["==", "class", "path"]], 315 | "layout": { 316 | "line-cap": "round", 317 | "line-join": "round", 318 | "visibility": "visible" 319 | }, 320 | "paint": { 321 | "line-color": "rgb(234, 234, 234)", 322 | "line-opacity": 0.9, 323 | "line-width": {"base": 1.2, "stops": [[13, 1], [20, 10]]} 324 | } 325 | }, 326 | { 327 | "id": "highway_minor", 328 | "type": "line", 329 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 330 | "source": "openmaptiles", 331 | "source-layer": "transportation", 332 | "minzoom": 8, 333 | "filter": [ 334 | "all", 335 | ["==", "$type", "LineString"], 336 | ["in", "class", "minor", "service", "track"] 337 | ], 338 | "layout": { 339 | "line-cap": "round", 340 | "line-join": "round", 341 | "visibility": "visible" 342 | }, 343 | "paint": { 344 | "line-color": "hsl(0, 0%, 88%)", 345 | "line-opacity": 0.9, 346 | "line-width": {"base": 1.55, "stops": [[13, 1.8], [20, 20]]} 347 | } 348 | }, 349 | { 350 | "id": "highway_major_casing", 351 | "type": "line", 352 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 353 | "source": "openmaptiles", 354 | "source-layer": "transportation", 355 | "minzoom": 11, 356 | "filter": [ 357 | "all", 358 | ["==", "$type", "LineString"], 359 | ["in", "class", "primary", "secondary", "tertiary", "trunk"] 360 | ], 361 | "layout": { 362 | "line-cap": "butt", 363 | "line-join": "miter", 364 | "visibility": "visible" 365 | }, 366 | "paint": { 367 | "line-color": "rgb(213, 213, 213)", 368 | "line-dasharray": [12, 0], 369 | "line-width": {"base": 1.3, "stops": [[10, 3], [20, 23]]} 370 | } 371 | }, 372 | { 373 | "id": "highway_major_inner", 374 | "type": "line", 375 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 376 | "source": "openmaptiles", 377 | "source-layer": "transportation", 378 | "minzoom": 11, 379 | "filter": [ 380 | "all", 381 | ["==", "$type", "LineString"], 382 | ["in", "class", "primary", "secondary", "tertiary", "trunk"] 383 | ], 384 | "layout": { 385 | "line-cap": "round", 386 | "line-join": "round", 387 | "visibility": "visible" 388 | }, 389 | "paint": { 390 | "line-color": "#fff", 391 | "line-width": {"base": 1.3, "stops": [[10, 2], [20, 20]]} 392 | } 393 | }, 394 | { 395 | "id": "highway_major_subtle", 396 | "type": "line", 397 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 398 | "source": "openmaptiles", 399 | "source-layer": "transportation", 400 | "maxzoom": 11, 401 | "filter": [ 402 | "all", 403 | ["==", "$type", "LineString"], 404 | ["in", "class", "primary", "secondary", "tertiary", "trunk"] 405 | ], 406 | "layout": { 407 | "line-cap": "round", 408 | "line-join": "round", 409 | "visibility": "visible" 410 | }, 411 | "paint": {"line-color": "hsla(0, 0%, 85%, 0.69)", "line-width": 2} 412 | }, 413 | { 414 | "id": "highway_motorway_casing", 415 | "type": "line", 416 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 417 | "source": "openmaptiles", 418 | "source-layer": "transportation", 419 | "minzoom": 6, 420 | "filter": [ 421 | "all", 422 | ["==", "$type", "LineString"], 423 | [ 424 | "all", 425 | ["!in", "brunnel", "bridge", "tunnel"], 426 | ["==", "class", "motorway"] 427 | ] 428 | ], 429 | "layout": { 430 | "line-cap": "butt", 431 | "line-join": "miter", 432 | "visibility": "visible" 433 | }, 434 | "paint": { 435 | "line-color": "rgb(213, 213, 213)", 436 | "line-dasharray": [2, 0], 437 | "line-opacity": 1, 438 | "line-width": {"base": 1.4, "stops": [[5.8, 0], [6, 3], [20, 40]]} 439 | } 440 | }, 441 | { 442 | "id": "highway_motorway_inner", 443 | "type": "line", 444 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 445 | "source": "openmaptiles", 446 | "source-layer": "transportation", 447 | "minzoom": 6, 448 | "filter": [ 449 | "all", 450 | ["==", "$type", "LineString"], 451 | [ 452 | "all", 453 | ["!in", "brunnel", "bridge", "tunnel"], 454 | ["==", "class", "motorway"] 455 | ] 456 | ], 457 | "layout": { 458 | "line-cap": "round", 459 | "line-join": "round", 460 | "visibility": "visible" 461 | }, 462 | "paint": { 463 | "line-color": { 464 | "base": 1, 465 | "stops": [[5.8, "hsla(0, 0%, 85%, 0.53)"], [6, "#fff"]] 466 | }, 467 | "line-width": {"base": 1.4, "stops": [[4, 2], [6, 1.3], [20, 30]]} 468 | } 469 | }, 470 | { 471 | "id": "highway_motorway_subtle", 472 | "type": "line", 473 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 474 | "source": "openmaptiles", 475 | "source-layer": "transportation", 476 | "maxzoom": 6, 477 | "filter": [ 478 | "all", 479 | ["==", "$type", "LineString"], 480 | ["==", "class", "motorway"] 481 | ], 482 | "layout": { 483 | "line-cap": "round", 484 | "line-join": "round", 485 | "visibility": "visible" 486 | }, 487 | "paint": { 488 | "line-color": "hsla(0, 0%, 85%, 0.53)", 489 | "line-width": {"base": 1.4, "stops": [[4, 2], [6, 1.3]]} 490 | } 491 | }, 492 | { 493 | "id": "railway_transit", 494 | "type": "line", 495 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 496 | "source": "openmaptiles", 497 | "source-layer": "transportation", 498 | "minzoom": 16, 499 | "filter": [ 500 | "all", 501 | ["==", "$type", "LineString"], 502 | ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] 503 | ], 504 | "layout": {"line-join": "round", "visibility": "visible"}, 505 | "paint": {"line-color": "#dddddd", "line-width": 3} 506 | }, 507 | { 508 | "id": "railway_transit_dashline", 509 | "type": "line", 510 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 511 | "source": "openmaptiles", 512 | "source-layer": "transportation", 513 | "minzoom": 16, 514 | "filter": [ 515 | "all", 516 | ["==", "$type", "LineString"], 517 | ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] 518 | ], 519 | "layout": {"line-join": "round", "visibility": "visible"}, 520 | "paint": { 521 | "line-color": "#fafafa", 522 | "line-dasharray": [3, 3], 523 | "line-width": 2 524 | } 525 | }, 526 | { 527 | "id": "railway_service", 528 | "type": "line", 529 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 530 | "source": "openmaptiles", 531 | "source-layer": "transportation", 532 | "minzoom": 16, 533 | "filter": [ 534 | "all", 535 | ["==", "$type", "LineString"], 536 | ["all", ["==", "class", "rail"], ["has", "service"]] 537 | ], 538 | "layout": {"line-join": "round", "visibility": "visible"}, 539 | "paint": {"line-color": "#dddddd", "line-width": 3} 540 | }, 541 | { 542 | "id": "railway_service_dashline", 543 | "type": "line", 544 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 545 | "source": "openmaptiles", 546 | "source-layer": "transportation", 547 | "minzoom": 16, 548 | "filter": [ 549 | "all", 550 | ["==", "$type", "LineString"], 551 | ["==", "class", "rail"], 552 | ["has", "service"] 553 | ], 554 | "layout": {"line-join": "round", "visibility": "visible"}, 555 | "paint": { 556 | "line-color": "#fafafa", 557 | "line-dasharray": [3, 3], 558 | "line-width": 2 559 | } 560 | }, 561 | { 562 | "id": "railway", 563 | "type": "line", 564 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 565 | "source": "openmaptiles", 566 | "source-layer": "transportation", 567 | "minzoom": 13, 568 | "filter": [ 569 | "all", 570 | ["==", "$type", "LineString"], 571 | ["all", ["!has", "service"], ["==", "class", "rail"]] 572 | ], 573 | "layout": {"line-join": "round", "visibility": "visible"}, 574 | "paint": { 575 | "line-color": "#dddddd", 576 | "line-width": {"base": 1.3, "stops": [[16, 3], [20, 7]]} 577 | } 578 | }, 579 | { 580 | "id": "railway_dashline", 581 | "type": "line", 582 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 583 | "source": "openmaptiles", 584 | "source-layer": "transportation", 585 | "minzoom": 13, 586 | "filter": [ 587 | "all", 588 | ["==", "$type", "LineString"], 589 | ["all", ["!has", "service"], ["==", "class", "rail"]] 590 | ], 591 | "layout": {"line-join": "round", "visibility": "visible"}, 592 | "paint": { 593 | "line-color": "#fafafa", 594 | "line-dasharray": [3, 3], 595 | "line-width": {"base": 1.3, "stops": [[16, 2], [20, 6]]} 596 | } 597 | }, 598 | { 599 | "id": "highway_motorway_bridge_casing", 600 | "type": "line", 601 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 602 | "source": "openmaptiles", 603 | "source-layer": "transportation", 604 | "minzoom": 6, 605 | "filter": [ 606 | "all", 607 | ["==", "$type", "LineString"], 608 | ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]] 609 | ], 610 | "layout": { 611 | "line-cap": "butt", 612 | "line-join": "miter", 613 | "visibility": "visible" 614 | }, 615 | "paint": { 616 | "line-color": "rgb(213, 213, 213)", 617 | "line-dasharray": [2, 0], 618 | "line-opacity": 1, 619 | "line-width": {"base": 1.4, "stops": [[5.8, 0], [6, 5], [20, 45]]} 620 | } 621 | }, 622 | { 623 | "id": "highway_motorway_bridge_inner", 624 | "type": "line", 625 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 626 | "source": "openmaptiles", 627 | "source-layer": "transportation", 628 | "minzoom": 6, 629 | "filter": [ 630 | "all", 631 | ["==", "$type", "LineString"], 632 | ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]] 633 | ], 634 | "layout": { 635 | "line-cap": "round", 636 | "line-join": "round", 637 | "visibility": "visible" 638 | }, 639 | "paint": { 640 | "line-color": { 641 | "base": 1, 642 | "stops": [[5.8, "hsla(0, 0%, 85%, 0.53)"], [6, "#fff"]] 643 | }, 644 | "line-width": {"base": 1.4, "stops": [[4, 2], [6, 1.3], [20, 30]]} 645 | } 646 | }, 647 | { 648 | "id": "highway_name_other", 649 | "type": "symbol", 650 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 651 | "source": "openmaptiles", 652 | "source-layer": "transportation_name", 653 | "filter": [ 654 | "all", 655 | ["!=", "class", "motorway"], 656 | ["==", "$type", "LineString"] 657 | ], 658 | "layout": { 659 | "symbol-placement": "line", 660 | "symbol-spacing": 350, 661 | "text-field": "{name:latin} {name:nonlatin}", 662 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 663 | "text-max-angle": 30, 664 | "text-pitch-alignment": "viewport", 665 | "text-rotation-alignment": "map", 666 | "text-size": 10, 667 | "text-transform": "uppercase", 668 | "visibility": "visible" 669 | }, 670 | "paint": { 671 | "text-color": "#bbb", 672 | "text-halo-blur": 1, 673 | "text-halo-color": "#fff", 674 | "text-halo-width": 2, 675 | "text-translate": [0, 0] 676 | } 677 | }, 678 | { 679 | "id": "highway_name_motorway", 680 | "type": "symbol", 681 | "metadata": {"mapbox:group": "b6371a3f2f5a9932464fa3867530a2e5"}, 682 | "source": "openmaptiles", 683 | "source-layer": "transportation_name", 684 | "filter": [ 685 | "all", 686 | ["==", "$type", "LineString"], 687 | ["==", "class", "motorway"] 688 | ], 689 | "layout": { 690 | "symbol-placement": "line", 691 | "symbol-spacing": 350, 692 | "text-field": "{ref}", 693 | "text-font": ["Metropolis Light", "Noto Sans Regular"], 694 | "text-pitch-alignment": "viewport", 695 | "text-rotation-alignment": "viewport", 696 | "text-size": 10, 697 | "visibility": "visible" 698 | }, 699 | "paint": { 700 | "text-color": "rgb(117, 129, 145)", 701 | "text-halo-blur": 1, 702 | "text-halo-color": "hsl(0, 0%, 100%)", 703 | "text-halo-width": 1, 704 | "text-translate": [0, 2] 705 | } 706 | }, 707 | { 708 | "id": "boundary_state", 709 | "type": "line", 710 | "metadata": {"mapbox:group": "a14c9607bc7954ba1df7205bf660433f"}, 711 | "source": "openmaptiles", 712 | "source-layer": "boundary", 713 | "filter": ["==", "admin_level", 4], 714 | "layout": { 715 | "line-cap": "round", 716 | "line-join": "round", 717 | "visibility": "visible" 718 | }, 719 | "paint": { 720 | "line-blur": 0.4, 721 | "line-color": "rgb(230, 204, 207)", 722 | "line-dasharray": [2, 2], 723 | "line-opacity": 1, 724 | "line-width": {"base": 1.3, "stops": [[3, 1], [22, 15]]} 725 | } 726 | }, 727 | { 728 | "id": "boundary_country_z0-4", 729 | "type": "line", 730 | "metadata": {"mapbox:group": "a14c9607bc7954ba1df7205bf660433f"}, 731 | "source": "openmaptiles", 732 | "source-layer": "boundary", 733 | "maxzoom": 5, 734 | "filter": ["all", ["==", "admin_level", 2], ["!has", "claimed_by"]], 735 | "layout": {"line-cap": "round", "line-join": "round"}, 736 | "paint": { 737 | "line-blur": {"base": 1, "stops": [[0, 0.4], [22, 4]]}, 738 | "line-color": "rgb(230, 204, 207)", 739 | "line-opacity": 1, 740 | "line-width": {"base": 1.1, "stops": [[3, 1], [22, 20]]} 741 | } 742 | }, 743 | { 744 | "id": "boundary_country_z5-", 745 | "type": "line", 746 | "metadata": {"mapbox:group": "a14c9607bc7954ba1df7205bf660433f"}, 747 | "source": "openmaptiles", 748 | "source-layer": "boundary", 749 | "minzoom": 5, 750 | "filter": ["==", "admin_level", 2], 751 | "layout": {"line-cap": "round", "line-join": "round"}, 752 | "paint": { 753 | "line-blur": {"base": 1, "stops": [[0, 0.4], [22, 4]]}, 754 | "line-color": "rgb(230, 204, 207)", 755 | "line-opacity": 1, 756 | "line-width": {"base": 1.1, "stops": [[3, 1], [22, 20]]} 757 | } 758 | }, 759 | { 760 | "id": "place_other", 761 | "type": "symbol", 762 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 763 | "source": "openmaptiles", 764 | "source-layer": "place", 765 | "maxzoom": 14, 766 | "filter": [ 767 | "all", 768 | [ 769 | "in", 770 | "class", 771 | "continent", 772 | "hamlet", 773 | "neighbourhood", 774 | "isolated_dwelling" 775 | ], 776 | ["==", "$type", "Point"] 777 | ], 778 | "layout": { 779 | "text-anchor": "center", 780 | "text-field": "{name:latin}\n{name:nonlatin}", 781 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 782 | "text-justify": "center", 783 | "text-offset": [0.5, 0], 784 | "text-size": 10, 785 | "text-transform": "uppercase", 786 | "visibility": "visible" 787 | }, 788 | "paint": { 789 | "text-color": "rgb(117, 129, 145)", 790 | "text-halo-blur": 1, 791 | "text-halo-color": "rgb(242,243,240)", 792 | "text-halo-width": 1 793 | } 794 | }, 795 | { 796 | "id": "place_suburb", 797 | "type": "symbol", 798 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 799 | "source": "openmaptiles", 800 | "source-layer": "place", 801 | "maxzoom": 15, 802 | "filter": ["all", ["==", "$type", "Point"], ["==", "class", "suburb"]], 803 | "layout": { 804 | "text-anchor": "center", 805 | "text-field": "{name:latin}\n{name:nonlatin}", 806 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 807 | "text-justify": "center", 808 | "text-offset": [0.5, 0], 809 | "text-size": 10, 810 | "text-transform": "uppercase", 811 | "visibility": "visible" 812 | }, 813 | "paint": { 814 | "text-color": "rgb(117, 129, 145)", 815 | "text-halo-blur": 1, 816 | "text-halo-color": "rgb(242,243,240)", 817 | "text-halo-width": 1 818 | } 819 | }, 820 | { 821 | "id": "place_village", 822 | "type": "symbol", 823 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 824 | "source": "openmaptiles", 825 | "source-layer": "place", 826 | "maxzoom": 14, 827 | "filter": ["all", ["==", "$type", "Point"], ["==", "class", "village"]], 828 | "layout": { 829 | "icon-size": 0.4, 830 | "text-anchor": "left", 831 | "text-field": "{name:latin}\n{name:nonlatin}", 832 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 833 | "text-justify": "left", 834 | "text-offset": [0.5, 0.2], 835 | "text-size": 10, 836 | "text-transform": "uppercase", 837 | "visibility": "visible" 838 | }, 839 | "paint": { 840 | "icon-opacity": 0.7, 841 | "text-color": "rgb(117, 129, 145)", 842 | "text-halo-blur": 1, 843 | "text-halo-color": "rgb(242,243,240)", 844 | "text-halo-width": 1 845 | } 846 | }, 847 | { 848 | "id": "place_town", 849 | "type": "symbol", 850 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 851 | "source": "openmaptiles", 852 | "source-layer": "place", 853 | "maxzoom": 15, 854 | "filter": ["all", ["==", "$type", "Point"], ["==", "class", "town"]], 855 | "layout": { 856 | "icon-image": {"base": 1, "stops": [[0, "circle-11"], [8, ""]]}, 857 | "icon-size": 0.4, 858 | "text-anchor": {"base": 1, "stops": [[0, "left"], [8, "center"]]}, 859 | "text-field": "{name:latin}\n{name:nonlatin}", 860 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 861 | "text-justify": "left", 862 | "text-offset": [0.5, 0.2], 863 | "text-size": 10, 864 | "text-transform": "uppercase", 865 | "visibility": "visible" 866 | }, 867 | "paint": { 868 | "icon-opacity": 0.7, 869 | "text-color": "rgb(117, 129, 145)", 870 | "text-halo-blur": 1, 871 | "text-halo-color": "rgb(242,243,240)", 872 | "text-halo-width": 1 873 | } 874 | }, 875 | { 876 | "id": "place_city", 877 | "type": "symbol", 878 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 879 | "source": "openmaptiles", 880 | "source-layer": "place", 881 | "maxzoom": 14, 882 | "filter": [ 883 | "all", 884 | ["==", "$type", "Point"], 885 | ["all", ["!=", "capital", 2], ["==", "class", "city"], [">", "rank", 3]] 886 | ], 887 | "layout": { 888 | "icon-image": {"base": 1, "stops": [[0, "circle-11"], [8, ""]]}, 889 | "icon-size": 0.4, 890 | "text-anchor": {"base": 1, "stops": [[0, "left"], [8, "center"]]}, 891 | "text-field": "{name:latin}\n{name:nonlatin}", 892 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 893 | "text-justify": "left", 894 | "text-offset": [0.5, 0.2], 895 | "text-size": 10, 896 | "text-transform": "uppercase", 897 | "visibility": "visible" 898 | }, 899 | "paint": { 900 | "icon-opacity": 0.7, 901 | "text-color": "rgb(117, 129, 145)", 902 | "text-halo-blur": 1, 903 | "text-halo-color": "rgb(242,243,240)", 904 | "text-halo-width": 1 905 | } 906 | }, 907 | { 908 | "id": "place_capital", 909 | "type": "symbol", 910 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 911 | "source": "openmaptiles", 912 | "source-layer": "place", 913 | "maxzoom": 12, 914 | "filter": [ 915 | "all", 916 | ["==", "$type", "Point"], 917 | ["all", ["==", "capital", 2], ["==", "class", "city"]] 918 | ], 919 | "layout": { 920 | "icon-image": {"base": 1, "stops": [[0, "star-11"], [8, ""]]}, 921 | "icon-size": 1, 922 | "text-anchor": {"base": 1, "stops": [[0, "left"], [8, "center"]]}, 923 | "text-field": "{name:latin}\n{name:nonlatin}", 924 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 925 | "text-justify": "left", 926 | "text-offset": [0.5, 0.2], 927 | "text-size": 14, 928 | "text-transform": "uppercase", 929 | "visibility": "visible" 930 | }, 931 | "paint": { 932 | "icon-opacity": 0.7, 933 | "text-color": "rgb(117, 129, 145)", 934 | "text-halo-blur": 1, 935 | "text-halo-color": "rgb(242,243,240)", 936 | "text-halo-width": 1 937 | } 938 | }, 939 | { 940 | "id": "place_city_large", 941 | "type": "symbol", 942 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 943 | "source": "openmaptiles", 944 | "source-layer": "place", 945 | "maxzoom": 12, 946 | "filter": [ 947 | "all", 948 | ["==", "$type", "Point"], 949 | [ 950 | "all", 951 | ["!=", "capital", 2], 952 | ["<=", "rank", 3], 953 | ["==", "class", "city"] 954 | ] 955 | ], 956 | "layout": { 957 | "icon-image": {"base": 1, "stops": [[0, "circle-11"], [8, ""]]}, 958 | "icon-size": 0.4, 959 | "text-anchor": {"base": 1, "stops": [[0, "left"], [8, "center"]]}, 960 | "text-field": "{name:latin}\n{name:nonlatin}", 961 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 962 | "text-justify": "left", 963 | "text-offset": [0.5, 0.2], 964 | "text-size": 14, 965 | "text-transform": "uppercase", 966 | "visibility": "visible" 967 | }, 968 | "paint": { 969 | "icon-opacity": 0.7, 970 | "text-color": "rgb(117, 129, 145)", 971 | "text-halo-blur": 1, 972 | "text-halo-color": "rgb(242,243,240)", 973 | "text-halo-width": 1 974 | } 975 | }, 976 | { 977 | "id": "place_state", 978 | "type": "symbol", 979 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 980 | "source": "openmaptiles", 981 | "source-layer": "place", 982 | "maxzoom": 12, 983 | "filter": ["all", ["==", "$type", "Point"], ["==", "class", "state"]], 984 | "layout": { 985 | "text-field": "{name:latin}\n{name:nonlatin}", 986 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 987 | "text-size": 10, 988 | "text-transform": "uppercase", 989 | "visibility": "visible" 990 | }, 991 | "paint": { 992 | "text-color": "rgb(113, 129, 144)", 993 | "text-halo-blur": 1, 994 | "text-halo-color": "rgb(242,243,240)", 995 | "text-halo-width": 1 996 | } 997 | }, 998 | { 999 | "id": "place_country_other", 1000 | "type": "symbol", 1001 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 1002 | "source": "openmaptiles", 1003 | "source-layer": "place", 1004 | "maxzoom": 8, 1005 | "filter": [ 1006 | "all", 1007 | ["==", "$type", "Point"], 1008 | ["==", "class", "country"], 1009 | ["!has", "iso_a2"] 1010 | ], 1011 | "layout": { 1012 | "text-field": "{name:latin}", 1013 | "text-font": ["Metropolis Light Italic", "Noto Sans Italic"], 1014 | "text-size": {"base": 1, "stops": [[0, 9], [6, 11]]}, 1015 | "text-transform": "uppercase", 1016 | "visibility": "visible" 1017 | }, 1018 | "paint": { 1019 | "text-color": { 1020 | "base": 1, 1021 | "stops": [[3, "rgb(157,169,177)"], [4, "rgb(153, 153, 153)"]] 1022 | }, 1023 | "text-halo-color": "rgba(236,236,234,0.7)", 1024 | "text-halo-width": 1.4 1025 | } 1026 | }, 1027 | { 1028 | "id": "place_country_minor", 1029 | "type": "symbol", 1030 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 1031 | "source": "openmaptiles", 1032 | "source-layer": "place", 1033 | "maxzoom": 8, 1034 | "filter": [ 1035 | "all", 1036 | ["==", "$type", "Point"], 1037 | ["==", "class", "country"], 1038 | [">=", "rank", 2], 1039 | ["has", "iso_a2"] 1040 | ], 1041 | "layout": { 1042 | "text-field": "{name:latin}", 1043 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 1044 | "text-size": {"base": 1, "stops": [[0, 10], [6, 12]]}, 1045 | "text-transform": "uppercase", 1046 | "visibility": "visible" 1047 | }, 1048 | "paint": { 1049 | "text-color": { 1050 | "base": 1, 1051 | "stops": [[3, "rgb(157,169,177)"], [4, "rgb(153, 153, 153)"]] 1052 | }, 1053 | "text-halo-color": "rgba(236,236,234,0.7)", 1054 | "text-halo-width": 1.4 1055 | } 1056 | }, 1057 | { 1058 | "id": "place_country_major", 1059 | "type": "symbol", 1060 | "metadata": {"mapbox:group": "101da9f13b64a08fa4b6ac1168e89e5f"}, 1061 | "source": "openmaptiles", 1062 | "source-layer": "place", 1063 | "maxzoom": 6, 1064 | "filter": [ 1065 | "all", 1066 | ["==", "$type", "Point"], 1067 | ["<=", "rank", 1], 1068 | ["==", "class", "country"], 1069 | ["has", "iso_a2"] 1070 | ], 1071 | "layout": { 1072 | "text-anchor": "center", 1073 | "text-field": "{name:latin}", 1074 | "text-font": ["Metropolis Regular", "Noto Sans Regular"], 1075 | "text-size": {"base": 1.4, "stops": [[0, 10], [3, 12], [4, 14]]}, 1076 | "text-transform": "uppercase", 1077 | "visibility": "visible" 1078 | }, 1079 | "paint": { 1080 | "text-color": { 1081 | "base": 1, 1082 | "stops": [[3, "rgb(157,169,177)"], [4, "rgb(153, 153, 153)"]] 1083 | }, 1084 | "text-halo-color": "rgba(236,236,234,0.7)", 1085 | "text-halo-width": 1.4 1086 | } 1087 | } 1088 | ], 1089 | "id": "positron" 1090 | } 1091 | --------------------------------------------------------------------------------