Repository: geopandas/xyzservices

Issue:
Provider sources model
This issue describes the model for managing sources.

Currently, we envision at least two sources of providers:

- Automatically scraped from Leaflet providers: these is parsed with `parse_leaflet_providers.py` and stored under `provider_sources/leaflet-providers-parsed.json`
- Community contributed additional providers: these are sources provided independently from the official Leaflet list by the community (following guidelines detailed in the docs). They get contributed to `provider_sources/community_providers.json`, which is a file that should be stored in prettified JSON format. Community contributions come as PRs against that file.

In terms of what gets shipped with the package that can be installed, one idea is to write _all_ the sources into a single, compressed JSON file that ships with the package and loads on import. That way, neither the scraped Leaflet, nor the community, pretty JSON files would be shipped, just the merged and compressed one.

To implement this, we will need:

- [ ] Tooling to take all JSON files in `provider_sources` and merge/compress into a single `provider_sources.json`
- [ ] Load providers on import _only_ from `provider_sources.json`

Discussion:

Patch:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index dc3fb72..c73a92b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,3 +1,31 @@
 # Contributing new sources
 
 This document outlines the process to contribute a new provider source to `XYZservices`.
+
+## Contributing additional sources
+
+You can add additional XYZ sources to `provider_sources/xyzservices-providers.json`.
+If you want to add a single provider, use the first template, `single_provider_name`.
+If you're going to add a group of providers, use the second template, `provider_bunch_name`.
+`url`, `max_zoom`, `attribution` and `name` are required fields. Additional fields
+should reflect the needs of the provider and are optional.
+
+Once updated, you should compress the provider sources by executing `make compress` from the
+repository root.
+
+```bash
+cd xyzservices
+make compress
+```
+
+## Updating sources from leaflet
+
+`leaflet-providers-parsed.json` is an automatically generated file. You can create a fresh version
+using `make update-leaflet` from the repository root:
+
+```bash
+cd xyzservices
+make update-leaflet
+```
+
+Note that you will need functional installation of `selenium` with Firefox webdriver, `git` and `html2text` packages.
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..2cf1e5e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,11 @@
+.PHONY: update-leaflet compress
+
+# update leaflet-providers_parsed.json from source
+update-leaflet:
+	cd provider_sources && \
+	python _parse_leaflet_providers.py
+
+# compress json sources to data/providers.json
+compress:
+	cd provider_sources && \
+	python _compress_providers.py
\ No newline at end of file
diff --git a/provider_sources/_compress_providers.py b/provider_sources/_compress_providers.py
new file mode 100644
index 0000000..6ae0343
--- /dev/null
+++ b/provider_sources/_compress_providers.py
@@ -0,0 +1,28 @@
+"""
+This script takes both provider sources stored in `provider_sources`, removes
+items which do not represent actual providers (metadata from leaflet-providers-parsed
+and templates from xyzservices-providers), combines them together and saves as a compressed
+JSON to data/providers.json.
+
+The compressed JSON is shipped with the package.
+"""
+
+import json
+
+with open("./leaflet-providers-parsed.json", "r") as f:
+    leaflet = json.load(f)
+    # remove meta data
+    leaflet.pop("_meta", None)
+
+with open("./xyzservices-providers.json", "r") as f:
+    xyz = json.load(f)
+    # remove templates
+    xyz.pop("single_provider_name")
+    xyz.pop("provider_bunch_name")
+
+
+# combine both
+leaflet.update(xyz)
+
+with open("../xyzservices/data/providers.json", "w") as f:
+    json.dump(leaflet, f)
diff --git a/xyzservices/parse_leaflet_providers.py b/provider_sources/_parse_leaflet_providers.py
similarity index 58%
rename from xyzservices/parse_leaflet_providers.py
rename to provider_sources/_parse_leaflet_providers.py
index de3518c..3d64b79 100644
--- a/xyzservices/parse_leaflet_providers.py
+++ b/provider_sources/_parse_leaflet_providers.py
@@ -56,7 +56,7 @@ def get_json_data():
 
 
 def process_data(data):
-    # extract attributions from rawa data that later need to be substituted
+    # extract attributions from raw data that later need to be substituted
     global ATTRIBUTIONS
     ATTRIBUTIONS = {
         "{attribution.OpenStreetMap}": data["OpenStreetMap"]["options"]["attribution"],
@@ -139,111 +139,20 @@ def pythonize_data(data):
     return dict(new_data)
 
 
-# -----------------------------------------------------------------------------
-# Generating a python file from the json
-
-template = '''\
-"""
-Tile providers.
-This file is autogenerated! It is a python representation of the leaflet
-providers defined by the leaflet-providers.js extension to Leaflet
-(https://github.com/leaflet-extras/leaflet-providers).
-Credit to the leaflet-providers.js  project (BSD 2-Clause "Simplified" License)
-and the Leaflet Providers contributors.
-Generated by parse_leaflet_providers.py at {timestamp} from leaflet-providers
-at {description}.
-"""
-class Bunch(dict):
-    """A dict with attribute-access"""
-    def __getattr__(self, key):
-        try:
-            return self.__getitem__(key)
-        except KeyError:
-            raise AttributeError(key)
-    def __dir__(self):
-        return self.keys()
-class TileProvider(Bunch):
-    """
-    A dict with attribute-access and that
-    can be called to update keys
-    """
-    def __call__(self, **kwargs):
-        new = TileProvider(self)  # takes a copy preserving the class
-        new.update(kwargs)
-        return new
-providers = Bunch(
-{providers}
-)
-'''
-
-
-def format_provider(data, name):
-    formatted_keys = ",\n    ".join(
-        [
-            "{key} = {value!r}".format(key=key, value=value)
-            for key, value in data.items()
-        ]
-    )
-    provider_template = """\
-{name} = TileProvider(
-    {formatted_keys}
-)"""
-    return provider_template.format(name=name, formatted_keys=formatted_keys)
-
-
-def format_bunch(data, name):
-    bunch_template = """\
-{name} = Bunch(
-{variants}
-)"""
-    return bunch_template.format(name=name, variants=textwrap.indent(data, "    "))
-
-
-def generate_file(data, description):
-    providers = []
-
-    for provider_name in data.keys():
-        provider = data[provider_name]
-        if "url" in provider.keys():
-            res = format_provider(provider, provider_name)
-        else:
-            variants = []
-
-            for variant in provider:
-                formatted = format_provider(provider[variant], variant)
-                variants.append(formatted)
-
-            variants = ",\n".join(variants)
-            res = format_bunch(variants, provider_name)
-
-        providers.append(res)
-
-    providers = ",\n".join(providers)
-    content = template.format(
-        providers=textwrap.indent(providers, "    "),
-        description=description,
-        timestamp=datetime.date.today(),
-    )
-    return content
-
-
 if __name__ == "__main__":
     data, description = get_json_data()
-    with open("provider_sources/leaflet-providers-raw.json", "w") as f:
+    with open("./leaflet-providers-raw.json", "w") as f:
         json.dump(data, f)
 
     result = process_data(data)
-    with open("provider_sources/leaflet-providers-parsed.json", "w") as f:
-        # wanted to add this as header to the file, but JSON does not support
-        # comments
-        print(
-            "JSON representation of the leaflet providers defined by the "
-            "leaflet-providers.js extension to Leaflet "
-            "(https://github.com/leaflet-extras/leaflet-providers)"
-        )
-        print("This file is automatically generated from {}".format(description))
-        json.dump(result, f)
-
-    # content = generate_file(result, description)
-    # with open("_providers.py", "w") as f:
-    #     f.write(content)
+    with open("./leaflet-providers-parsed.json", "w") as f:
+        result["_meta"] = {
+            "description": (
+                "JSON representation of the leaflet providers defined by the "
+                "leaflet-providers.js extension to Leaflet "
+                "(https://github.com/leaflet-extras/leaflet-providers)"
+            ),
+            "date_of_creation": datetime.datetime.today().strftime("%Y-%m-%d"),
+            "commit": description,
+        }
+        json.dump(result, f, indent=4)
diff --git a/provider_sources/leaflet-providers-parsed.json b/provider_sources/leaflet-providers-parsed.json
new file mode 100644
index 0000000..3df2e4d
--- /dev/null
+++ b/provider_sources/leaflet-providers-parsed.json
@@ -0,0 +1,2677 @@
+{
+    "OpenStreetMap": {
+        "Mapnik": {
+            "url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
+            "max_zoom": 19,
+            "attribution": "(C) OpenStreetMap contributors",
+            "name": "OpenStreetMap.Mapnik"
+        },
+        "DE": {
+            "url": "https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "(C) OpenStreetMap contributors",
+            "name": "OpenStreetMap.DE"
+        },
+        "CH": {
+            "url": "https://tile.osm.ch/switzerland/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "(C) OpenStreetMap contributors",
+            "bounds": [
+                [
+                    45,
+                    5
+                ],
+                [
+                    48,
+                    11
+                ]
+            ],
+            "name": "OpenStreetMap.CH"
+        },
+        "France": {
+            "url": "https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png",
+            "max_zoom": 20,
+            "attribution": "(C) OpenStreetMap France | (C) OpenStreetMap contributors",
+            "name": "OpenStreetMap.France"
+        },
+        "HOT": {
+            "url": "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png",
+            "max_zoom": 19,
+            "attribution": "(C) OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France",
+            "name": "OpenStreetMap.HOT"
+        },
+        "BZH": {
+            "url": "https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png",
+            "max_zoom": 19,
+            "attribution": "(C) OpenStreetMap contributors, Tiles courtesy of Breton OpenStreetMap Team",
+            "bounds": [
+                [
+                    46.2,
+                    -5.5
+                ],
+                [
+                    50,
+                    0.7
+                ]
+            ],
+            "name": "OpenStreetMap.BZH"
+        }
+    },
+    "OpenSeaMap": {
+        "url": "https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png",
+        "attribution": "Map data: (C) OpenSeaMap contributors",
+        "name": "OpenSeaMap"
+    },
+    "OpenPtMap": {
+        "url": "http://openptmap.org/tiles/{z}/{x}/{y}.png",
+        "max_zoom": 17,
+        "attribution": "Map data: (C) OpenPtMap contributors",
+        "name": "OpenPtMap"
+    },
+    "OpenTopoMap": {
+        "url": "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png",
+        "max_zoom": 17,
+        "attribution": "Map data: (C) OpenStreetMap contributors, SRTM | Map style: (C) OpenTopoMap (CC-BY-SA)",
+        "name": "OpenTopoMap"
+    },
+    "OpenRailwayMap": {
+        "url": "https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png",
+        "max_zoom": 19,
+        "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) OpenRailwayMap (CC-BY-SA)",
+        "name": "OpenRailwayMap"
+    },
+    "OpenFireMap": {
+        "url": "http://openfiremap.org/hytiles/{z}/{x}/{y}.png",
+        "max_zoom": 19,
+        "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) OpenFireMap (CC-BY-SA)",
+        "name": "OpenFireMap"
+    },
+    "SafeCast": {
+        "url": "https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png",
+        "max_zoom": 16,
+        "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) SafeCast (CC-BY-SA)",
+        "name": "SafeCast"
+    },
+    "Stadia": {
+        "AlidadeSmooth": {
+            "url": "https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png",
+            "max_zoom": 20,
+            "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors",
+            "name": "Stadia.AlidadeSmooth"
+        },
+        "AlidadeSmoothDark": {
+            "url": "https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png",
+            "max_zoom": 20,
+            "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors",
+            "name": "Stadia.AlidadeSmoothDark"
+        },
+        "OSMBright": {
+            "url": "https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png",
+            "max_zoom": 20,
+            "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors",
+            "name": "Stadia.OSMBright"
+        },
+        "Outdoors": {
+            "url": "https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png",
+            "max_zoom": 20,
+            "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors",
+            "name": "Stadia.Outdoors"
+        }
+    },
+    "Thunderforest": {
+        "OpenCycleMap": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "cycle",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.OpenCycleMap"
+        },
+        "Transport": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "transport",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.Transport"
+        },
+        "TransportDark": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "transport-dark",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.TransportDark"
+        },
+        "SpinalMap": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "spinal-map",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.SpinalMap"
+        },
+        "Landscape": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "landscape",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.Landscape"
+        },
+        "Outdoors": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "outdoors",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.Outdoors"
+        },
+        "Pioneer": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "pioneer",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.Pioneer"
+        },
+        "MobileAtlas": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "mobile-atlas",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.MobileAtlas"
+        },
+        "Neighbourhood": {
+            "url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}",
+            "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors",
+            "variant": "neighbourhood",
+            "apikey": "<insert your api key here>",
+            "max_zoom": 22,
+            "name": "Thunderforest.Neighbourhood"
+        }
+    },
+    "CyclOSM": {
+        "url": "https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png",
+        "max_zoom": 20,
+        "attribution": "CyclOSM | Map data: (C) OpenStreetMap contributors",
+        "name": "CyclOSM"
+    },
+    "Hydda": {
+        "Full": {
+            "url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 20,
+            "variant": "full",
+            "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors",
+            "name": "Hydda.Full"
+        },
+        "Base": {
+            "url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 20,
+            "variant": "base",
+            "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors",
+            "name": "Hydda.Base"
+        },
+        "RoadsAndLabels": {
+            "url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 20,
+            "variant": "roads_and_labels",
+            "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors",
+            "name": "Hydda.RoadsAndLabels"
+        }
+    },
+    "Jawg": {
+        "Streets": {
+            "url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}",
+            "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors",
+            "min_zoom": 0,
+            "max_zoom": 22,
+            "subdomains": "abcd",
+            "variant": "jawg-streets",
+            "accessToken": "<insert your access token here>",
+            "name": "Jawg.Streets"
+        },
+        "Terrain": {
+            "url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}",
+            "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors",
+            "min_zoom": 0,
+            "max_zoom": 22,
+            "subdomains": "abcd",
+            "variant": "jawg-terrain",
+            "accessToken": "<insert your access token here>",
+            "name": "Jawg.Terrain"
+        },
+        "Sunny": {
+            "url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}",
+            "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors",
+            "min_zoom": 0,
+            "max_zoom": 22,
+            "subdomains": "abcd",
+            "variant": "jawg-sunny",
+            "accessToken": "<insert your access token here>",
+            "name": "Jawg.Sunny"
+        },
+        "Dark": {
+            "url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}",
+            "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors",
+            "min_zoom": 0,
+            "max_zoom": 22,
+            "subdomains": "abcd",
+            "variant": "jawg-dark",
+            "accessToken": "<insert your access token here>",
+            "name": "Jawg.Dark"
+        },
+        "Light": {
+            "url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}",
+            "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors",
+            "min_zoom": 0,
+            "max_zoom": 22,
+            "subdomains": "abcd",
+            "variant": "jawg-light",
+            "accessToken": "<insert your access token here>",
+            "name": "Jawg.Light"
+        },
+        "Matrix": {
+            "url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}",
+            "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors",
+            "min_zoom": 0,
+            "max_zoom": 22,
+            "subdomains": "abcd",
+            "variant": "jawg-matrix",
+            "accessToken": "<insert your access token here>",
+            "name": "Jawg.Matrix"
+        }
+    },
+    "MapBox": {
+        "url": "https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}",
+        "attribution": "(C) Mapbox (C) OpenStreetMap contributors Improve this map",
+        "tileSize": 512,
+        "max_zoom": 18,
+        "zoomOffset": -1,
+        "id": "mapbox/streets-v11",
+        "accessToken": "<insert your access token here>",
+        "name": "MapBox"
+    },
+    "MapTiler": {
+        "Streets": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "streets",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Streets"
+        },
+        "Basic": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "basic",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Basic"
+        },
+        "Bright": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "bright",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Bright"
+        },
+        "Pastel": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "pastel",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Pastel"
+        },
+        "Positron": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "positron",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Positron"
+        },
+        "Hybrid": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "hybrid",
+            "ext": "jpg",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Hybrid"
+        },
+        "Toner": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "toner",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Toner"
+        },
+        "Topo": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "topo",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Topo"
+        },
+        "Voyager": {
+            "url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}",
+            "attribution": "(C) MapTiler (C) OpenStreetMap contributors",
+            "variant": "voyager",
+            "ext": "png",
+            "key": "<insert your MapTiler Cloud API key here>",
+            "tileSize": 512,
+            "zoomOffset": -1,
+            "min_zoom": 0,
+            "max_zoom": 21,
+            "name": "MapTiler.Voyager"
+        }
+    },
+    "Stamen": {
+        "Toner": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toner",
+            "ext": "png",
+            "name": "Stamen.Toner"
+        },
+        "TonerBackground": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toner-background",
+            "ext": "png",
+            "name": "Stamen.TonerBackground"
+        },
+        "TonerHybrid": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toner-hybrid",
+            "ext": "png",
+            "name": "Stamen.TonerHybrid"
+        },
+        "TonerLines": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toner-lines",
+            "ext": "png",
+            "name": "Stamen.TonerLines"
+        },
+        "TonerLabels": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toner-labels",
+            "ext": "png",
+            "name": "Stamen.TonerLabels"
+        },
+        "TonerLite": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toner-lite",
+            "ext": "png",
+            "name": "Stamen.TonerLite"
+        },
+        "Watercolor": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 1,
+            "max_zoom": 16,
+            "variant": "watercolor",
+            "ext": "jpg",
+            "name": "Stamen.Watercolor"
+        },
+        "Terrain": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 18,
+            "variant": "terrain",
+            "ext": "png",
+            "name": "Stamen.Terrain"
+        },
+        "TerrainBackground": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 18,
+            "variant": "terrain-background",
+            "ext": "png",
+            "name": "Stamen.TerrainBackground"
+        },
+        "TerrainLabels": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 18,
+            "variant": "terrain-labels",
+            "ext": "png",
+            "name": "Stamen.TerrainLabels"
+        },
+        "TopOSMRelief": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toposm-color-relief",
+            "ext": "jpg",
+            "bounds": [
+                [
+                    22,
+                    -132
+                ],
+                [
+                    51,
+                    -56
+                ]
+            ],
+            "name": "Stamen.TopOSMRelief"
+        },
+        "TopOSMFeatures": {
+            "url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}",
+            "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors",
+            "subdomains": "abcd",
+            "min_zoom": 0,
+            "max_zoom": 20,
+            "variant": "toposm-features",
+            "ext": "png",
+            "bounds": [
+                [
+                    22,
+                    -132
+                ],
+                [
+                    51,
+                    -56
+                ]
+            ],
+            "opacity": 0.9,
+            "name": "Stamen.TopOSMFeatures"
+        }
+    },
+    "TomTom": {
+        "Basic": {
+            "url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}",
+            "variant": "basic",
+            "max_zoom": 22,
+            "attribution": "(C) 1992 - 2021 TomTom.",
+            "subdomains": "abcd",
+            "style": "main",
+            "ext": "png",
+            "apikey": "<insert your API key here>",
+            "name": "TomTom.Basic"
+        },
+        "Hybrid": {
+            "url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}",
+            "variant": "hybrid",
+            "max_zoom": 22,
+            "attribution": "(C) 1992 - 2021 TomTom.",
+            "subdomains": "abcd",
+            "style": "main",
+            "ext": "png",
+            "apikey": "<insert your API key here>",
+            "name": "TomTom.Hybrid"
+        },
+        "Labels": {
+            "url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}",
+            "variant": "labels",
+            "max_zoom": 22,
+            "attribution": "(C) 1992 - 2021 TomTom.",
+            "subdomains": "abcd",
+            "style": "main",
+            "ext": "png",
+            "apikey": "<insert your API key here>",
+            "name": "TomTom.Labels"
+        }
+    },
+    "Esri": {
+        "WorldStreetMap": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "World_Street_Map",
+            "attribution": "Tiles (C) Esri -- Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012",
+            "name": "Esri.WorldStreetMap"
+        },
+        "DeLorme": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "Specialty/DeLorme_World_Base_Map",
+            "attribution": "Tiles (C) Esri -- Copyright: (C)2012 DeLorme",
+            "min_zoom": 1,
+            "max_zoom": 11,
+            "name": "Esri.DeLorme"
+        },
+        "WorldTopoMap": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "World_Topo_Map",
+            "attribution": "Tiles (C) Esri -- Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community",
+            "name": "Esri.WorldTopoMap"
+        },
+        "WorldImagery": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "World_Imagery",
+            "attribution": "Tiles (C) Esri -- Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community",
+            "name": "Esri.WorldImagery"
+        },
+        "WorldTerrain": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "World_Terrain_Base",
+            "attribution": "Tiles (C) Esri -- Source: USGS, Esri, TANA, DeLorme, and NPS",
+            "max_zoom": 13,
+            "name": "Esri.WorldTerrain"
+        },
+        "WorldShadedRelief": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "World_Shaded_Relief",
+            "attribution": "Tiles (C) Esri -- Source: Esri",
+            "max_zoom": 13,
+            "name": "Esri.WorldShadedRelief"
+        },
+        "WorldPhysical": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "World_Physical_Map",
+            "attribution": "Tiles (C) Esri -- Source: US National Park Service",
+            "max_zoom": 8,
+            "name": "Esri.WorldPhysical"
+        },
+        "OceanBasemap": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "Ocean_Basemap",
+            "attribution": "Tiles (C) Esri -- Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri",
+            "max_zoom": 13,
+            "name": "Esri.OceanBasemap"
+        },
+        "NatGeoWorldMap": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "NatGeo_World_Map",
+            "attribution": "Tiles (C) Esri -- National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC",
+            "max_zoom": 16,
+            "name": "Esri.NatGeoWorldMap"
+        },
+        "WorldGrayCanvas": {
+            "url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}",
+            "variant": "Canvas/World_Light_Gray_Base",
+            "attribution": "Tiles (C) Esri -- Esri, DeLorme, NAVTEQ",
+            "max_zoom": 16,
+            "name": "Esri.WorldGrayCanvas"
+        }
+    },
+    "OpenWeatherMap": {
+        "Clouds": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "clouds",
+            "name": "OpenWeatherMap.Clouds"
+        },
+        "CloudsClassic": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "clouds_cls",
+            "name": "OpenWeatherMap.CloudsClassic"
+        },
+        "Precipitation": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "precipitation",
+            "name": "OpenWeatherMap.Precipitation"
+        },
+        "PrecipitationClassic": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "precipitation_cls",
+            "name": "OpenWeatherMap.PrecipitationClassic"
+        },
+        "Rain": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "rain",
+            "name": "OpenWeatherMap.Rain"
+        },
+        "RainClassic": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "rain_cls",
+            "name": "OpenWeatherMap.RainClassic"
+        },
+        "Pressure": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "pressure",
+            "name": "OpenWeatherMap.Pressure"
+        },
+        "PressureContour": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "pressure_cntr",
+            "name": "OpenWeatherMap.PressureContour"
+        },
+        "Wind": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "wind",
+            "name": "OpenWeatherMap.Wind"
+        },
+        "Temperature": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "temp",
+            "name": "OpenWeatherMap.Temperature"
+        },
+        "Snow": {
+            "url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}",
+            "max_zoom": 19,
+            "attribution": "Map data (C) OpenWeatherMap",
+            "apiKey": "<insert your api key here>",
+            "opacity": 0.5,
+            "variant": "snow",
+            "name": "OpenWeatherMap.Snow"
+        }
+    },
+    "HERE": {
+        "normalDay": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDay"
+        },
+        "normalDayCustom": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day.custom",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDayCustom"
+        },
+        "normalDayGrey": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day.grey",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDayGrey"
+        },
+        "normalDayMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDayMobile"
+        },
+        "normalDayGreyMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day.grey.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDayGreyMobile"
+        },
+        "normalDayTransit": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day.transit",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDayTransit"
+        },
+        "normalDayTransitMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day.transit.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDayTransitMobile"
+        },
+        "normalDayTraffic": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "traffic",
+            "variant": "normal.traffic.day",
+            "max_zoom": 20,
+            "type": "traffictile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalDayTraffic"
+        },
+        "normalNight": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.night",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalNight"
+        },
+        "normalNightMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.night.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalNightMobile"
+        },
+        "normalNightGrey": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.night.grey",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalNightGrey"
+        },
+        "normalNightGreyMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.night.grey.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalNightGreyMobile"
+        },
+        "normalNightTransit": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.night.transit",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalNightTransit"
+        },
+        "normalNightTransitMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.night.transit.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.normalNightTransitMobile"
+        },
+        "reducedDay": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "reduced.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.reducedDay"
+        },
+        "reducedNight": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "reduced.night",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.reducedNight"
+        },
+        "basicMap": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "basetile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.basicMap"
+        },
+        "mapLabels": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "labeltile",
+            "language": "eng",
+            "format": "png",
+            "size": "256",
+            "name": "HERE.mapLabels"
+        },
+        "trafficFlow": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "traffic",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "flowtile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.trafficFlow"
+        },
+        "carnavDayGrey": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "carnav.day.grey",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.carnavDayGrey"
+        },
+        "hybridDay": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "aerial",
+            "variant": "hybrid.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.hybridDay"
+        },
+        "hybridDayMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "aerial",
+            "variant": "hybrid.day.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.hybridDayMobile"
+        },
+        "hybridDayTransit": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "aerial",
+            "variant": "hybrid.day.transit",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.hybridDayTransit"
+        },
+        "hybridDayGrey": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "aerial",
+            "variant": "hybrid.grey.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.hybridDayGrey"
+        },
+        "hybridDayTraffic": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "traffic",
+            "variant": "hybrid.traffic.day",
+            "max_zoom": 20,
+            "type": "traffictile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.hybridDayTraffic"
+        },
+        "pedestrianDay": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "pedestrian.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.pedestrianDay"
+        },
+        "pedestrianNight": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "base",
+            "variant": "pedestrian.night",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.pedestrianNight"
+        },
+        "satelliteDay": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "aerial",
+            "variant": "satellite.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.satelliteDay"
+        },
+        "terrainDay": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "aerial",
+            "variant": "terrain.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.terrainDay"
+        },
+        "terrainDayMobile": {
+            "url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "app_id": "<insert your app_id here>",
+            "app_code": "<insert your app_code here>",
+            "base": "aerial",
+            "variant": "terrain.day.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HERE.terrainDayMobile"
+        }
+    },
+    "HEREv3": {
+        "normalDay": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalDay"
+        },
+        "normalDayCustom": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day.custom",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalDayCustom"
+        },
+        "normalDayGrey": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day.grey",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalDayGrey"
+        },
+        "normalDayMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalDayMobile"
+        },
+        "normalDayGreyMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day.grey.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalDayGreyMobile"
+        },
+        "normalDayTransit": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day.transit",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalDayTransit"
+        },
+        "normalDayTransitMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day.transit.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalDayTransitMobile"
+        },
+        "normalNight": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.night",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalNight"
+        },
+        "normalNightMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.night.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalNightMobile"
+        },
+        "normalNightGrey": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.night.grey",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalNightGrey"
+        },
+        "normalNightGreyMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.night.grey.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalNightGreyMobile"
+        },
+        "normalNightTransit": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.night.transit",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalNightTransit"
+        },
+        "normalNightTransitMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.night.transit.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.normalNightTransitMobile"
+        },
+        "reducedDay": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "reduced.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.reducedDay"
+        },
+        "reducedNight": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "reduced.night",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.reducedNight"
+        },
+        "basicMap": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "basetile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.basicMap"
+        },
+        "mapLabels": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "labeltile",
+            "language": "eng",
+            "format": "png",
+            "size": "256",
+            "name": "HEREv3.mapLabels"
+        },
+        "trafficFlow": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "traffic",
+            "variant": "normal.day",
+            "max_zoom": 20,
+            "type": "flowtile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.trafficFlow"
+        },
+        "carnavDayGrey": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "carnav.day.grey",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.carnavDayGrey"
+        },
+        "hybridDay": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "aerial",
+            "variant": "hybrid.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.hybridDay"
+        },
+        "hybridDayMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "aerial",
+            "variant": "hybrid.day.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.hybridDayMobile"
+        },
+        "hybridDayTransit": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "aerial",
+            "variant": "hybrid.day.transit",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.hybridDayTransit"
+        },
+        "hybridDayGrey": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "aerial",
+            "variant": "hybrid.grey.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.hybridDayGrey"
+        },
+        "pedestrianDay": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "pedestrian.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.pedestrianDay"
+        },
+        "pedestrianNight": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "base",
+            "variant": "pedestrian.night",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.pedestrianNight"
+        },
+        "satelliteDay": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "aerial",
+            "variant": "satellite.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.satelliteDay"
+        },
+        "terrainDay": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "aerial",
+            "variant": "terrain.day",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.terrainDay"
+        },
+        "terrainDayMobile": {
+            "url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}",
+            "attribution": "Map (C) 1987-2021 HERE",
+            "subdomains": "1234",
+            "mapID": "newest",
+            "apiKey": "<insert your apiKey here>",
+            "base": "aerial",
+            "variant": "terrain.day.mobile",
+            "max_zoom": 20,
+            "type": "maptile",
+            "language": "eng",
+            "format": "png8",
+            "size": "256",
+            "name": "HEREv3.terrainDayMobile"
+        }
+    },
+    "FreeMapSK": {
+        "url": "https://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg",
+        "min_zoom": 8,
+        "max_zoom": 16,
+        "subdomains": "abcd",
+        "bounds": [
+            [
+                47.204642,
+                15.996093
+            ],
+            [
+                49.830896,
+                22.576904
+            ]
+        ],
+        "attribution": "(C) OpenStreetMap contributors, vizualization CC-By-SA 2.0 Freemap.sk",
+        "name": "FreeMapSK"
+    },
+    "MtbMap": {
+        "url": "http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png",
+        "attribution": "(C) OpenStreetMap contributors & USGS",
+        "name": "MtbMap"
+    },
+    "CartoDB": {
+        "Positron": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "light_all",
+            "name": "CartoDB.Positron"
+        },
+        "PositronNoLabels": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "light_nolabels",
+            "name": "CartoDB.PositronNoLabels"
+        },
+        "PositronOnlyLabels": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "light_only_labels",
+            "name": "CartoDB.PositronOnlyLabels"
+        },
+        "DarkMatter": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "dark_all",
+            "name": "CartoDB.DarkMatter"
+        },
+        "DarkMatterNoLabels": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "dark_nolabels",
+            "name": "CartoDB.DarkMatterNoLabels"
+        },
+        "DarkMatterOnlyLabels": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "dark_only_labels",
+            "name": "CartoDB.DarkMatterOnlyLabels"
+        },
+        "Voyager": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "rastertiles/voyager",
+            "name": "CartoDB.Voyager"
+        },
+        "VoyagerNoLabels": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "rastertiles/voyager_nolabels",
+            "name": "CartoDB.VoyagerNoLabels"
+        },
+        "VoyagerOnlyLabels": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "rastertiles/voyager_only_labels",
+            "name": "CartoDB.VoyagerOnlyLabels"
+        },
+        "VoyagerLabelsUnder": {
+            "url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png",
+            "attribution": "(C) OpenStreetMap contributors (C) CARTO",
+            "subdomains": "abcd",
+            "max_zoom": 19,
+            "variant": "rastertiles/voyager_labels_under",
+            "name": "CartoDB.VoyagerLabelsUnder"
+        }
+    },
+    "HikeBike": {
+        "HikeBike": {
+            "url": "https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 19,
+            "attribution": "(C) OpenStreetMap contributors",
+            "variant": "hikebike",
+            "name": "HikeBike.HikeBike"
+        },
+        "HillShading": {
+            "url": "https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 15,
+            "attribution": "(C) OpenStreetMap contributors",
+            "variant": "hillshading",
+            "name": "HikeBike.HillShading"
+        }
+    },
+    "BasemapAT": {
+        "basemap": {
+            "url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",
+            "max_zoom": 20,
+            "attribution": "Datenquelle: basemap.at",
+            "subdomains": [
+                "",
+                "1",
+                "2",
+                "3",
+                "4"
+            ],
+            "type": "normal",
+            "format": "png",
+            "bounds": [
+                [
+                    46.35877,
+                    8.782379
+                ],
+                [
+                    49.037872,
+                    17.189532
+                ]
+            ],
+            "variant": "geolandbasemap",
+            "name": "BasemapAT.basemap"
+        },
+        "grau": {
+            "url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",
+            "max_zoom": 19,
+            "attribution": "Datenquelle: basemap.at",
+            "subdomains": [
+                "",
+                "1",
+                "2",
+                "3",
+                "4"
+            ],
+            "type": "normal",
+            "format": "png",
+            "bounds": [
+                [
+                    46.35877,
+                    8.782379
+                ],
+                [
+                    49.037872,
+                    17.189532
+                ]
+            ],
+            "variant": "bmapgrau",
+            "name": "BasemapAT.grau"
+        },
+        "overlay": {
+            "url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",
+            "max_zoom": 19,
+            "attribution": "Datenquelle: basemap.at",
+            "subdomains": [
+                "",
+                "1",
+                "2",
+                "3",
+                "4"
+            ],
+            "type": "normal",
+            "format": "png",
+            "bounds": [
+                [
+                    46.35877,
+                    8.782379
+                ],
+                [
+                    49.037872,
+                    17.189532
+                ]
+            ],
+            "variant": "bmapoverlay",
+            "name": "BasemapAT.overlay"
+        },
+        "terrain": {
+            "url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",
+            "max_zoom": 19,
+            "attribution": "Datenquelle: basemap.at",
+            "subdomains": [
+                "",
+                "1",
+                "2",
+                "3",
+                "4"
+            ],
+            "type": "grau",
+            "format": "jpeg",
+            "bounds": [
+                [
+                    46.35877,
+                    8.782379
+                ],
+                [
+                    49.037872,
+                    17.189532
+                ]
+            ],
+            "variant": "bmapgelaende",
+            "name": "BasemapAT.terrain"
+        },
+        "surface": {
+            "url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",
+            "max_zoom": 19,
+            "attribution": "Datenquelle: basemap.at",
+            "subdomains": [
+                "",
+                "1",
+                "2",
+                "3",
+                "4"
+            ],
+            "type": "grau",
+            "format": "jpeg",
+            "bounds": [
+                [
+                    46.35877,
+                    8.782379
+                ],
+                [
+                    49.037872,
+                    17.189532
+                ]
+            ],
+            "variant": "bmapoberflaeche",
+            "name": "BasemapAT.surface"
+        },
+        "highdpi": {
+            "url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",
+            "max_zoom": 19,
+            "attribution": "Datenquelle: basemap.at",
+            "subdomains": [
+                "",
+                "1",
+                "2",
+                "3",
+                "4"
+            ],
+            "type": "normal",
+            "format": "jpeg",
+            "bounds": [
+                [
+                    46.35877,
+                    8.782379
+                ],
+                [
+                    49.037872,
+                    17.189532
+                ]
+            ],
+            "variant": "bmaphidpi",
+            "name": "BasemapAT.highdpi"
+        },
+        "orthofoto": {
+            "url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}",
+            "max_zoom": 20,
+            "attribution": "Datenquelle: basemap.at",
+            "subdomains": [
+                "",
+                "1",
+                "2",
+                "3",
+                "4"
+            ],
+            "type": "normal",
+            "format": "jpeg",
+            "bounds": [
+                [
+                    46.35877,
+                    8.782379
+                ],
+                [
+                    49.037872,
+                    17.189532
+                ]
+            ],
+            "variant": "bmaporthofoto30cm",
+            "name": "BasemapAT.orthofoto"
+        }
+    },
+    "nlmaps": {
+        "standaard": {
+            "url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png",
+            "min_zoom": 6,
+            "max_zoom": 19,
+            "bounds": [
+                [
+                    50.5,
+                    3.25
+                ],
+                [
+                    54,
+                    7.6
+                ]
+            ],
+            "attribution": "Kaartgegevens (C) Kadaster",
+            "variant": "brtachtergrondkaart",
+            "name": "nlmaps.standaard"
+        },
+        "pastel": {
+            "url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png",
+            "min_zoom": 6,
+            "max_zoom": 19,
+            "bounds": [
+                [
+                    50.5,
+                    3.25
+                ],
+                [
+                    54,
+                    7.6
+                ]
+            ],
+            "attribution": "Kaartgegevens (C) Kadaster",
+            "variant": "brtachtergrondkaartpastel",
+            "name": "nlmaps.pastel"
+        },
+        "grijs": {
+            "url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png",
+            "min_zoom": 6,
+            "max_zoom": 19,
+            "bounds": [
+                [
+                    50.5,
+                    3.25
+                ],
+                [
+                    54,
+                    7.6
+                ]
+            ],
+            "attribution": "Kaartgegevens (C) Kadaster",
+            "variant": "brtachtergrondkaartgrijs",
+            "name": "nlmaps.grijs"
+        },
+        "luchtfoto": {
+            "url": "https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/2018_ortho25/EPSG:3857/{z}/{x}/{y}.png",
+            "min_zoom": 6,
+            "max_zoom": 19,
+            "bounds": [
+                [
+                    50.5,
+                    3.25
+                ],
+                [
+                    54,
+                    7.6
+                ]
+            ],
+            "attribution": "Kaartgegevens (C) Kadaster",
+            "name": "nlmaps.luchtfoto"
+        }
+    },
+    "NASAGIBS": {
+        "ModisTerraTrueColorCR": {
+            "url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}",
+            "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.",
+            "bounds": [
+                [
+                    -85.0511287776,
+                    -179.999999975
+                ],
+                [
+                    85.0511287776,
+                    179.999999975
+                ]
+            ],
+            "min_zoom": 1,
+            "max_zoom": 9,
+            "format": "jpg",
+            "time": "",
+            "tilematrixset": "GoogleMapsCompatible_Level",
+            "variant": "MODIS_Terra_CorrectedReflectance_TrueColor",
+            "name": "NASAGIBS.ModisTerraTrueColorCR"
+        },
+        "ModisTerraBands367CR": {
+            "url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}",
+            "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.",
+            "bounds": [
+                [
+                    -85.0511287776,
+                    -179.999999975
+                ],
+                [
+                    85.0511287776,
+                    179.999999975
+                ]
+            ],
+            "min_zoom": 1,
+            "max_zoom": 9,
+            "format": "jpg",
+            "time": "",
+            "tilematrixset": "GoogleMapsCompatible_Level",
+            "variant": "MODIS_Terra_CorrectedReflectance_Bands367",
+            "name": "NASAGIBS.ModisTerraBands367CR"
+        },
+        "ViirsEarthAtNight2012": {
+            "url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}",
+            "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.",
+            "bounds": [
+                [
+                    -85.0511287776,
+                    -179.999999975
+                ],
+                [
+                    85.0511287776,
+                    179.999999975
+                ]
+            ],
+            "min_zoom": 1,
+            "max_zoom": 8,
+            "format": "jpg",
+            "time": "",
+            "tilematrixset": "GoogleMapsCompatible_Level",
+            "variant": "VIIRS_CityLights_2012",
+            "name": "NASAGIBS.ViirsEarthAtNight2012"
+        },
+        "ModisTerraLSTDay": {
+            "url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}",
+            "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.",
+            "bounds": [
+                [
+                    -85.0511287776,
+                    -179.999999975
+                ],
+                [
+                    85.0511287776,
+                    179.999999975
+                ]
+            ],
+            "min_zoom": 1,
+            "max_zoom": 7,
+            "format": "png",
+            "time": "",
+            "tilematrixset": "GoogleMapsCompatible_Level",
+            "variant": "MODIS_Terra_Land_Surface_Temp_Day",
+            "opacity": 0.75,
+            "name": "NASAGIBS.ModisTerraLSTDay"
+        },
+        "ModisTerraSnowCover": {
+            "url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}",
+            "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.",
+            "bounds": [
+                [
+                    -85.0511287776,
+                    -179.999999975
+                ],
+                [
+                    85.0511287776,
+                    179.999999975
+                ]
+            ],
+            "min_zoom": 1,
+            "max_zoom": 8,
+            "format": "png",
+            "time": "",
+            "tilematrixset": "GoogleMapsCompatible_Level",
+            "variant": "MODIS_Terra_Snow_Cover",
+            "opacity": 0.75,
+            "name": "NASAGIBS.ModisTerraSnowCover"
+        },
+        "ModisTerraAOD": {
+            "url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}",
+            "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.",
+            "bounds": [
+                [
+                    -85.0511287776,
+                    -179.999999975
+                ],
+                [
+                    85.0511287776,
+                    179.999999975
+                ]
+            ],
+            "min_zoom": 1,
+            "max_zoom": 6,
+            "format": "png",
+            "time": "",
+            "tilematrixset": "GoogleMapsCompatible_Level",
+            "variant": "MODIS_Terra_Aerosol",
+            "opacity": 0.75,
+            "name": "NASAGIBS.ModisTerraAOD"
+        },
+        "ModisTerraChlorophyll": {
+            "url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}",
+            "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.",
+            "bounds": [
+                [
+                    -85.0511287776,
+                    -179.999999975
+                ],
+                [
+                    85.0511287776,
+                    179.999999975
+                ]
+            ],
+            "min_zoom": 1,
+            "max_zoom": 7,
+            "format": "png",
+            "time": "",
+            "tilematrixset": "GoogleMapsCompatible_Level",
+            "variant": "MODIS_Terra_Chlorophyll_A",
+            "opacity": 0.75,
+            "name": "NASAGIBS.ModisTerraChlorophyll"
+        }
+    },
+    "NLS": {
+        "url": "https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg",
+        "attribution": "National Library of Scotland Historic Maps",
+        "bounds": [
+            [
+                49.6,
+                -12
+            ],
+            [
+                61.7,
+                3
+            ]
+        ],
+        "min_zoom": 1,
+        "max_zoom": 18,
+        "subdomains": "0123",
+        "name": "NLS"
+    },
+    "JusticeMap": {
+        "income": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "income",
+            "name": "JusticeMap.income"
+        },
+        "americanIndian": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "indian",
+            "name": "JusticeMap.americanIndian"
+        },
+        "asian": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "asian",
+            "name": "JusticeMap.asian"
+        },
+        "black": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "black",
+            "name": "JusticeMap.black"
+        },
+        "hispanic": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "hispanic",
+            "name": "JusticeMap.hispanic"
+        },
+        "multi": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "multi",
+            "name": "JusticeMap.multi"
+        },
+        "nonWhite": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "nonwhite",
+            "name": "JusticeMap.nonWhite"
+        },
+        "white": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "white",
+            "name": "JusticeMap.white"
+        },
+        "plurality": {
+            "url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png",
+            "attribution": "Justice Map",
+            "size": "county",
+            "bounds": [
+                [
+                    14,
+                    -180
+                ],
+                [
+                    72,
+                    -56
+                ]
+            ],
+            "variant": "plural",
+            "name": "JusticeMap.plurality"
+        }
+    },
+    "GeoportailFrance": {
+        "plan": {
+            "url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}",
+            "attribution": "Geoportail France",
+            "bounds": [
+                [
+                    -75,
+                    -180
+                ],
+                [
+                    81,
+                    180
+                ]
+            ],
+            "min_zoom": 2,
+            "max_zoom": 18,
+            "apikey": "choisirgeoportail",
+            "format": "image/png",
+            "style": "normal",
+            "variant": "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2",
+            "name": "GeoportailFrance.plan"
+        },
+        "parcels": {
+            "url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}",
+            "attribution": "Geoportail France",
+            "bounds": [
+                [
+                    -75,
+                    -180
+                ],
+                [
+                    81,
+                    180
+                ]
+            ],
+            "min_zoom": 2,
+            "max_zoom": 20,
+            "apikey": "choisirgeoportail",
+            "format": "image/png",
+            "style": "PCI vecteur",
+            "variant": "CADASTRALPARCELS.PARCELLAIRE_EXPRESS",
+            "name": "GeoportailFrance.parcels"
+        },
+        "orthos": {
+            "url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}",
+            "attribution": "Geoportail France",
+            "bounds": [
+                [
+                    -75,
+                    -180
+                ],
+                [
+                    81,
+                    180
+                ]
+            ],
+            "min_zoom": 2,
+            "max_zoom": 19,
+            "apikey": "choisirgeoportail",
+            "format": "image/jpeg",
+            "style": "normal",
+            "variant": "ORTHOIMAGERY.ORTHOPHOTOS",
+            "name": "GeoportailFrance.orthos"
+        }
+    },
+    "OneMapSG": {
+        "Default": {
+            "url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png",
+            "variant": "Default",
+            "min_zoom": 11,
+            "max_zoom": 18,
+            "bounds": [
+                [
+                    1.56073,
+                    104.11475
+                ],
+                [
+                    1.16,
+                    103.502
+                ]
+            ],
+            "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority",
+            "name": "OneMapSG.Default"
+        },
+        "Night": {
+            "url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png",
+            "variant": "Night",
+            "min_zoom": 11,
+            "max_zoom": 18,
+            "bounds": [
+                [
+                    1.56073,
+                    104.11475
+                ],
+                [
+                    1.16,
+                    103.502
+                ]
+            ],
+            "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority",
+            "name": "OneMapSG.Night"
+        },
+        "Original": {
+            "url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png",
+            "variant": "Original",
+            "min_zoom": 11,
+            "max_zoom": 18,
+            "bounds": [
+                [
+                    1.56073,
+                    104.11475
+                ],
+                [
+                    1.16,
+                    103.502
+                ]
+            ],
+            "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority",
+            "name": "OneMapSG.Original"
+        },
+        "Grey": {
+            "url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png",
+            "variant": "Grey",
+            "min_zoom": 11,
+            "max_zoom": 18,
+            "bounds": [
+                [
+                    1.56073,
+                    104.11475
+                ],
+                [
+                    1.16,
+                    103.502
+                ]
+            ],
+            "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority",
+            "name": "OneMapSG.Grey"
+        },
+        "LandLot": {
+            "url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png",
+            "variant": "LandLot",
+            "min_zoom": 11,
+            "max_zoom": 18,
+            "bounds": [
+                [
+                    1.56073,
+                    104.11475
+                ],
+                [
+                    1.16,
+                    103.502
+                ]
+            ],
+            "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority",
+            "name": "OneMapSG.LandLot"
+        }
+    },
+    "USGS": {
+        "USTopo": {
+            "url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}",
+            "max_zoom": 20,
+            "attribution": "Tiles courtesy of the U.S. Geological Survey",
+            "name": "USGS.USTopo"
+        },
+        "USImagery": {
+            "url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}",
+            "max_zoom": 20,
+            "attribution": "Tiles courtesy of the U.S. Geological Survey",
+            "name": "USGS.USImagery"
+        },
+        "USImageryTopo": {
+            "url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapServer/tile/{z}/{y}/{x}",
+            "max_zoom": 20,
+            "attribution": "Tiles courtesy of the U.S. Geological Survey",
+            "name": "USGS.USImageryTopo"
+        }
+    },
+    "WaymarkedTrails": {
+        "hiking": {
+            "url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)",
+            "variant": "hiking",
+            "name": "WaymarkedTrails.hiking"
+        },
+        "cycling": {
+            "url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)",
+            "variant": "cycling",
+            "name": "WaymarkedTrails.cycling"
+        },
+        "mtb": {
+            "url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)",
+            "variant": "mtb",
+            "name": "WaymarkedTrails.mtb"
+        },
+        "slopes": {
+            "url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)",
+            "variant": "slopes",
+            "name": "WaymarkedTrails.slopes"
+        },
+        "riding": {
+            "url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)",
+            "variant": "riding",
+            "name": "WaymarkedTrails.riding"
+        },
+        "skating": {
+            "url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png",
+            "max_zoom": 18,
+            "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)",
+            "variant": "skating",
+            "name": "WaymarkedTrails.skating"
+        }
+    },
+    "OpenAIP": {
+        "url": "http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.{ext}",
+        "attribution": "openAIP Data (CC-BY-NC-SA)",
+        "ext": "png",
+        "min_zoom": 4,
+        "max_zoom": 14,
+        "tms": true,
+        "detectRetina": true,
+        "subdomains": "12",
+        "name": "OpenAIP"
+    },
+    "OpenSnowMap": {
+        "pistes": {
+            "url": "https://tiles.opensnowmap.org/{variant}/{z}/{x}/{y}.png",
+            "min_zoom": 9,
+            "max_zoom": 18,
+            "attribution": "Map data: (C) OpenStreetMap contributors & ODbL, (C) www.opensnowmap.org CC-BY-SA",
+            "variant": "pistes",
+            "name": "OpenSnowMap.pistes"
+        }
+    },
+    "AzureMaps": {
+        "MicrosoftImagery": {
+            "url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}",
+            "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.",
+            "apiVersion": "2.0",
+            "variant": "microsoft.imagery",
+            "subscriptionKey": "<insert your subscription key here>",
+            "language": "en-US",
+            "name": "AzureMaps.MicrosoftImagery"
+        },
+        "MicrosoftBaseDarkGrey": {
+            "url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}",
+            "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.",
+            "apiVersion": "2.0",
+            "variant": "microsoft.base.darkgrey",
+            "subscriptionKey": "<insert your subscription key here>",
+            "language": "en-US",
+            "name": "AzureMaps.MicrosoftBaseDarkGrey"
+        },
+        "MicrosoftBaseRoad": {
+            "url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}",
+            "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.",
+            "apiVersion": "2.0",
+            "variant": "microsoft.base.road",
+            "subscriptionKey": "<insert your subscription key here>",
+            "language": "en-US",
+            "name": "AzureMaps.MicrosoftBaseRoad"
+        },
+        "MicrosoftBaseHybridRoad": {
+            "url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}",
+            "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.",
+            "apiVersion": "2.0",
+            "variant": "microsoft.base.hybrid.road",
+            "subscriptionKey": "<insert your subscription key here>",
+            "language": "en-US",
+            "name": "AzureMaps.MicrosoftBaseHybridRoad"
+        },
+        "MicrosoftTerraMain": {
+            "url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}",
+            "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.",
+            "apiVersion": "2.0",
+            "variant": "microsoft.terra.main",
+            "subscriptionKey": "<insert your subscription key here>",
+            "language": "en-US",
+            "name": "AzureMaps.MicrosoftTerraMain"
+        },
+        "MicrosoftWeatherInfraredMain": {
+            "url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&timeStamp={timeStamp}&language={language}&subscription-key={subscriptionKey}",
+            "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.",
+            "apiVersion": "2.0",
+            "variant": "microsoft.weather.infrared.main",
+            "subscriptionKey": "<insert your subscription key here>",
+            "language": "en-US",
+            "timeStamp": "2021-05-08T09:03:00Z",
+            "name": "AzureMaps.MicrosoftWeatherInfraredMain"
+        },
+        "MicrosoftWeatherRadarMain": {
+            "url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&timeStamp={timeStamp}&language={language}&subscription-key={subscriptionKey}",
+            "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.",
+            "apiVersion": "2.0",
+            "variant": "microsoft.weather.radar.main",
+            "subscriptionKey": "<insert your subscription key here>",
+            "language": "en-US",
+            "timeStamp": "2021-05-08T09:03:00Z",
+            "name": "AzureMaps.MicrosoftWeatherRadarMain"
+        }
+    },
+    "_meta": {
+        "description": "JSON representation of the leaflet providers defined by the leaflet-providers.js extension to Leaflet (https://github.com/leaflet-extras/leaflet-providers)",
+        "date_of_creation": "2021-05-27",
+        "commit": "commit 5c9b90b829e0c2271f17ab06e6b0cb3583226f78 (Add Azure Maps Tiles provider (#384)\n\nhttps://docs.microsoft.com/en-us/rest/api/maps/renderv2/getmaptilepreview)"
+    }
+}
\ No newline at end of file
diff --git a/provider_sources/xyzservices-providers.json b/provider_sources/xyzservices-providers.json
new file mode 100644
index 0000000..ab1e15b
--- /dev/null
+++ b/provider_sources/xyzservices-providers.json
@@ -0,0 +1,22 @@
+{
+    "single_provider_name": {
+        "url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
+        "max_zoom": 19,
+        "attribution": "(C) OpenStreetMap contributors",
+        "name": "OpenStreetMap.Mapnik"
+    },
+    "provider_bunch_name": {
+        "first_provider_name": {
+            "url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
+            "max_zoom": 19,
+            "attribution": "(C) OpenStreetMap contributors",
+            "name": "OpenStreetMap.Mapnik"
+        },
+        "second_provider_name": {
+            "url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
+            "max_zoom": 19,
+            "attribution": "(C) OpenStreetMap contributors",
+            "name": "OpenStreetMap.Mapnik"
+        }
+    }
+}
\ No newline at end of file
diff --git a/setup.py b/setup.py
index a115fd5..7cc729b 100644
--- a/setup.py
+++ b/setup.py
@@ -9,7 +9,7 @@ if not os.path.exists(datadir):
     os.makedirs(datadir)
 
 shutil.copyfile(
-    "./xyzservices/provider_sources/leaflet-providers-parsed.json",
+    "./xyzservices/data/providers.json",
     os.path.join(datadir, "providers.json"),
 )
 
@@ -29,7 +29,7 @@ setuptools.setup(
     packages=setuptools.find_packages(),
     python_requires=">=3.7",
     package_data={
-        "xyzservices": ["provider_sources/leaflet-providers-parsed.json"],
+        "providers": ["data/providers.json"],
     },
     classifiers=[
         "License :: OSI Approved :: BSD License",
diff --git a/xyzservices/provider_sources/__init__.py b/xyzservices/data/__init__.py
similarity index 100%
rename from xyzservices/provider_sources/__init__.py
rename to xyzservices/data/__init__.py
diff --git a/xyzservices/provider_sources/leaflet-providers-parsed.json b/xyzservices/data/providers.json
similarity index 95%
rename from xyzservices/provider_sources/leaflet-providers-parsed.json
rename to xyzservices/data/providers.json
index af60e68..949cc6b 100644
--- a/xyzservices/provider_sources/leaflet-providers-parsed.json
+++ b/xyzservices/data/providers.json
@@ -1,1 +1,1 @@
-{"OpenStreetMap": {"Mapnik": {"url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors", "name": "OpenStreetMap.Mapnik"}, "DE": {"url": "https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "(C) OpenStreetMap contributors", "name": "OpenStreetMap.DE"}, "CH": {"url": "https://tile.osm.ch/switzerland/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "(C) OpenStreetMap contributors", "bounds": [[45, 5], [48, 11]], "name": "OpenStreetMap.CH"}, "France": {"url": "https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", "max_zoom": 20, "attribution": "(C) OpenStreetMap France | (C) OpenStreetMap contributors", "name": "OpenStreetMap.France"}, "HOT": {"url": "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France", "name": "OpenStreetMap.HOT"}, "BZH": {"url": "https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors, Tiles courtesy of Breton OpenStreetMap Team", "bounds": [[46.2, -5.5], [50, 0.7]], "name": "OpenStreetMap.BZH"}}, "OpenSeaMap": {"url": "https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png", "attribution": "Map data: (C) OpenSeaMap contributors", "name": "OpenSeaMap"}, "OpenPtMap": {"url": "http://openptmap.org/tiles/{z}/{x}/{y}.png", "max_zoom": 17, "attribution": "Map data: (C) OpenPtMap contributors", "name": "OpenPtMap"}, "OpenTopoMap": {"url": "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", "max_zoom": 17, "attribution": "Map data: (C) OpenStreetMap contributors, SRTM | Map style: (C) OpenTopoMap (CC-BY-SA)", "name": "OpenTopoMap"}, "OpenRailwayMap": {"url": "https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) OpenRailwayMap (CC-BY-SA)", "name": "OpenRailwayMap"}, "OpenFireMap": {"url": "http://openfiremap.org/hytiles/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) OpenFireMap (CC-BY-SA)", "name": "OpenFireMap"}, "SafeCast": {"url": "https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png", "max_zoom": 16, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) SafeCast (CC-BY-SA)", "name": "SafeCast"}, "Stadia": {"AlidadeSmooth": {"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.AlidadeSmooth"}, "AlidadeSmoothDark": {"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.AlidadeSmoothDark"}, "OSMBright": {"url": "https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.OSMBright"}, "Outdoors": {"url": "https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.Outdoors"}}, "Thunderforest": {"OpenCycleMap": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "cycle", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.OpenCycleMap"}, "Transport": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "transport", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Transport"}, "TransportDark": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "transport-dark", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.TransportDark"}, "SpinalMap": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "spinal-map", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.SpinalMap"}, "Landscape": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "landscape", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Landscape"}, "Outdoors": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "outdoors", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Outdoors"}, "Pioneer": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "pioneer", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Pioneer"}, "MobileAtlas": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "mobile-atlas", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.MobileAtlas"}, "Neighbourhood": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "neighbourhood", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Neighbourhood"}}, "CyclOSM": {"url": "https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png", "max_zoom": 20, "attribution": "CyclOSM | Map data: (C) OpenStreetMap contributors", "name": "CyclOSM"}, "Hydda": {"Full": {"url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png", "max_zoom": 20, "variant": "full", "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors", "name": "Hydda.Full"}, "Base": {"url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png", "max_zoom": 20, "variant": "base", "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors", "name": "Hydda.Base"}, "RoadsAndLabels": {"url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png", "max_zoom": 20, "variant": "roads_and_labels", "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors", "name": "Hydda.RoadsAndLabels"}}, "Jawg": {"Streets": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-streets", "accessToken": "<insert your access token here>", "name": "Jawg.Streets"}, "Terrain": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-terrain", "accessToken": "<insert your access token here>", "name": "Jawg.Terrain"}, "Sunny": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-sunny", "accessToken": "<insert your access token here>", "name": "Jawg.Sunny"}, "Dark": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-dark", "accessToken": "<insert your access token here>", "name": "Jawg.Dark"}, "Light": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-light", "accessToken": "<insert your access token here>", "name": "Jawg.Light"}, "Matrix": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-matrix", "accessToken": "<insert your access token here>", "name": "Jawg.Matrix"}}, "MapBox": {"url": "https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}", "attribution": "(C) Mapbox (C) OpenStreetMap contributors Improve this map", "tileSize": 512, "max_zoom": 18, "zoomOffset": -1, "id": "mapbox/streets-v11", "accessToken": "<insert your access token here>", "name": "MapBox"}, "MapTiler": {"Streets": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "streets", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Streets"}, "Basic": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "basic", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Basic"}, "Bright": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "bright", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Bright"}, "Pastel": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "pastel", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Pastel"}, "Positron": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "positron", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Positron"}, "Hybrid": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "hybrid", "ext": "jpg", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Hybrid"}, "Toner": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "toner", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Toner"}, "Topo": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "topo", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Topo"}, "Voyager": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "voyager", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Voyager"}}, "Stamen": {"Toner": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner", "ext": "png", "name": "Stamen.Toner"}, "TonerBackground": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-background", "ext": "png", "name": "Stamen.TonerBackground"}, "TonerHybrid": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-hybrid", "ext": "png", "name": "Stamen.TonerHybrid"}, "TonerLines": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-lines", "ext": "png", "name": "Stamen.TonerLines"}, "TonerLabels": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-labels", "ext": "png", "name": "Stamen.TonerLabels"}, "TonerLite": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-lite", "ext": "png", "name": "Stamen.TonerLite"}, "Watercolor": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 1, "max_zoom": 16, "variant": "watercolor", "ext": "jpg", "name": "Stamen.Watercolor"}, "Terrain": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 18, "variant": "terrain", "ext": "png", "name": "Stamen.Terrain"}, "TerrainBackground": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 18, "variant": "terrain-background", "ext": "png", "name": "Stamen.TerrainBackground"}, "TerrainLabels": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 18, "variant": "terrain-labels", "ext": "png", "name": "Stamen.TerrainLabels"}, "TopOSMRelief": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toposm-color-relief", "ext": "jpg", "bounds": [[22, -132], [51, -56]], "name": "Stamen.TopOSMRelief"}, "TopOSMFeatures": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toposm-features", "ext": "png", "bounds": [[22, -132], [51, -56]], "opacity": 0.9, "name": "Stamen.TopOSMFeatures"}}, "TomTom": {"Basic": {"url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}", "variant": "basic", "max_zoom": 22, "attribution": "(C) 1992 - 2021 TomTom.", "subdomains": "abcd", "style": "main", "ext": "png", "apikey": "<insert your API key here>", "name": "TomTom.Basic"}, "Hybrid": {"url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}", "variant": "hybrid", "max_zoom": 22, "attribution": "(C) 1992 - 2021 TomTom.", "subdomains": "abcd", "style": "main", "ext": "png", "apikey": "<insert your API key here>", "name": "TomTom.Hybrid"}, "Labels": {"url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}", "variant": "labels", "max_zoom": 22, "attribution": "(C) 1992 - 2021 TomTom.", "subdomains": "abcd", "style": "main", "ext": "png", "apikey": "<insert your API key here>", "name": "TomTom.Labels"}}, "Esri": {"WorldStreetMap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Street_Map", "attribution": "Tiles (C) Esri -- Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012", "name": "Esri.WorldStreetMap"}, "DeLorme": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "Specialty/DeLorme_World_Base_Map", "attribution": "Tiles (C) Esri -- Copyright: (C)2012 DeLorme", "min_zoom": 1, "max_zoom": 11, "name": "Esri.DeLorme"}, "WorldTopoMap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Topo_Map", "attribution": "Tiles (C) Esri -- Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community", "name": "Esri.WorldTopoMap"}, "WorldImagery": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Imagery", "attribution": "Tiles (C) Esri -- Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community", "name": "Esri.WorldImagery"}, "WorldTerrain": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Terrain_Base", "attribution": "Tiles (C) Esri -- Source: USGS, Esri, TANA, DeLorme, and NPS", "max_zoom": 13, "name": "Esri.WorldTerrain"}, "WorldShadedRelief": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Shaded_Relief", "attribution": "Tiles (C) Esri -- Source: Esri", "max_zoom": 13, "name": "Esri.WorldShadedRelief"}, "WorldPhysical": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Physical_Map", "attribution": "Tiles (C) Esri -- Source: US National Park Service", "max_zoom": 8, "name": "Esri.WorldPhysical"}, "OceanBasemap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "Ocean_Basemap", "attribution": "Tiles (C) Esri -- Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri", "max_zoom": 13, "name": "Esri.OceanBasemap"}, "NatGeoWorldMap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "NatGeo_World_Map", "attribution": "Tiles (C) Esri -- National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC", "max_zoom": 16, "name": "Esri.NatGeoWorldMap"}, "WorldGrayCanvas": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "Canvas/World_Light_Gray_Base", "attribution": "Tiles (C) Esri -- Esri, DeLorme, NAVTEQ", "max_zoom": 16, "name": "Esri.WorldGrayCanvas"}}, "OpenWeatherMap": {"Clouds": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "clouds", "name": "OpenWeatherMap.Clouds"}, "CloudsClassic": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "clouds_cls", "name": "OpenWeatherMap.CloudsClassic"}, "Precipitation": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "precipitation", "name": "OpenWeatherMap.Precipitation"}, "PrecipitationClassic": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "precipitation_cls", "name": "OpenWeatherMap.PrecipitationClassic"}, "Rain": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "rain", "name": "OpenWeatherMap.Rain"}, "RainClassic": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "rain_cls", "name": "OpenWeatherMap.RainClassic"}, "Pressure": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "pressure", "name": "OpenWeatherMap.Pressure"}, "PressureContour": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "pressure_cntr", "name": "OpenWeatherMap.PressureContour"}, "Wind": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "wind", "name": "OpenWeatherMap.Wind"}, "Temperature": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "temp", "name": "OpenWeatherMap.Temperature"}, "Snow": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "snow", "name": "OpenWeatherMap.Snow"}}, "HERE": {"normalDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDay"}, "normalDayCustom": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.custom", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayCustom"}, "normalDayGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayGrey"}, "normalDayMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayMobile"}, "normalDayGreyMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayGreyMobile"}, "normalDayTransit": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayTransit"}, "normalDayTransitMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayTransitMobile"}, "normalDayTraffic": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "traffic", "variant": "normal.traffic.day", "max_zoom": 20, "type": "traffictile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayTraffic"}, "normalNight": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNight"}, "normalNightMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightMobile"}, "normalNightGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightGrey"}, "normalNightGreyMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightGreyMobile"}, "normalNightTransit": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightTransit"}, "normalNightTransitMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightTransitMobile"}, "reducedDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "reduced.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.reducedDay"}, "reducedNight": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "reduced.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.reducedNight"}, "basicMap": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "basetile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.basicMap"}, "mapLabels": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "labeltile", "language": "eng", "format": "png", "size": "256", "name": "HERE.mapLabels"}, "trafficFlow": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "traffic", "variant": "normal.day", "max_zoom": 20, "type": "flowtile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.trafficFlow"}, "carnavDayGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "carnav.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.carnavDayGrey"}, "hybridDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDay"}, "hybridDayMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayMobile"}, "hybridDayTransit": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayTransit"}, "hybridDayGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.grey.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayGrey"}, "hybridDayTraffic": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "traffic", "variant": "hybrid.traffic.day", "max_zoom": 20, "type": "traffictile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayTraffic"}, "pedestrianDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "pedestrian.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.pedestrianDay"}, "pedestrianNight": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "pedestrian.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.pedestrianNight"}, "satelliteDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "satellite.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.satelliteDay"}, "terrainDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "terrain.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.terrainDay"}, "terrainDayMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "terrain.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.terrainDayMobile"}}, "HEREv3": {"normalDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDay"}, "normalDayCustom": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.custom", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayCustom"}, "normalDayGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayGrey"}, "normalDayMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayMobile"}, "normalDayGreyMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayGreyMobile"}, "normalDayTransit": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayTransit"}, "normalDayTransitMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayTransitMobile"}, "normalNight": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNight"}, "normalNightMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightMobile"}, "normalNightGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightGrey"}, "normalNightGreyMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightGreyMobile"}, "normalNightTransit": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightTransit"}, "normalNightTransitMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightTransitMobile"}, "reducedDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "reduced.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.reducedDay"}, "reducedNight": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "reduced.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.reducedNight"}, "basicMap": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "basetile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.basicMap"}, "mapLabels": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "labeltile", "language": "eng", "format": "png", "size": "256", "name": "HEREv3.mapLabels"}, "trafficFlow": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "traffic", "variant": "normal.day", "max_zoom": 20, "type": "flowtile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.trafficFlow"}, "carnavDayGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "carnav.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.carnavDayGrey"}, "hybridDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDay"}, "hybridDayMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDayMobile"}, "hybridDayTransit": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDayTransit"}, "hybridDayGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.grey.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDayGrey"}, "pedestrianDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "pedestrian.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.pedestrianDay"}, "pedestrianNight": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "pedestrian.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.pedestrianNight"}, "satelliteDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "satellite.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.satelliteDay"}, "terrainDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "terrain.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.terrainDay"}, "terrainDayMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "terrain.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.terrainDayMobile"}}, "FreeMapSK": {"url": "https://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg", "min_zoom": 8, "max_zoom": 16, "subdomains": "abcd", "bounds": [[47.204642, 15.996093], [49.830896, 22.576904]], "attribution": "(C) OpenStreetMap contributors, vizualization CC-By-SA 2.0 Freemap.sk", "name": "FreeMapSK"}, "MtbMap": {"url": "http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png", "attribution": "(C) OpenStreetMap contributors & USGS", "name": "MtbMap"}, "CartoDB": {"Positron": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "light_all", "name": "CartoDB.Positron"}, "PositronNoLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "light_nolabels", "name": "CartoDB.PositronNoLabels"}, "PositronOnlyLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "light_only_labels", "name": "CartoDB.PositronOnlyLabels"}, "DarkMatter": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "dark_all", "name": "CartoDB.DarkMatter"}, "DarkMatterNoLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "dark_nolabels", "name": "CartoDB.DarkMatterNoLabels"}, "DarkMatterOnlyLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "dark_only_labels", "name": "CartoDB.DarkMatterOnlyLabels"}, "Voyager": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager", "name": "CartoDB.Voyager"}, "VoyagerNoLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager_nolabels", "name": "CartoDB.VoyagerNoLabels"}, "VoyagerOnlyLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager_only_labels", "name": "CartoDB.VoyagerOnlyLabels"}, "VoyagerLabelsUnder": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager_labels_under", "name": "CartoDB.VoyagerLabelsUnder"}}, "HikeBike": {"HikeBike": {"url": "https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors", "variant": "hikebike", "name": "HikeBike.HikeBike"}, "HillShading": {"url": "https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 15, "attribution": "(C) OpenStreetMap contributors", "variant": "hillshading", "name": "HikeBike.HillShading"}}, "BasemapAT": {"basemap": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 20, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "png", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "geolandbasemap", "name": "BasemapAT.basemap"}, "grau": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "png", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapgrau", "name": "BasemapAT.grau"}, "overlay": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "png", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapoverlay", "name": "BasemapAT.overlay"}, "terrain": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "grau", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapgelaende", "name": "BasemapAT.terrain"}, "surface": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "grau", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapoberflaeche", "name": "BasemapAT.surface"}, "highdpi": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmaphidpi", "name": "BasemapAT.highdpi"}, "orthofoto": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 20, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmaporthofoto30cm", "name": "BasemapAT.orthofoto"}}, "nlmaps": {"standaard": {"url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "variant": "brtachtergrondkaart", "name": "nlmaps.standaard"}, "pastel": {"url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "variant": "brtachtergrondkaartpastel", "name": "nlmaps.pastel"}, "grijs": {"url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "variant": "brtachtergrondkaartgrijs", "name": "nlmaps.grijs"}, "luchtfoto": {"url": "https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/2018_ortho25/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "name": "nlmaps.luchtfoto"}}, "NASAGIBS": {"ModisTerraTrueColorCR": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 9, "format": "jpg", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_CorrectedReflectance_TrueColor", "name": "NASAGIBS.ModisTerraTrueColorCR"}, "ModisTerraBands367CR": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 9, "format": "jpg", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_CorrectedReflectance_Bands367", "name": "NASAGIBS.ModisTerraBands367CR"}, "ViirsEarthAtNight2012": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 8, "format": "jpg", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "VIIRS_CityLights_2012", "name": "NASAGIBS.ViirsEarthAtNight2012"}, "ModisTerraLSTDay": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 7, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Land_Surface_Temp_Day", "opacity": 0.75, "name": "NASAGIBS.ModisTerraLSTDay"}, "ModisTerraSnowCover": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 8, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Snow_Cover", "opacity": 0.75, "name": "NASAGIBS.ModisTerraSnowCover"}, "ModisTerraAOD": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 6, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Aerosol", "opacity": 0.75, "name": "NASAGIBS.ModisTerraAOD"}, "ModisTerraChlorophyll": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 7, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Chlorophyll_A", "opacity": 0.75, "name": "NASAGIBS.ModisTerraChlorophyll"}}, "NLS": {"url": "https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg", "attribution": "National Library of Scotland Historic Maps", "bounds": [[49.6, -12], [61.7, 3]], "min_zoom": 1, "max_zoom": 18, "subdomains": "0123", "name": "NLS"}, "JusticeMap": {"income": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "income", "name": "JusticeMap.income"}, "americanIndian": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "indian", "name": "JusticeMap.americanIndian"}, "asian": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "asian", "name": "JusticeMap.asian"}, "black": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "black", "name": "JusticeMap.black"}, "hispanic": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "hispanic", "name": "JusticeMap.hispanic"}, "multi": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "multi", "name": "JusticeMap.multi"}, "nonWhite": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "nonwhite", "name": "JusticeMap.nonWhite"}, "white": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "white", "name": "JusticeMap.white"}, "plurality": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "plural", "name": "JusticeMap.plurality"}}, "GeoportailFrance": {"plan": {"url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}", "attribution": "Geoportail France", "bounds": [[-75, -180], [81, 180]], "min_zoom": 2, "max_zoom": 18, "apikey": "choisirgeoportail", "format": "image/png", "style": "normal", "variant": "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2", "name": "GeoportailFrance.plan"}, "parcels": {"url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}", "attribution": "Geoportail France", "bounds": [[-75, -180], [81, 180]], "min_zoom": 2, "max_zoom": 20, "apikey": "choisirgeoportail", "format": "image/png", "style": "PCI vecteur", "variant": "CADASTRALPARCELS.PARCELLAIRE_EXPRESS", "name": "GeoportailFrance.parcels"}, "orthos": {"url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}", "attribution": "Geoportail France", "bounds": [[-75, -180], [81, 180]], "min_zoom": 2, "max_zoom": 19, "apikey": "choisirgeoportail", "format": "image/jpeg", "style": "normal", "variant": "ORTHOIMAGERY.ORTHOPHOTOS", "name": "GeoportailFrance.orthos"}}, "OneMapSG": {"Default": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Default", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Default"}, "Night": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Night", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Night"}, "Original": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Original", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Original"}, "Grey": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Grey", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Grey"}, "LandLot": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "LandLot", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.LandLot"}}, "USGS": {"USTopo": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}", "max_zoom": 20, "attribution": "Tiles courtesy of the U.S. Geological Survey", "name": "USGS.USTopo"}, "USImagery": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}", "max_zoom": 20, "attribution": "Tiles courtesy of the U.S. Geological Survey", "name": "USGS.USImagery"}, "USImageryTopo": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapServer/tile/{z}/{y}/{x}", "max_zoom": 20, "attribution": "Tiles courtesy of the U.S. Geological Survey", "name": "USGS.USImageryTopo"}}, "WaymarkedTrails": {"hiking": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "hiking", "name": "WaymarkedTrails.hiking"}, "cycling": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "cycling", "name": "WaymarkedTrails.cycling"}, "mtb": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "mtb", "name": "WaymarkedTrails.mtb"}, "slopes": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "slopes", "name": "WaymarkedTrails.slopes"}, "riding": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "riding", "name": "WaymarkedTrails.riding"}, "skating": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "skating", "name": "WaymarkedTrails.skating"}}, "OpenAIP": {"url": "http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.{ext}", "attribution": "openAIP Data (CC-BY-NC-SA)", "ext": "png", "min_zoom": 4, "max_zoom": 14, "tms": true, "detectRetina": true, "subdomains": "12", "name": "OpenAIP"}, "OpenSnowMap": {"pistes": {"url": "https://tiles.opensnowmap.org/{variant}/{z}/{x}/{y}.png", "min_zoom": 9, "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors & ODbL, (C) www.opensnowmap.org CC-BY-SA", "variant": "pistes", "name": "OpenSnowMap.pistes"}}}
\ No newline at end of file
+{"OpenStreetMap": {"Mapnik": {"url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors", "name": "OpenStreetMap.Mapnik"}, "DE": {"url": "https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "(C) OpenStreetMap contributors", "name": "OpenStreetMap.DE"}, "CH": {"url": "https://tile.osm.ch/switzerland/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "(C) OpenStreetMap contributors", "bounds": [[45, 5], [48, 11]], "name": "OpenStreetMap.CH"}, "France": {"url": "https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", "max_zoom": 20, "attribution": "(C) OpenStreetMap France | (C) OpenStreetMap contributors", "name": "OpenStreetMap.France"}, "HOT": {"url": "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors, Tiles style by Humanitarian OpenStreetMap Team hosted by OpenStreetMap France", "name": "OpenStreetMap.HOT"}, "BZH": {"url": "https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors, Tiles courtesy of Breton OpenStreetMap Team", "bounds": [[46.2, -5.5], [50, 0.7]], "name": "OpenStreetMap.BZH"}}, "OpenSeaMap": {"url": "https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png", "attribution": "Map data: (C) OpenSeaMap contributors", "name": "OpenSeaMap"}, "OpenPtMap": {"url": "http://openptmap.org/tiles/{z}/{x}/{y}.png", "max_zoom": 17, "attribution": "Map data: (C) OpenPtMap contributors", "name": "OpenPtMap"}, "OpenTopoMap": {"url": "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", "max_zoom": 17, "attribution": "Map data: (C) OpenStreetMap contributors, SRTM | Map style: (C) OpenTopoMap (CC-BY-SA)", "name": "OpenTopoMap"}, "OpenRailwayMap": {"url": "https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) OpenRailwayMap (CC-BY-SA)", "name": "OpenRailwayMap"}, "OpenFireMap": {"url": "http://openfiremap.org/hytiles/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) OpenFireMap (CC-BY-SA)", "name": "OpenFireMap"}, "SafeCast": {"url": "https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png", "max_zoom": 16, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) SafeCast (CC-BY-SA)", "name": "SafeCast"}, "Stadia": {"AlidadeSmooth": {"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.AlidadeSmooth"}, "AlidadeSmoothDark": {"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.AlidadeSmoothDark"}, "OSMBright": {"url": "https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.OSMBright"}, "Outdoors": {"url": "https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png", "max_zoom": 20, "attribution": "(C) Stadia Maps, (C) OpenMapTiles (C) OpenStreetMap contributors", "name": "Stadia.Outdoors"}}, "Thunderforest": {"OpenCycleMap": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "cycle", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.OpenCycleMap"}, "Transport": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "transport", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Transport"}, "TransportDark": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "transport-dark", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.TransportDark"}, "SpinalMap": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "spinal-map", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.SpinalMap"}, "Landscape": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "landscape", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Landscape"}, "Outdoors": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "outdoors", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Outdoors"}, "Pioneer": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "pioneer", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Pioneer"}, "MobileAtlas": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "mobile-atlas", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.MobileAtlas"}, "Neighbourhood": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "attribution": "(C) Thunderforest, (C) OpenStreetMap contributors", "variant": "neighbourhood", "apikey": "<insert your api key here>", "max_zoom": 22, "name": "Thunderforest.Neighbourhood"}}, "CyclOSM": {"url": "https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png", "max_zoom": 20, "attribution": "CyclOSM | Map data: (C) OpenStreetMap contributors", "name": "CyclOSM"}, "Hydda": {"Full": {"url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png", "max_zoom": 20, "variant": "full", "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors", "name": "Hydda.Full"}, "Base": {"url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png", "max_zoom": 20, "variant": "base", "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors", "name": "Hydda.Base"}, "RoadsAndLabels": {"url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png", "max_zoom": 20, "variant": "roads_and_labels", "attribution": "Tiles courtesy of OpenStreetMap Sweden -- Map data (C) OpenStreetMap contributors", "name": "Hydda.RoadsAndLabels"}}, "Jawg": {"Streets": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-streets", "accessToken": "<insert your access token here>", "name": "Jawg.Streets"}, "Terrain": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-terrain", "accessToken": "<insert your access token here>", "name": "Jawg.Terrain"}, "Sunny": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-sunny", "accessToken": "<insert your access token here>", "name": "Jawg.Sunny"}, "Dark": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-dark", "accessToken": "<insert your access token here>", "name": "Jawg.Dark"}, "Light": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-light", "accessToken": "<insert your access token here>", "name": "Jawg.Light"}, "Matrix": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "attribution": "(C) **Jawg** Maps (C) OpenStreetMap contributors", "min_zoom": 0, "max_zoom": 22, "subdomains": "abcd", "variant": "jawg-matrix", "accessToken": "<insert your access token here>", "name": "Jawg.Matrix"}}, "MapBox": {"url": "https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}", "attribution": "(C) Mapbox (C) OpenStreetMap contributors Improve this map", "tileSize": 512, "max_zoom": 18, "zoomOffset": -1, "id": "mapbox/streets-v11", "accessToken": "<insert your access token here>", "name": "MapBox"}, "MapTiler": {"Streets": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "streets", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Streets"}, "Basic": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "basic", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Basic"}, "Bright": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "bright", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Bright"}, "Pastel": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "pastel", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Pastel"}, "Positron": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "positron", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Positron"}, "Hybrid": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "hybrid", "ext": "jpg", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Hybrid"}, "Toner": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "toner", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Toner"}, "Topo": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "topo", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Topo"}, "Voyager": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "attribution": "(C) MapTiler (C) OpenStreetMap contributors", "variant": "voyager", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "min_zoom": 0, "max_zoom": 21, "name": "MapTiler.Voyager"}}, "Stamen": {"Toner": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner", "ext": "png", "name": "Stamen.Toner"}, "TonerBackground": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-background", "ext": "png", "name": "Stamen.TonerBackground"}, "TonerHybrid": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-hybrid", "ext": "png", "name": "Stamen.TonerHybrid"}, "TonerLines": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-lines", "ext": "png", "name": "Stamen.TonerLines"}, "TonerLabels": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-labels", "ext": "png", "name": "Stamen.TonerLabels"}, "TonerLite": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toner-lite", "ext": "png", "name": "Stamen.TonerLite"}, "Watercolor": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 1, "max_zoom": 16, "variant": "watercolor", "ext": "jpg", "name": "Stamen.Watercolor"}, "Terrain": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 18, "variant": "terrain", "ext": "png", "name": "Stamen.Terrain"}, "TerrainBackground": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 18, "variant": "terrain-background", "ext": "png", "name": "Stamen.TerrainBackground"}, "TerrainLabels": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 18, "variant": "terrain-labels", "ext": "png", "name": "Stamen.TerrainLabels"}, "TopOSMRelief": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toposm-color-relief", "ext": "jpg", "bounds": [[22, -132], [51, -56]], "name": "Stamen.TopOSMRelief"}, "TopOSMFeatures": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "attribution": "Map tiles by Stamen Design, CC BY 3.0 -- Map data (C) OpenStreetMap contributors", "subdomains": "abcd", "min_zoom": 0, "max_zoom": 20, "variant": "toposm-features", "ext": "png", "bounds": [[22, -132], [51, -56]], "opacity": 0.9, "name": "Stamen.TopOSMFeatures"}}, "TomTom": {"Basic": {"url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}", "variant": "basic", "max_zoom": 22, "attribution": "(C) 1992 - 2021 TomTom.", "subdomains": "abcd", "style": "main", "ext": "png", "apikey": "<insert your API key here>", "name": "TomTom.Basic"}, "Hybrid": {"url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}", "variant": "hybrid", "max_zoom": 22, "attribution": "(C) 1992 - 2021 TomTom.", "subdomains": "abcd", "style": "main", "ext": "png", "apikey": "<insert your API key here>", "name": "TomTom.Hybrid"}, "Labels": {"url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}", "variant": "labels", "max_zoom": 22, "attribution": "(C) 1992 - 2021 TomTom.", "subdomains": "abcd", "style": "main", "ext": "png", "apikey": "<insert your API key here>", "name": "TomTom.Labels"}}, "Esri": {"WorldStreetMap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Street_Map", "attribution": "Tiles (C) Esri -- Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012", "name": "Esri.WorldStreetMap"}, "DeLorme": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "Specialty/DeLorme_World_Base_Map", "attribution": "Tiles (C) Esri -- Copyright: (C)2012 DeLorme", "min_zoom": 1, "max_zoom": 11, "name": "Esri.DeLorme"}, "WorldTopoMap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Topo_Map", "attribution": "Tiles (C) Esri -- Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community", "name": "Esri.WorldTopoMap"}, "WorldImagery": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Imagery", "attribution": "Tiles (C) Esri -- Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community", "name": "Esri.WorldImagery"}, "WorldTerrain": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Terrain_Base", "attribution": "Tiles (C) Esri -- Source: USGS, Esri, TANA, DeLorme, and NPS", "max_zoom": 13, "name": "Esri.WorldTerrain"}, "WorldShadedRelief": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Shaded_Relief", "attribution": "Tiles (C) Esri -- Source: Esri", "max_zoom": 13, "name": "Esri.WorldShadedRelief"}, "WorldPhysical": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "World_Physical_Map", "attribution": "Tiles (C) Esri -- Source: US National Park Service", "max_zoom": 8, "name": "Esri.WorldPhysical"}, "OceanBasemap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "Ocean_Basemap", "attribution": "Tiles (C) Esri -- Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri", "max_zoom": 13, "name": "Esri.OceanBasemap"}, "NatGeoWorldMap": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "NatGeo_World_Map", "attribution": "Tiles (C) Esri -- National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC", "max_zoom": 16, "name": "Esri.NatGeoWorldMap"}, "WorldGrayCanvas": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "variant": "Canvas/World_Light_Gray_Base", "attribution": "Tiles (C) Esri -- Esri, DeLorme, NAVTEQ", "max_zoom": 16, "name": "Esri.WorldGrayCanvas"}}, "OpenWeatherMap": {"Clouds": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "clouds", "name": "OpenWeatherMap.Clouds"}, "CloudsClassic": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "clouds_cls", "name": "OpenWeatherMap.CloudsClassic"}, "Precipitation": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "precipitation", "name": "OpenWeatherMap.Precipitation"}, "PrecipitationClassic": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "precipitation_cls", "name": "OpenWeatherMap.PrecipitationClassic"}, "Rain": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "rain", "name": "OpenWeatherMap.Rain"}, "RainClassic": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "rain_cls", "name": "OpenWeatherMap.RainClassic"}, "Pressure": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "pressure", "name": "OpenWeatherMap.Pressure"}, "PressureContour": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "pressure_cntr", "name": "OpenWeatherMap.PressureContour"}, "Wind": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "wind", "name": "OpenWeatherMap.Wind"}, "Temperature": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "temp", "name": "OpenWeatherMap.Temperature"}, "Snow": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "max_zoom": 19, "attribution": "Map data (C) OpenWeatherMap", "apiKey": "<insert your api key here>", "opacity": 0.5, "variant": "snow", "name": "OpenWeatherMap.Snow"}}, "HERE": {"normalDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDay"}, "normalDayCustom": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.custom", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayCustom"}, "normalDayGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayGrey"}, "normalDayMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayMobile"}, "normalDayGreyMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayGreyMobile"}, "normalDayTransit": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayTransit"}, "normalDayTransitMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayTransitMobile"}, "normalDayTraffic": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "traffic", "variant": "normal.traffic.day", "max_zoom": 20, "type": "traffictile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalDayTraffic"}, "normalNight": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNight"}, "normalNightMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightMobile"}, "normalNightGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightGrey"}, "normalNightGreyMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightGreyMobile"}, "normalNightTransit": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightTransit"}, "normalNightTransitMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.night.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.normalNightTransitMobile"}, "reducedDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "reduced.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.reducedDay"}, "reducedNight": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "reduced.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.reducedNight"}, "basicMap": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "basetile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.basicMap"}, "mapLabels": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "labeltile", "language": "eng", "format": "png", "size": "256", "name": "HERE.mapLabels"}, "trafficFlow": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "traffic", "variant": "normal.day", "max_zoom": 20, "type": "flowtile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.trafficFlow"}, "carnavDayGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "carnav.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.carnavDayGrey"}, "hybridDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDay"}, "hybridDayMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayMobile"}, "hybridDayTransit": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayTransit"}, "hybridDayGrey": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "hybrid.grey.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayGrey"}, "hybridDayTraffic": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "traffic", "variant": "hybrid.traffic.day", "max_zoom": 20, "type": "traffictile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.hybridDayTraffic"}, "pedestrianDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "pedestrian.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.pedestrianDay"}, "pedestrianNight": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "pedestrian.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.pedestrianNight"}, "satelliteDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "satellite.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.satelliteDay"}, "terrainDay": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "terrain.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.terrainDay"}, "terrainDayMobile": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "aerial", "variant": "terrain.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HERE.terrainDayMobile"}}, "HEREv3": {"normalDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDay"}, "normalDayCustom": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.custom", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayCustom"}, "normalDayGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayGrey"}, "normalDayMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayMobile"}, "normalDayGreyMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayGreyMobile"}, "normalDayTransit": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayTransit"}, "normalDayTransitMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalDayTransitMobile"}, "normalNight": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNight"}, "normalNightMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightMobile"}, "normalNightGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightGrey"}, "normalNightGreyMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.grey.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightGreyMobile"}, "normalNightTransit": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightTransit"}, "normalNightTransitMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.night.transit.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.normalNightTransitMobile"}, "reducedDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "reduced.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.reducedDay"}, "reducedNight": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "reduced.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.reducedNight"}, "basicMap": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "basetile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.basicMap"}, "mapLabels": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day", "max_zoom": 20, "type": "labeltile", "language": "eng", "format": "png", "size": "256", "name": "HEREv3.mapLabels"}, "trafficFlow": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "traffic", "variant": "normal.day", "max_zoom": 20, "type": "flowtile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.trafficFlow"}, "carnavDayGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "carnav.day.grey", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.carnavDayGrey"}, "hybridDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDay"}, "hybridDayMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDayMobile"}, "hybridDayTransit": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.day.transit", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDayTransit"}, "hybridDayGrey": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "hybrid.grey.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.hybridDayGrey"}, "pedestrianDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "pedestrian.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.pedestrianDay"}, "pedestrianNight": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "pedestrian.night", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.pedestrianNight"}, "satelliteDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "satellite.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.satelliteDay"}, "terrainDay": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "terrain.day", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.terrainDay"}, "terrainDayMobile": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "attribution": "Map (C) 1987-2021 HERE", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "aerial", "variant": "terrain.day.mobile", "max_zoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256", "name": "HEREv3.terrainDayMobile"}}, "FreeMapSK": {"url": "https://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg", "min_zoom": 8, "max_zoom": 16, "subdomains": "abcd", "bounds": [[47.204642, 15.996093], [49.830896, 22.576904]], "attribution": "(C) OpenStreetMap contributors, vizualization CC-By-SA 2.0 Freemap.sk", "name": "FreeMapSK"}, "MtbMap": {"url": "http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png", "attribution": "(C) OpenStreetMap contributors & USGS", "name": "MtbMap"}, "CartoDB": {"Positron": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "light_all", "name": "CartoDB.Positron"}, "PositronNoLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "light_nolabels", "name": "CartoDB.PositronNoLabels"}, "PositronOnlyLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "light_only_labels", "name": "CartoDB.PositronOnlyLabels"}, "DarkMatter": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "dark_all", "name": "CartoDB.DarkMatter"}, "DarkMatterNoLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "dark_nolabels", "name": "CartoDB.DarkMatterNoLabels"}, "DarkMatterOnlyLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "dark_only_labels", "name": "CartoDB.DarkMatterOnlyLabels"}, "Voyager": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager", "name": "CartoDB.Voyager"}, "VoyagerNoLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager_nolabels", "name": "CartoDB.VoyagerNoLabels"}, "VoyagerOnlyLabels": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager_only_labels", "name": "CartoDB.VoyagerOnlyLabels"}, "VoyagerLabelsUnder": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "attribution": "(C) OpenStreetMap contributors (C) CARTO", "subdomains": "abcd", "max_zoom": 19, "variant": "rastertiles/voyager_labels_under", "name": "CartoDB.VoyagerLabelsUnder"}}, "HikeBike": {"HikeBike": {"url": "https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 19, "attribution": "(C) OpenStreetMap contributors", "variant": "hikebike", "name": "HikeBike.HikeBike"}, "HillShading": {"url": "https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 15, "attribution": "(C) OpenStreetMap contributors", "variant": "hillshading", "name": "HikeBike.HillShading"}}, "BasemapAT": {"basemap": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 20, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "png", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "geolandbasemap", "name": "BasemapAT.basemap"}, "grau": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "png", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapgrau", "name": "BasemapAT.grau"}, "overlay": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "png", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapoverlay", "name": "BasemapAT.overlay"}, "terrain": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "grau", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapgelaende", "name": "BasemapAT.terrain"}, "surface": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "grau", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmapoberflaeche", "name": "BasemapAT.surface"}, "highdpi": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 19, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmaphidpi", "name": "BasemapAT.highdpi"}, "orthofoto": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "max_zoom": 20, "attribution": "Datenquelle: basemap.at", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "jpeg", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "bmaporthofoto30cm", "name": "BasemapAT.orthofoto"}}, "nlmaps": {"standaard": {"url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "variant": "brtachtergrondkaart", "name": "nlmaps.standaard"}, "pastel": {"url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "variant": "brtachtergrondkaartpastel", "name": "nlmaps.pastel"}, "grijs": {"url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "variant": "brtachtergrondkaartgrijs", "name": "nlmaps.grijs"}, "luchtfoto": {"url": "https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/2018_ortho25/EPSG:3857/{z}/{x}/{y}.png", "min_zoom": 6, "max_zoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens (C) Kadaster", "name": "nlmaps.luchtfoto"}}, "NASAGIBS": {"ModisTerraTrueColorCR": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 9, "format": "jpg", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_CorrectedReflectance_TrueColor", "name": "NASAGIBS.ModisTerraTrueColorCR"}, "ModisTerraBands367CR": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 9, "format": "jpg", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_CorrectedReflectance_Bands367", "name": "NASAGIBS.ModisTerraBands367CR"}, "ViirsEarthAtNight2012": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 8, "format": "jpg", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "VIIRS_CityLights_2012", "name": "NASAGIBS.ViirsEarthAtNight2012"}, "ModisTerraLSTDay": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 7, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Land_Surface_Temp_Day", "opacity": 0.75, "name": "NASAGIBS.ModisTerraLSTDay"}, "ModisTerraSnowCover": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 8, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Snow_Cover", "opacity": 0.75, "name": "NASAGIBS.ModisTerraSnowCover"}, "ModisTerraAOD": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 6, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Aerosol", "opacity": 0.75, "name": "NASAGIBS.ModisTerraAOD"}, "ModisTerraChlorophyll": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{max_zoom}/{z}/{y}/{x}.{format}", "attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (ESDIS) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "min_zoom": 1, "max_zoom": 7, "format": "png", "time": "", "tilematrixset": "GoogleMapsCompatible_Level", "variant": "MODIS_Terra_Chlorophyll_A", "opacity": 0.75, "name": "NASAGIBS.ModisTerraChlorophyll"}}, "NLS": {"url": "https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg", "attribution": "National Library of Scotland Historic Maps", "bounds": [[49.6, -12], [61.7, 3]], "min_zoom": 1, "max_zoom": 18, "subdomains": "0123", "name": "NLS"}, "JusticeMap": {"income": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "income", "name": "JusticeMap.income"}, "americanIndian": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "indian", "name": "JusticeMap.americanIndian"}, "asian": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "asian", "name": "JusticeMap.asian"}, "black": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "black", "name": "JusticeMap.black"}, "hispanic": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "hispanic", "name": "JusticeMap.hispanic"}, "multi": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "multi", "name": "JusticeMap.multi"}, "nonWhite": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "nonwhite", "name": "JusticeMap.nonWhite"}, "white": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "white", "name": "JusticeMap.white"}, "plurality": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "attribution": "Justice Map", "size": "county", "bounds": [[14, -180], [72, -56]], "variant": "plural", "name": "JusticeMap.plurality"}}, "GeoportailFrance": {"plan": {"url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}", "attribution": "Geoportail France", "bounds": [[-75, -180], [81, 180]], "min_zoom": 2, "max_zoom": 18, "apikey": "choisirgeoportail", "format": "image/png", "style": "normal", "variant": "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2", "name": "GeoportailFrance.plan"}, "parcels": {"url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}", "attribution": "Geoportail France", "bounds": [[-75, -180], [81, 180]], "min_zoom": 2, "max_zoom": 20, "apikey": "choisirgeoportail", "format": "image/png", "style": "PCI vecteur", "variant": "CADASTRALPARCELS.PARCELLAIRE_EXPRESS", "name": "GeoportailFrance.parcels"}, "orthos": {"url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}", "attribution": "Geoportail France", "bounds": [[-75, -180], [81, 180]], "min_zoom": 2, "max_zoom": 19, "apikey": "choisirgeoportail", "format": "image/jpeg", "style": "normal", "variant": "ORTHOIMAGERY.ORTHOPHOTOS", "name": "GeoportailFrance.orthos"}}, "OneMapSG": {"Default": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Default", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Default"}, "Night": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Night", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Night"}, "Original": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Original", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Original"}, "Grey": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "Grey", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.Grey"}, "LandLot": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "variant": "LandLot", "min_zoom": 11, "max_zoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "![](https://docs.onemap.sg/maps/images/oneMap64-01.png) New OneMap | Map data (C) contributors, Singapore Land Authority", "name": "OneMapSG.LandLot"}}, "USGS": {"USTopo": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}", "max_zoom": 20, "attribution": "Tiles courtesy of the U.S. Geological Survey", "name": "USGS.USTopo"}, "USImagery": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}", "max_zoom": 20, "attribution": "Tiles courtesy of the U.S. Geological Survey", "name": "USGS.USImagery"}, "USImageryTopo": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapServer/tile/{z}/{y}/{x}", "max_zoom": 20, "attribution": "Tiles courtesy of the U.S. Geological Survey", "name": "USGS.USImageryTopo"}}, "WaymarkedTrails": {"hiking": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "hiking", "name": "WaymarkedTrails.hiking"}, "cycling": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "cycling", "name": "WaymarkedTrails.cycling"}, "mtb": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "mtb", "name": "WaymarkedTrails.mtb"}, "slopes": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "slopes", "name": "WaymarkedTrails.slopes"}, "riding": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "riding", "name": "WaymarkedTrails.riding"}, "skating": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors | Map style: (C) waymarkedtrails.org (CC-BY-SA)", "variant": "skating", "name": "WaymarkedTrails.skating"}}, "OpenAIP": {"url": "http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.{ext}", "attribution": "openAIP Data (CC-BY-NC-SA)", "ext": "png", "min_zoom": 4, "max_zoom": 14, "tms": true, "detectRetina": true, "subdomains": "12", "name": "OpenAIP"}, "OpenSnowMap": {"pistes": {"url": "https://tiles.opensnowmap.org/{variant}/{z}/{x}/{y}.png", "min_zoom": 9, "max_zoom": 18, "attribution": "Map data: (C) OpenStreetMap contributors & ODbL, (C) www.opensnowmap.org CC-BY-SA", "variant": "pistes", "name": "OpenSnowMap.pistes"}}, "AzureMaps": {"MicrosoftImagery": {"url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}", "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.", "apiVersion": "2.0", "variant": "microsoft.imagery", "subscriptionKey": "<insert your subscription key here>", "language": "en-US", "name": "AzureMaps.MicrosoftImagery"}, "MicrosoftBaseDarkGrey": {"url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}", "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.", "apiVersion": "2.0", "variant": "microsoft.base.darkgrey", "subscriptionKey": "<insert your subscription key here>", "language": "en-US", "name": "AzureMaps.MicrosoftBaseDarkGrey"}, "MicrosoftBaseRoad": {"url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}", "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.", "apiVersion": "2.0", "variant": "microsoft.base.road", "subscriptionKey": "<insert your subscription key here>", "language": "en-US", "name": "AzureMaps.MicrosoftBaseRoad"}, "MicrosoftBaseHybridRoad": {"url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}", "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.", "apiVersion": "2.0", "variant": "microsoft.base.hybrid.road", "subscriptionKey": "<insert your subscription key here>", "language": "en-US", "name": "AzureMaps.MicrosoftBaseHybridRoad"}, "MicrosoftTerraMain": {"url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}&subscription-key={subscriptionKey}", "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview for details.", "apiVersion": "2.0", "variant": "microsoft.terra.main", "subscriptionKey": "<insert your subscription key here>", "language": "en-US", "name": "AzureMaps.MicrosoftTerraMain"}, "MicrosoftWeatherInfraredMain": {"url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&timeStamp={timeStamp}&language={language}&subscription-key={subscriptionKey}", "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.", "apiVersion": "2.0", "variant": "microsoft.weather.infrared.main", "subscriptionKey": "<insert your subscription key here>", "language": "en-US", "timeStamp": "2021-05-08T09:03:00Z", "name": "AzureMaps.MicrosoftWeatherInfraredMain"}, "MicrosoftWeatherRadarMain": {"url": "https://atlas.microsoft.com/map/tile?api-version={apiVersion}&tilesetId={variant}&x={x}&y={y}&zoom={z}&timeStamp={timeStamp}&language={language}&subscription-key={subscriptionKey}", "attribution": "See https://docs.microsoft.com/en-US/rest/api/maps/renderv2/getmaptilepreview#uri-parameters for details.", "apiVersion": "2.0", "variant": "microsoft.weather.radar.main", "subscriptionKey": "<insert your subscription key here>", "language": "en-US", "timeStamp": "2021-05-08T09:03:00Z", "name": "AzureMaps.MicrosoftWeatherRadarMain"}}}
\ No newline at end of file
diff --git a/xyzservices/lib.py b/xyzservices/lib.py
index 720e51c..48294f6 100644
--- a/xyzservices/lib.py
+++ b/xyzservices/lib.py
@@ -2,6 +2,7 @@
 Utilities to support XYZservices
 """
 import json
+import uuid
 
 
 class Bunch(dict):
@@ -16,6 +17,45 @@ class Bunch(dict):
     def __dir__(self):
         return self.keys()
 
+    def _repr_html_(self, inside=False):
+
+        children = ""
+        for key in self.keys():
+            if isinstance(self[key], TileProvider):
+                obj = "xyzservices.TileProvider"
+            else:
+                obj = "xyzservices.Bunch"
+            uid = str(uuid.uuid4())
+            children += f"""
+            <li class="xyz-child">
+                <input type="checkbox" id="{uid}" class="xyz-checkbox"/>
+                <label for="{uid}">{key} <span>{obj}</span></label>
+                <div class="xyz-inside">
+                    {self[key]._repr_html_(inside=True)}
+                </div>
+            </li>
+            """
+
+        style = "" if inside else f"<style>{CSS_STYLE}</style>"
+        html = f"""
+        <div>
+        {style}
+            <div class="xyz-wrap">
+                <div class="xyz-header">
+                    <div class="xyz-obj">xyzservices.Bunch</div>
+                    <div class="xyz-name">{len(self)} items</div>
+                </div>
+                <div class="xyz-details">
+                    <ul class="xyz-collapsible">
+                        {children}
+                    </ul>
+                </div>
+            </div>
+        </div>
+        """
+
+        return html
+
 
 class TileProvider(Bunch):
     """
@@ -28,6 +68,32 @@ class TileProvider(Bunch):
         new.update(kwargs)
         return new
 
+    def _repr_html_(self, inside=False):
+        provider_info = ""
+        for key, val in self.items():
+            if key != "name":
+                provider_info += f"<dt><span>{key}</span></dt><dd>{val}</dd>"
+
+        style = "" if inside else f"<style>{CSS_STYLE}</style>"
+        html = f"""
+        <div>
+        {style}
+            <div class="xyz-wrap">
+                <div class="xyz-header">
+                    <div class="xyz-obj">xyzservices.TileProvider</div>
+                    <div class="xyz-name">{self.name}</div>
+                </div>
+                <div class="xyz-details">
+                    <dl class="xyz-attrs">
+                        {provider_info}
+                    </dl>
+                </div>
+            </div>
+        </div>
+        """
+
+        return html
+
 
 def _load_json(f):
 
@@ -47,3 +113,114 @@ def _load_json(f):
             )
 
     return providers
+
+
+CSS_STYLE = """
+/* CSS stylesheet for displaying xyzservices objects in Jupyter.*/
+.xyz-header {
+    padding-top: 6px;
+    padding-bottom: 6px;
+    margin-bottom: 4px;
+    border-bottom: solid 1px #ddd;
+}
+
+.xyz-header>div {
+    display: inline;
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+.xyz-obj,
+.xyz-name {
+    margin-left: 2px;
+    margin-right: 10px;
+}
+
+.xyz-obj {
+    color: #555;
+}
+
+.xyz-name {
+    color: #000;
+}
+
+.xyz-attrs {
+    grid-column: 1 / -1;
+}
+
+dl.xyz-attrs {
+    padding: 0;
+    margin: 0;
+    display: grid;
+    grid-template-columns: 125px auto;
+}
+
+.xyz-attrs dt,
+dd {
+    padding: 0;
+    margin: 0;
+    float: left;
+    padding-right: 10px;
+    width: auto;
+}
+
+.xyz-attrs dt {
+    font-weight: normal;
+    grid-column: 1;
+}
+
+.xyz-attrs dt:hover span {
+    display: inline-block;
+    background: #fff;
+    padding-right: 10px;
+}
+
+.xyz-attrs dd {
+    grid-column: 2;
+    white-space: pre-wrap;
+    word-break: break-all;
+}
+
+.xyz-details ul>li>label>span {
+    color: #555;
+    padding-left: 10px;
+}
+
+.xyz-inside {
+    display: none;
+}
+
+.xyz-checkbox:checked~.xyz-inside {
+    display: contents;
+}
+
+.xyz-collapsible li>input {
+    display: none;
+}
+
+.xyz-collapsible>li>label {
+    cursor: pointer;
+}
+
+.xyz-collapsible>li>label:hover {
+    color: #555;
+}
+
+ul.xyz-collapsible {
+    list-style: none!important;
+    padding-left: 20px!important;
+}
+
+.xyz-checkbox+label:before {
+    content: '►';
+    font-size: 11px;
+}
+
+.xyz-checkbox:checked+label:before {
+    content: '▼';
+}
+
+.xyz-wrap {
+    margin-bottom: 10px;
+}
+"""
diff --git a/xyzservices/provider_sources/leaflet-providers-raw.json b/xyzservices/provider_sources/leaflet-providers-raw.json
deleted file mode 100644
index e7b8f07..0000000
--- a/xyzservices/provider_sources/leaflet-providers-raw.json
+++ /dev/null
@@ -1,1 +0,0 @@
-{"OpenStreetMap": {"url": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", "options": {"maxZoom": 19, "attribution": "&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors"}, "variants": {"Mapnik": {}, "DE": {"url": "https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png", "options": {"maxZoom": 18}}, "CH": {"url": "https://tile.osm.ch/switzerland/{z}/{x}/{y}.png", "options": {"maxZoom": 18, "bounds": [[45, 5], [48, 11]]}}, "France": {"url": "https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png", "options": {"maxZoom": 20, "attribution": "&copy; OpenStreetMap France | {attribution.OpenStreetMap}"}}, "HOT": {"url": "https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png", "options": {"attribution": "{attribution.OpenStreetMap}, Tiles style by <a href=\"https://www.hotosm.org/\" target=\"_blank\">Humanitarian OpenStreetMap Team</a> hosted by <a href=\"https://openstreetmap.fr/\" target=\"_blank\">OpenStreetMap France</a>"}}, "BZH": {"url": "https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png", "options": {"attribution": "{attribution.OpenStreetMap}, Tiles courtesy of <a href=\"http://www.openstreetmap.bzh/\" target=\"_blank\">Breton OpenStreetMap Team</a>", "bounds": [[46.2, -5.5], [50, 0.7]]}}}}, "OpenSeaMap": {"url": "https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png", "options": {"attribution": "Map data: &copy; <a href=\"http://www.openseamap.org\">OpenSeaMap</a> contributors"}}, "OpenPtMap": {"url": "http://openptmap.org/tiles/{z}/{x}/{y}.png", "options": {"maxZoom": 17, "attribution": "Map data: &copy; <a href=\"http://www.openptmap.org\">OpenPtMap</a> contributors"}}, "OpenTopoMap": {"url": "https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png", "options": {"maxZoom": 17, "attribution": "Map data: {attribution.OpenStreetMap}, <a href=\"http://viewfinderpanoramas.org\">SRTM</a> | Map style: &copy; <a href=\"https://opentopomap.org\">OpenTopoMap</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA</a>)"}}, "OpenRailwayMap": {"url": "https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png", "options": {"maxZoom": 19, "attribution": "Map data: {attribution.OpenStreetMap} | Map style: &copy; <a href=\"https://www.OpenRailwayMap.org\">OpenRailwayMap</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA</a>)"}}, "OpenFireMap": {"url": "http://openfiremap.org/hytiles/{z}/{x}/{y}.png", "options": {"maxZoom": 19, "attribution": "Map data: {attribution.OpenStreetMap} | Map style: &copy; <a href=\"http://www.openfiremap.org\">OpenFireMap</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA</a>)"}}, "SafeCast": {"url": "https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png", "options": {"maxZoom": 16, "attribution": "Map data: {attribution.OpenStreetMap} | Map style: &copy; <a href=\"https://blog.safecast.org/about/\">SafeCast</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA</a>)"}}, "Stadia": {"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png", "options": {"maxZoom": 20, "attribution": "&copy; <a href=\"https://stadiamaps.com/\">Stadia Maps</a>, &copy; <a href=\"https://openmaptiles.org/\">OpenMapTiles</a> &copy; <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors"}, "variants": {"AlidadeSmooth": {"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png"}, "AlidadeSmoothDark": {"url": "https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/{z}/{x}/{y}{r}.png"}, "OSMBright": {"url": "https://tiles.stadiamaps.com/tiles/osm_bright/{z}/{x}/{y}{r}.png"}, "Outdoors": {"url": "https://tiles.stadiamaps.com/tiles/outdoors/{z}/{x}/{y}{r}.png"}}}, "Thunderforest": {"url": "https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}", "options": {"attribution": "&copy; <a href=\"http://www.thunderforest.com/\">Thunderforest</a>, {attribution.OpenStreetMap}", "variant": "cycle", "apikey": "<insert your api key here>", "maxZoom": 22}, "variants": {"OpenCycleMap": "cycle", "Transport": {"options": {"variant": "transport"}}, "TransportDark": {"options": {"variant": "transport-dark"}}, "SpinalMap": {"options": {"variant": "spinal-map"}}, "Landscape": "landscape", "Outdoors": "outdoors", "Pioneer": "pioneer", "MobileAtlas": "mobile-atlas", "Neighbourhood": "neighbourhood"}}, "CyclOSM": {"url": "https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png", "options": {"maxZoom": 20, "attribution": "<a href=\"https://github.com/cyclosm/cyclosm-cartocss-style/releases\" title=\"CyclOSM - Open Bicycle render\">CyclOSM</a> | Map data: {attribution.OpenStreetMap}"}}, "Hydda": {"url": "https://{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png", "options": {"maxZoom": 20, "variant": "full", "attribution": "Tiles courtesy of <a href=\"http://openstreetmap.se/\" target=\"_blank\">OpenStreetMap Sweden</a> &mdash; Map data {attribution.OpenStreetMap}"}, "variants": {"Full": "full", "Base": "base", "RoadsAndLabels": "roads_and_labels"}}, "Jawg": {"url": "https://{s}.tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}", "options": {"attribution": "<a href=\"http://jawg.io\" title=\"Tiles Courtesy of Jawg Maps\" target=\"_blank\">&copy; <b>Jawg</b>Maps</a> {attribution.OpenStreetMap}", "minZoom": 0, "maxZoom": 22, "subdomains": "abcd", "variant": "jawg-terrain", "accessToken": "<insert your access token here>"}, "variants": {"Streets": "jawg-streets", "Terrain": "jawg-terrain", "Sunny": "jawg-sunny", "Dark": "jawg-dark", "Light": "jawg-light", "Matrix": "jawg-matrix"}}, "MapBox": {"url": "https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}", "options": {"attribution": "&copy; <a href=\"https://www.mapbox.com/about/maps/\" target=\"_blank\">Mapbox</a> {attribution.OpenStreetMap} <a href=\"https://www.mapbox.com/map-feedback/\" target=\"_blank\">Improve this map</a>", "tileSize": 512, "maxZoom": 18, "zoomOffset": -1, "id": "mapbox/streets-v11", "accessToken": "<insert your access token here>"}}, "MapTiler": {"url": "https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}", "options": {"attribution": "<a href=\"https://www.maptiler.com/copyright/\" target=\"_blank\">&copy; MapTiler</a> <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">&copy; OpenStreetMap contributors</a>", "variant": "streets", "ext": "png", "key": "<insert your MapTiler Cloud API key here>", "tileSize": 512, "zoomOffset": -1, "minZoom": 0, "maxZoom": 21}, "variants": {"Streets": "streets", "Basic": "basic", "Bright": "bright", "Pastel": "pastel", "Positron": "positron", "Hybrid": {"options": {"variant": "hybrid", "ext": "jpg"}}, "Toner": "toner", "Topo": "topo", "Voyager": "voyager"}}, "Stamen": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}{r}.{ext}", "options": {"attribution": "Map tiles by <a href=\"http://stamen.com\">Stamen Design</a>, <a href=\"http://creativecommons.org/licenses/by/3.0\">CC BY 3.0</a> &mdash; Map data {attribution.OpenStreetMap}", "subdomains": "abcd", "minZoom": 0, "maxZoom": 20, "variant": "toner", "ext": "png"}, "variants": {"Toner": "toner", "TonerBackground": "toner-background", "TonerHybrid": "toner-hybrid", "TonerLines": "toner-lines", "TonerLabels": "toner-labels", "TonerLite": "toner-lite", "Watercolor": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}", "options": {"variant": "watercolor", "ext": "jpg", "minZoom": 1, "maxZoom": 16}}, "Terrain": {"options": {"variant": "terrain", "minZoom": 0, "maxZoom": 18}}, "TerrainBackground": {"options": {"variant": "terrain-background", "minZoom": 0, "maxZoom": 18}}, "TerrainLabels": {"options": {"variant": "terrain-labels", "minZoom": 0, "maxZoom": 18}}, "TopOSMRelief": {"url": "https://stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}", "options": {"variant": "toposm-color-relief", "ext": "jpg", "bounds": [[22, -132], [51, -56]]}}, "TopOSMFeatures": {"options": {"variant": "toposm-features", "bounds": [[22, -132], [51, -56]], "opacity": 0.9}}}}, "TomTom": {"url": "https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}", "options": {"variant": "basic", "maxZoom": 22, "attribution": "<a href=\"https://tomtom.com\" target=\"_blank\">&copy;  1992 - 2021 TomTom.</a> ", "subdomains": "abcd", "style": "main", "ext": "png", "apikey": "<insert your API key here>"}, "variants": {"Basic": "basic", "Hybrid": "hybrid", "Labels": "labels"}}, "Esri": {"url": "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", "options": {"variant": "World_Street_Map", "attribution": "Tiles &copy; Esri"}, "variants": {"WorldStreetMap": {"options": {"attribution": "{attribution.Esri} &mdash; Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012"}}, "DeLorme": {"options": {"variant": "Specialty/DeLorme_World_Base_Map", "minZoom": 1, "maxZoom": 11, "attribution": "{attribution.Esri} &mdash; Copyright: &copy;2012 DeLorme"}}, "WorldTopoMap": {"options": {"variant": "World_Topo_Map", "attribution": "{attribution.Esri} &mdash; Esri, DeLorme, NAVTEQ, TomTom, Intermap, iPC, USGS, FAO, NPS, NRCAN, GeoBase, Kadaster NL, Ordnance Survey, Esri Japan, METI, Esri China (Hong Kong), and the GIS User Community"}}, "WorldImagery": {"options": {"variant": "World_Imagery", "attribution": "{attribution.Esri} &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community"}}, "WorldTerrain": {"options": {"variant": "World_Terrain_Base", "maxZoom": 13, "attribution": "{attribution.Esri} &mdash; Source: USGS, Esri, TANA, DeLorme, and NPS"}}, "WorldShadedRelief": {"options": {"variant": "World_Shaded_Relief", "maxZoom": 13, "attribution": "{attribution.Esri} &mdash; Source: Esri"}}, "WorldPhysical": {"options": {"variant": "World_Physical_Map", "maxZoom": 8, "attribution": "{attribution.Esri} &mdash; Source: US National Park Service"}}, "OceanBasemap": {"options": {"variant": "Ocean_Basemap", "maxZoom": 13, "attribution": "{attribution.Esri} &mdash; Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri"}}, "NatGeoWorldMap": {"options": {"variant": "NatGeo_World_Map", "maxZoom": 16, "attribution": "{attribution.Esri} &mdash; National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC"}}, "WorldGrayCanvas": {"options": {"variant": "Canvas/World_Light_Gray_Base", "maxZoom": 16, "attribution": "{attribution.Esri} &mdash; Esri, DeLorme, NAVTEQ"}}}}, "OpenWeatherMap": {"url": "http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}", "options": {"maxZoom": 19, "attribution": "Map data &copy; <a href=\"http://openweathermap.org\">OpenWeatherMap</a>", "apiKey": "<insert your api key here>", "opacity": 0.5}, "variants": {"Clouds": "clouds", "CloudsClassic": "clouds_cls", "Precipitation": "precipitation", "PrecipitationClassic": "precipitation_cls", "Rain": "rain", "RainClassic": "rain_cls", "Pressure": "pressure", "PressureContour": "pressure_cntr", "Wind": "wind", "Temperature": "temp", "Snow": "snow"}}, "HERE": {"url": "https://{s}.{base}.maps.api.here.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?app_id={app_id}&app_code={app_code}&lg={language}", "options": {"attribution": "Map &copy; 1987-2021 <a href=\"http://developer.here.com\">HERE</a>", "subdomains": "1234", "mapID": "newest", "app_id": "<insert your app_id here>", "app_code": "<insert your app_code here>", "base": "base", "variant": "normal.day", "maxZoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256"}, "variants": {"normalDay": "normal.day", "normalDayCustom": "normal.day.custom", "normalDayGrey": "normal.day.grey", "normalDayMobile": "normal.day.mobile", "normalDayGreyMobile": "normal.day.grey.mobile", "normalDayTransit": "normal.day.transit", "normalDayTransitMobile": "normal.day.transit.mobile", "normalDayTraffic": {"options": {"variant": "normal.traffic.day", "base": "traffic", "type": "traffictile"}}, "normalNight": "normal.night", "normalNightMobile": "normal.night.mobile", "normalNightGrey": "normal.night.grey", "normalNightGreyMobile": "normal.night.grey.mobile", "normalNightTransit": "normal.night.transit", "normalNightTransitMobile": "normal.night.transit.mobile", "reducedDay": "reduced.day", "reducedNight": "reduced.night", "basicMap": {"options": {"type": "basetile"}}, "mapLabels": {"options": {"type": "labeltile", "format": "png"}}, "trafficFlow": {"options": {"base": "traffic", "type": "flowtile"}}, "carnavDayGrey": "carnav.day.grey", "hybridDay": {"options": {"base": "aerial", "variant": "hybrid.day"}}, "hybridDayMobile": {"options": {"base": "aerial", "variant": "hybrid.day.mobile"}}, "hybridDayTransit": {"options": {"base": "aerial", "variant": "hybrid.day.transit"}}, "hybridDayGrey": {"options": {"base": "aerial", "variant": "hybrid.grey.day"}}, "hybridDayTraffic": {"options": {"variant": "hybrid.traffic.day", "base": "traffic", "type": "traffictile"}}, "pedestrianDay": "pedestrian.day", "pedestrianNight": "pedestrian.night", "satelliteDay": {"options": {"base": "aerial", "variant": "satellite.day"}}, "terrainDay": {"options": {"base": "aerial", "variant": "terrain.day"}}, "terrainDayMobile": {"options": {"base": "aerial", "variant": "terrain.day.mobile"}}}}, "HEREv3": {"url": "https://{s}.{base}.maps.ls.hereapi.com/maptile/2.1/{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?apiKey={apiKey}&lg={language}", "options": {"attribution": "Map &copy; 1987-2021 <a href=\"http://developer.here.com\">HERE</a>", "subdomains": "1234", "mapID": "newest", "apiKey": "<insert your apiKey here>", "base": "base", "variant": "normal.day", "maxZoom": 20, "type": "maptile", "language": "eng", "format": "png8", "size": "256"}, "variants": {"normalDay": "normal.day", "normalDayCustom": "normal.day.custom", "normalDayGrey": "normal.day.grey", "normalDayMobile": "normal.day.mobile", "normalDayGreyMobile": "normal.day.grey.mobile", "normalDayTransit": "normal.day.transit", "normalDayTransitMobile": "normal.day.transit.mobile", "normalNight": "normal.night", "normalNightMobile": "normal.night.mobile", "normalNightGrey": "normal.night.grey", "normalNightGreyMobile": "normal.night.grey.mobile", "normalNightTransit": "normal.night.transit", "normalNightTransitMobile": "normal.night.transit.mobile", "reducedDay": "reduced.day", "reducedNight": "reduced.night", "basicMap": {"options": {"type": "basetile"}}, "mapLabels": {"options": {"type": "labeltile", "format": "png"}}, "trafficFlow": {"options": {"base": "traffic", "type": "flowtile"}}, "carnavDayGrey": "carnav.day.grey", "hybridDay": {"options": {"base": "aerial", "variant": "hybrid.day"}}, "hybridDayMobile": {"options": {"base": "aerial", "variant": "hybrid.day.mobile"}}, "hybridDayTransit": {"options": {"base": "aerial", "variant": "hybrid.day.transit"}}, "hybridDayGrey": {"options": {"base": "aerial", "variant": "hybrid.grey.day"}}, "pedestrianDay": "pedestrian.day", "pedestrianNight": "pedestrian.night", "satelliteDay": {"options": {"base": "aerial", "variant": "satellite.day"}}, "terrainDay": {"options": {"base": "aerial", "variant": "terrain.day"}}, "terrainDayMobile": {"options": {"base": "aerial", "variant": "terrain.day.mobile"}}}}, "FreeMapSK": {"url": "https://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg", "options": {"minZoom": 8, "maxZoom": 16, "subdomains": "abcd", "bounds": [[47.204642, 15.996093], [49.830896, 22.576904]], "attribution": "{attribution.OpenStreetMap}, vizualization CC-By-SA 2.0 <a href=\"http://freemap.sk\">Freemap.sk</a>"}}, "MtbMap": {"url": "http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png", "options": {"attribution": "{attribution.OpenStreetMap} &amp; USGS"}}, "CartoDB": {"url": "https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png", "options": {"attribution": "{attribution.OpenStreetMap} &copy; <a href=\"https://carto.com/attributions\">CARTO</a>", "subdomains": "abcd", "maxZoom": 19, "variant": "light_all"}, "variants": {"Positron": "light_all", "PositronNoLabels": "light_nolabels", "PositronOnlyLabels": "light_only_labels", "DarkMatter": "dark_all", "DarkMatterNoLabels": "dark_nolabels", "DarkMatterOnlyLabels": "dark_only_labels", "Voyager": "rastertiles/voyager", "VoyagerNoLabels": "rastertiles/voyager_nolabels", "VoyagerOnlyLabels": "rastertiles/voyager_only_labels", "VoyagerLabelsUnder": "rastertiles/voyager_labels_under"}}, "HikeBike": {"url": "https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png", "options": {"maxZoom": 19, "attribution": "{attribution.OpenStreetMap}", "variant": "hikebike"}, "variants": {"HikeBike": {}, "HillShading": {"options": {"maxZoom": 15, "variant": "hillshading"}}}}, "BasemapAT": {"url": "https://maps{s}.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}", "options": {"maxZoom": 19, "attribution": "Datenquelle: <a href=\"https://www.basemap.at\">basemap.at</a>", "subdomains": ["", "1", "2", "3", "4"], "type": "normal", "format": "png", "bounds": [[46.35877, 8.782379], [49.037872, 17.189532]], "variant": "geolandbasemap"}, "variants": {"basemap": {"options": {"maxZoom": 20, "variant": "geolandbasemap"}}, "grau": "bmapgrau", "overlay": "bmapoverlay", "terrain": {"options": {"variant": "bmapgelaende", "type": "grau", "format": "jpeg"}}, "surface": {"options": {"variant": "bmapoberflaeche", "type": "grau", "format": "jpeg"}}, "highdpi": {"options": {"variant": "bmaphidpi", "format": "jpeg"}}, "orthofoto": {"options": {"maxZoom": 20, "variant": "bmaporthofoto30cm", "format": "jpeg"}}}}, "nlmaps": {"url": "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/{variant}/EPSG:3857/{z}/{x}/{y}.png", "options": {"minZoom": 6, "maxZoom": 19, "bounds": [[50.5, 3.25], [54, 7.6]], "attribution": "Kaartgegevens &copy; <a href=\"kadaster.nl\">Kadaster</a>"}, "variants": {"standaard": "brtachtergrondkaart", "pastel": "brtachtergrondkaartpastel", "grijs": "brtachtergrondkaartgrijs", "luchtfoto": {"url": "https://geodata.nationaalgeoregister.nl/luchtfoto/rgb/wmts/2018_ortho25/EPSG:3857/{z}/{x}/{y}.png"}}}, "NASAGIBS": {"url": "https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}", "options": {"attribution": "Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System (<a href=\"https://earthdata.nasa.gov\">ESDIS</a>) with funding provided by NASA/HQ.", "bounds": [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]], "minZoom": 1, "maxZoom": 9, "format": "jpg", "time": "", "tilematrixset": "GoogleMapsCompatible_Level"}, "variants": {"ModisTerraTrueColorCR": "MODIS_Terra_CorrectedReflectance_TrueColor", "ModisTerraBands367CR": "MODIS_Terra_CorrectedReflectance_Bands367", "ViirsEarthAtNight2012": {"options": {"variant": "VIIRS_CityLights_2012", "maxZoom": 8}}, "ModisTerraLSTDay": {"options": {"variant": "MODIS_Terra_Land_Surface_Temp_Day", "format": "png", "maxZoom": 7, "opacity": 0.75}}, "ModisTerraSnowCover": {"options": {"variant": "MODIS_Terra_Snow_Cover", "format": "png", "maxZoom": 8, "opacity": 0.75}}, "ModisTerraAOD": {"options": {"variant": "MODIS_Terra_Aerosol", "format": "png", "maxZoom": 6, "opacity": 0.75}}, "ModisTerraChlorophyll": {"options": {"variant": "MODIS_Terra_Chlorophyll_A", "format": "png", "maxZoom": 7, "opacity": 0.75}}}}, "NLS": {"url": "https://nls-{s}.tileserver.com/nls/{z}/{x}/{y}.jpg", "options": {"attribution": "<a href=\"http://geo.nls.uk/maps/\">National Library of Scotland Historic Maps</a>", "bounds": [[49.6, -12], [61.7, 3]], "minZoom": 1, "maxZoom": 18, "subdomains": "0123"}}, "JusticeMap": {"url": "http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png", "options": {"attribution": "<a href=\"http://www.justicemap.org/terms.php\">Justice Map</a>", "size": "county", "bounds": [[14, -180], [72, -56]]}, "variants": {"income": "income", "americanIndian": "indian", "asian": "asian", "black": "black", "hispanic": "hispanic", "multi": "multi", "nonWhite": "nonwhite", "white": "white", "plurality": "plural"}}, "GeoportailFrance": {"url": "https://wxs.ign.fr/{apikey}/geoportail/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}", "options": {"attribution": "<a target=\"_blank\" href=\"https://www.geoportail.gouv.fr/\">Geoportail France</a>", "bounds": [[-75, -180], [81, 180]], "minZoom": 2, "maxZoom": 18, "apikey": "choisirgeoportail", "format": "image/png", "style": "normal", "variant": "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2"}, "variants": {"plan": "GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2", "parcels": {"options": {"variant": "CADASTRALPARCELS.PARCELLAIRE_EXPRESS", "style": "PCI vecteur", "maxZoom": 20}}, "orthos": {"options": {"maxZoom": 19, "format": "image/jpeg", "variant": "ORTHOIMAGERY.ORTHOPHOTOS"}}}}, "OneMapSG": {"url": "https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png", "options": {"variant": "Default", "minZoom": 11, "maxZoom": 18, "bounds": [[1.56073, 104.11475], [1.16, 103.502]], "attribution": "<img src=\"https://docs.onemap.sg/maps/images/oneMap64-01.png\" style=\"height:20px;width:20px;\"/> New OneMap | Map data &copy; contributors, <a href=\"http://SLA.gov.sg\">Singapore Land Authority</a>"}, "variants": {"Default": "Default", "Night": "Night", "Original": "Original", "Grey": "Grey", "LandLot": "LandLot"}}, "USGS": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}", "options": {"maxZoom": 20, "attribution": "Tiles courtesy of the <a href=\"https://usgs.gov/\">U.S. Geological Survey</a>"}, "variants": {"USTopo": {}, "USImagery": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}"}, "USImageryTopo": {"url": "https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapServer/tile/{z}/{y}/{x}"}}}, "WaymarkedTrails": {"url": "https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png", "options": {"maxZoom": 18, "attribution": "Map data: {attribution.OpenStreetMap} | Map style: &copy; <a href=\"https://waymarkedtrails.org\">waymarkedtrails.org</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-SA</a>)"}, "variants": {"hiking": "hiking", "cycling": "cycling", "mtb": "mtb", "slopes": "slopes", "riding": "riding", "skating": "skating"}}, "OpenAIP": {"url": "http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.{ext}", "options": {"attribution": "<a href=\"https://www.openaip.net/\">openAIP Data</a> (<a href=\"https://creativecommons.org/licenses/by-sa/3.0/\">CC-BY-NC-SA</a>)", "ext": "png", "minZoom": 4, "maxZoom": 14, "tms": true, "detectRetina": true, "subdomains": "12"}}, "OpenSnowMap": {"url": "https://tiles.opensnowmap.org/{variant}/{z}/{x}/{y}.png", "options": {"minZoom": 9, "maxZoom": 18, "attribution": "Map data: {attribution.OpenStreetMap} & ODbL, &copy; <a href=\"https://www.opensnowmap.org/iframes/data.html\">www.opensnowmap.org</a> <a href=\"https://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>"}, "variants": {"pistes": "pistes"}}}
\ No newline at end of file
diff --git a/xyzservices/providers.py b/xyzservices/providers.py
index b027551..1a2e449 100644
--- a/xyzservices/providers.py
+++ b/xyzservices/providers.py
@@ -1,17 +1,15 @@
 import importlib.resources
 import os, sys
 
-from . import provider_sources
+from . import data
 from .lib import _load_json
 
-data = os.path.join(sys.prefix, "share", "xyzservices", "providers.json")
+data_path = os.path.join(sys.prefix, "share", "xyzservices", "providers.json")
 
-if os.path.exists(data):
-    with open(data, "r") as f:
+if os.path.exists(data_path):
+    with open(data_path, "r") as f:
         json = f.read()
 else:
-    json = importlib.resources.read_text(
-        provider_sources, "leaflet-providers-parsed.json"
-    )
+    json = importlib.resources.read_text(data, "providers.json")
 
 providers = _load_json(json)


Test patch:
diff --git a/tests/test_providers.py b/tests/test_providers.py
index 8965632..5005905 100644
--- a/tests/test_providers.py
+++ b/tests/test_providers.py
@@ -1,6 +1,7 @@
 import pytest
 
 import xyzservices.providers as xyz
+from xyzservices import TileProvider, Bunch
 
 
 def check_provider(provider):
@@ -21,3 +22,52 @@ def test_minimal_provider_metadata(provider_name):
     else:
         for variant in xyz[provider_name]:
             check_provider(xyz[provider_name][variant])
+
+
+def test_html_repr():
+    provider = TileProvider(
+        {
+            "url": "https://myserver.com/tiles/{z}/{x}/{y}.png",
+            "attribution": "(C) xyzservices",
+            "name": "my_public_provider",
+        }
+    )
+    provider2 = TileProvider(
+        {
+            "url": "https://myserver.com/tiles2/{z}/{x}/{y}.png",
+            "attribution": "(C) xyzservices",
+            "name": "my_public_provider2",
+        }
+    )
+
+    provider_strings = [
+        '<div class="xyz-wrap">',
+        '<div class="xyz-header">',
+        '<div class="xyz-obj">xyzservices.TileProvider</div>',
+        '<div class="xyz-name">my_public_provider</div>',
+        '<div class="xyz-details">',
+        '<dl class="xyz-attrs">',
+        "<dt><span>url</span></dt><dd>https://myserver.com/tiles/{z}/{x}/{y}.png</dd>",
+        "<dt><span>attribution</span></dt><dd>(C) xyzservices</dd>",
+    ]
+
+    for html_string in provider_strings:
+        assert html_string in provider._repr_html_()
+
+    bunch = Bunch({"first": provider, "second": provider2})
+
+    bunch_strings = [
+        '<div class="xyz-obj">xyzservices.Bunch</div>',
+        '<div class="xyz-name">2 items</div>',
+        '<ul class="xyz-collapsible">',
+        '<li class="xyz-child">',
+        "<span>xyzservices.TileProvider</span>",
+        '<div class="xyz-inside">',
+    ]
+
+    bunch_repr = bunch._repr_html_()
+    for html_string in provider_strings + bunch_strings:
+        assert html_string in bunch_repr
+    assert bunch_repr.count('<li class="xyz-child">') == 2
+    assert bunch_repr.count('<div class="xyz-wrap">') == 3
+    assert bunch_repr.count('<div class="xyz-header">') == 3