PageSourceSearch

https://sci1031.github.io/sci1031-v2/libs/leaflet-providers-3.0.0/leaflet-providers.js

js sci1031.github.io collected 2026-10-03 09:55:48 UTC 34,804 bytes, 1,121 lines download raw bytes

vendor: 7,031 bytes, lines 1-210
1(function(root, factory) {
2	if (typeof define === 'function' && define.amd) {
3		// AMD. Register as an anonymous module.
4		define(['leaflet'], factory);
5	} else if (typeof modules === 'object' && module.exports) {
6		// define a Common JS module that relies on 'leaflet'
7		module.exports = factory(require('leaflet'));
8	} else {
9		// Assume Leaflet is loaded into global object L already
10		factory(L);
11	}
12}(this, function(L) {
13	'use strict';
14
15	L.TileLayer.Provider = L.TileLayer.extend({
16		initialize: function(arg, options) {
17			var providers = L.TileLayer.Provider.providers;
18
19			var parts = arg.split('.');
20
21			var providerName = parts[0];
22			var variantName = parts[1];
23
24			if (!providers[providerName]) {
25				throw 'No such provider (' + providerName + ')';
26			}
27
28			var provider = {
29				url: providers[providerName].url,
30				options: providers[providerName].options
31			};
32
33			// overwrite values in provider from variant.
34			if (variantName && 'variants' in providers[providerName]) {
35				if (!(variantName in providers[providerName].variants)) {
36					throw 'No such variant of ' + providerName + ' (' + variantName + ')';
37				}
38				var variant = providers[providerName].variants[variantName];
39				var variantOptions;
40				if (typeof variant === 'string') {
41					variantOptions = {
42						variant: variant
43					};
44				} else {
45					variantOptions = variant.options;
46				}
47				provider = {
48					url: variant.url || provider.url,
49					options: L.Util.extend({}, provider.options, variantOptions)
50				};
51			}
52
53			// replace attribution placeholders with their values from toplevel provider attribution,
54			// recursively
55			var attributionReplacer = function(attr) {
56				if (attr.indexOf('{attribution.') === -1) {
57					return attr;
58				}
59				return attr.replace(
60					/\{attribution.(\w*)\}/g,
61					function(match, attributionName) {
62						return attributionReplacer(providers[attributionName].options.attribution);
63					}
64				);
65			};
66			provider.options.attribution = attributionReplacer(provider.options.attribution);
67
68			// Compute final options combining provider options with any user overrides
69			var layerOpts = L.Util.extend({}, provider.options, options);
70			L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts);
71		}
72	});
73
74	/**
75	 * Definition of providers.
76	 * see http://leafletjs.com/reference.html#tilelayer for options in the options map.
77	 */
78
79	L.TileLayer.Provider.providers = {
80		OpenStreetMap: {
81			url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
82			options: {
83				maxZoom: 19,
84				attribution:
85					'&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
86			},
87			variants: {
88				Mapnik: {},
89				DE: {
90					url: 'https://tile.openstreetmap.de/{z}/{x}/{y}.png',
91					options: {
92						maxZoom: 18
93					}
94				},
95				CH: {
96					url: 'https://tile.osm.ch/switzerland/{z}/{x}/{y}.png',
97					options: {
98						maxZoom: 18,
99						bounds: [[45, 5], [48, 11]]
100					}
101				},
102				France: {
103					url: 'https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png',
104					options: {
105						maxZoom: 20,
106						attribution: '&copy; OpenStreetMap France | {attribution.OpenStreetMap}'
107					}
108				},
109				HOT: {
110					url: 'https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
111					options: {
112						attribution:
113							'{attribution.OpenStreetMap}, ' +
114							'Tiles style by <a href="https://www.hotosm.org/" target="_blank">Humanitarian OpenStreetMap Team</a> ' +
115							'hosted by <a href="https://openstreetmap.fr/" target="_blank">OpenStreetMap France</a>'
116					}
117				},
118				BZH: {
119					url: 'https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png',
120					options: {
121						attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://www.openstreetmap.bzh/" target="_blank">Breton OpenStreetMap Team</a>',
122						bounds: [[46.2, -5.5], [50, 0.7]]
123					}
124				},
125				CAT: {
126					url: 'https://tile.openstreetmap.bzh/ca/{z}/{x}/{y}.png',
127					options: {
128						attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="https://www.openstreetmap.cat" target="_blank">Breton OpenStreetMap Team</a>',
129					}
130				}
131			}
132		},
133		MapTilesAPI: {
134			url: 'https://maptiles.p.rapidapi.com/{variant}/{z}/{x}/{y}.png?rapidapi-key={apikey}',
135			options: {
136				attribution:
137					'&copy; <a href="http://www.maptilesapi.com/">MapTiles API</a>, {attribution.OpenStreetMap}',
138				variant: 'en/map/v1',
139				// Get your own MapTiles API access token here : https://www.maptilesapi.com/
140				// NB : this is a demonstration key that comes with no guarantee and not to be used in production
141				apikey: '<insert your api key here>',
142				maxZoom: 19
143			},
144			variants: {
145				OSMEnglish: {
146					options: {
147						variant: 'en/map/v1'
148					}
149				},
150				OSMFrancais: {
151					options: {
152						variant: 'fr/map/v1'
153					}
154				},
155				OSMEspagnol: {
156					options: {
157						variant: 'es/map/v1'
158					}
159				}
160			}
161		},
162		OpenSeaMap: {
163			url: 'https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png',
164			options: {
165				attribution: 'Map data: &copy; <a href="http://www.openseamap.org">OpenSeaMap</a> contributors'
166			}
167		},
168		OPNVKarte: {
169			url: 'https://tileserver.memomaps.de/tilegen/{z}/{x}/{y}.png',
170			options: {
171				maxZoom: 18,
172				attribution: 'Map <a href="https://memomaps.de/">memomaps.de</a> <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, map data {attribution.OpenStreetMap}'
173			}
174		},
175		OpenTopoMap: {
176			url: 'https://{s}.tile.opentopomap.org/{z}/{x}/{y}.png',
177			options: {
178				maxZoom: 17,
179				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>)'
180			}
181		},
182		OpenRailwayMap: {
183			url: 'https://{s}.tiles.openrailwaymap.org/standard/{z}/{x}/{y}.png',
184			options: {
185				maxZoom: 19,
186				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>)'
187			}
188		},
189		OpenFireMap: {
190			url: 'http://openfiremap.org/hytiles/{z}/{x}/{y}.png',
191			options: {
192				maxZoom: 19,
193				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>)'
194			}
195		},
196		SafeCast: {
197			url: 'https://s3.amazonaws.com/te512.safecast.org/{z}/{x}/{y}.png',
198			options: {
199				maxZoom: 16,
200				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>)'
201			}
202		},
203		Stadia: {
204			url: 'https://tiles.stadiamaps.com/tiles/{variant}/{z}/{x}/{y}{r}.{ext}',
205			options: {
206				minZoom: 0,
207				maxZoom: 20,
208				attribution:
209					'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
210					'&copy; <a href="https://openmaptiles.org/" target="_blank">
210OpenMapTiles</a> ' +
211					'{attribution.OpenStreetMap}',
212				variant: 'alidade_smooth',
213				ext: 'png'
214			},
215			variants: {
216				AlidadeSmooth: 'alidade_smooth',
217				AlidadeSmoothDark: 'alidade_smooth_dark',
218				AlidadeSatellite: {
219					options: {
220						attribution:
221						  '&copy; CNES, Distribution Airbus DS, © Airbus DS, © PlanetObserver (Contains Copernicus Data) | ' +
222							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
223							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
224							'{attribution.OpenStreetMap}',
225						variant: 'alidade_satellite',
226						ext: 'jpg',
227					}
228				},
229				OSMBright: 'osm_bright',
230				Outdoors: 'outdoors',
231				StamenToner: {
232					options: {
233						attribution:
234							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
235							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
236							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
237							'{attribution.OpenStreetMap}',
238						variant: 'stamen_toner'
239					}
240				},
241				StamenTonerBackground: {
242					options: {
243						attribution:
244							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
245							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
246							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
247							'{attribution.OpenStreetMap}',
248						variant: 'stamen_toner_background'
249					}
250				},
251				StamenTonerLines: {
252					options: {
253						attribution:
254							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
255							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
256							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
257							'{attribution.OpenStreetMap}',
258						variant: 'stamen_toner_lines'
259					}
260				},
261				StamenTonerLabels: {
262					options: {
263						attribution:
264							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
265							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
266							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
267							'{attribution.OpenStreetMap}',
268						variant: 'stamen_toner_labels'
269					}
270				},
271				StamenTonerLite: {
272					options: {
273						attribution:
274							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
275							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
276							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
277							'{attribution.OpenStreetMap}',
278						variant: 'stamen_toner_lite'
279					}
280				},
281				StamenWatercolor: {
282					url: 'https://tiles.stadiamaps.com/tiles/{variant}/{z}/{x}/{y}.{ext}',
283					options: {
284						attribution:
285							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
286							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
287							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
288							'{attribution.OpenStreetMap}',
289						variant: 'stamen_watercolor',
290						ext: 'jpg',
291						minZoom: 1,
292						maxZoom: 16
293					}
294				},
295				StamenTerrain: {
296					options: {
297						attribution:
298							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
299							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
300							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
301							'{attribution.OpenStreetMap}',
302						variant: 'stamen_terrain',
303						minZoom: 0,
304						maxZoom: 18
305					}
306				},
307				StamenTerrainBackground: {
308					options: {
309						attribution:
310							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
311							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
312							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
313							'{attribution.OpenStreetMap}',
314						variant: 'stamen_terrain_background',
315						minZoom: 0,
316						maxZoom: 18
317					}
318				},
319				StamenTerrainLabels: {
320					options: {
321						attribution:
322							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
323							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
324							'&copy; <a href="https://openmaptiles.org/" target="_blank">
vendor: 14,596 bytes, lines 324-846
324OpenMapTiles</a> ' +
325							'{attribution.OpenStreetMap}',
326						variant: 'stamen_terrain_labels',
327						minZoom: 0,
328						maxZoom: 18
329					}
330				},
331				StamenTerrainLines: {
332					options: {
333						attribution:
334							'&copy; <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> ' +
335							'&copy; <a href="https://www.stamen.com/" target="_blank">Stamen Design</a> ' +
336							'&copy; <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> ' +
337							'{attribution.OpenStreetMap}',
338						variant: 'stamen_terrain_lines',
339						minZoom: 0,
340						maxZoom: 18
341					}
342				}
343			}
344		},
345		Thunderforest: {
346			url: 'https://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}{r}.png?apikey={apikey}',
347			options: {
348				attribution:
349					'&copy; <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}',
350				variant: 'cycle',
351				apikey: '<insert your api key here>',
352				maxZoom: 22
353			},
354			variants: {
355				OpenCycleMap: 'cycle',
356				Transport: {
357					options: {
358						variant: 'transport'
359					}
360				},
361				TransportDark: {
362					options: {
363						variant: 'transport-dark'
364					}
365				},
366				SpinalMap: {
367					options: {
368						variant: 'spinal-map'
369					}
370				},
371				Landscape: 'landscape',
372				Outdoors: 'outdoors',
373				Pioneer: 'pioneer',
374				MobileAtlas: 'mobile-atlas',
375				Neighbourhood: 'neighbourhood'
376			}
377		},
378		BaseMapDE: {
379			url: 'https://sgx.geodatenzentrum.de/wmts_basemapde/tile/1.0.0/{variant}/default/GLOBAL_WEBMERCATOR/{z}/{y}/{x}.png',
380			options: {
381				attribution: 'Map data: &copy; <a href="http://www.govdata.de/dl-de/by-2-0">dl-de/by-2-0</a>',
382				variant: 'de_basemapde_web_raster_farbe',
383			},
384			variants: {
385				Color: 'de_basemapde_web_raster_farbe',
386				Grey: 'de_basemapde_web_raster_grau'
387			}
388		},
389		CyclOSM: {
390			url: 'https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png',
391			options: {
392				maxZoom: 20,
393				attribution: '<a href="https://github.com/cyclosm/cyclosm-cartocss-style/releases" title="CyclOSM - Open Bicycle render">CyclOSM</a> | Map data: {attribution.OpenStreetMap}'
394			}
395		},
396		Jawg: {
397			url: 'https://tile.jawg.io/{variant}/{z}/{x}/{y}{r}.png?access-token={accessToken}',
398			options: {
399				attribution:
400					'<a href="https://jawg.io" title="Tiles Courtesy of Jawg Maps" target="_blank">&copy; <b>Jawg</b>Maps</a> ' +
401					'{attribution.OpenStreetMap}',
402				minZoom: 0,
403				maxZoom: 22,
404				variant: 'jawg-streets',
405				// Get your own Jawg access token here : https://www.jawg.io/lab/
406				// NB : this is a demonstration key that comes with no guarantee
407				accessToken: '<insert your access token here>',
408			},
409			variants: {
410				Streets: 'jawg-streets',
411				Terrain: 'jawg-terrain',
412				Lagoon: 'jawg-lagoon',
413				Sunny: 'jawg-sunny',
414				Dark: 'jawg-dark',
415				Light: 'jawg-light',
416				Matrix: 'jawg-matrix'
417			}
418		},
419		MapBox: {
420			url: 'https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}{r}?access_token={accessToken}',
421			options: {
422				attribution:
423					'&copy; <a href="https://www.mapbox.com/about/maps/" target="_blank">Mapbox</a> ' +
424					'{attribution.OpenStreetMap} ' +
425					'<a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a>',
426				tileSize: 512,
427				maxZoom: 18,
428				zoomOffset: -1,
429				id: 'mapbox/streets-v11',
430				accessToken: '<insert your access token here>',
431			}
432		},
433		MapTiler: {
434			url: 'https://api.maptiler.com/maps/{variant}/{z}/{x}/{y}{r}.{ext}?key={key}',
435			options: {
436				attribution:
437					'<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>',
438				variant: 'streets',
439				ext: 'png',
440				key: '<insert your MapTiler Cloud API key here>',
441				tileSize: 512,
442				zoomOffset: -1,
443				minZoom: 0,
444				maxZoom: 21
445			},
446			variants: {
447				Streets: 'streets-v2',
448				Basic: 'basic-v2',
449				Bright: 'bright-v2',
450				Pastel: 'pastel',
451				Positron: 'positron',
452				Hybrid: {
453					options: {
454						variant: 'hybrid',
455						ext: 'jpg'
456					}
457				},
458				Toner: 'toner-v2',
459				Topo: 'topo-v2',
460				Voyager: 'voyager-v2',
461				Ocean: 'ocean',
462				Backdrop: 'backdrop',
463				Dataviz: 'dataviz',
464				DatavizLight: 'dataviz-light',
465				DatavizDark: 'dataviz-dark',
466				Aquarelle: {
467					options: {
468						variant: 'aquarelle',
469						ext: 'webp'
470					}
471				},
472				Landscape: 'landscape',
473				Openstreetmap: {
474					options: {
475						variant: 'openstreetmap',
476						ext: 'jpg'
477					}
478				},
479				Outdoor: 'outdoor-v2',
480				Satellite: {
481					options: {
482						variant: 'satellite',
483						ext: 'jpg'
484					}
485				},
486				Winter: 'winter-v2',
487			}
488		},
489		TomTom: {
490			url: 'https://{s}.api.tomtom.com/map/1/tile/{variant}/{style}/{z}/{x}/{y}.{ext}?key={apikey}',
491			options: {
492				variant: 'basic',
493				maxZoom: 22,
494				attribution:
495					'<a href="https://tomtom.com" target="_blank">&copy;  1992 - ' + new Date().getFullYear() + ' TomTom.</a> ',
496				subdomains: 'abcd',
497				style: 'main',
498				ext: 'png',
499				apikey: '<insert your API key here>',
500			},
501			variants: {
502				Basic: 'basic',
503				Hybrid: 'hybrid',
504				Labels: 'labels'
505			}
506		},
507		Esri: {
508			url: 'https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}',
509			options: {
510				variant: 'World_Street_Map',
511				attribution: 'Tiles &copy; Esri'
512			},
513			variants: {
514				WorldStreetMap: {
515					options: {
516						attribution:
517							'{attribution.Esri} &mdash; ' +
518							'Source: Esri, DeLorme, NAVTEQ, USGS, Intermap, iPC, NRCAN, Esri Japan, METI, Esri China (Hong Kong), Esri (Thailand), TomTom, 2012'
519					}
520				},
521				WorldTopoMap: {
522					options: {
523						variant: 'World_Topo_Map',
524						attribution:
525							'{attribution.Esri} &mdash; ' +
526							'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'
527					}
528				},
529				WorldImagery: {
530					options: {
531						variant: 'World_Imagery',
532						attribution:
533							'{attribution.Esri} &mdash; ' +
534							'Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community'
535					}
536				},
537				WorldTerrain: {
538					options: {
539						variant: 'World_Terrain_Base',
540						maxZoom: 13,
541						attribution:
542							'{attribution.Esri} &mdash; ' +
543							'Source: USGS, Esri, TANA, DeLorme, and NPS'
544					}
545				},
546				WorldShadedRelief: {
547					options: {
548						variant: 'World_Shaded_Relief',
549						maxZoom: 13,
550						attribution: '{attribution.Esri} &mdash; Source: Esri'
551					}
552				},
553				WorldPhysical: {
554					options: {
555						variant: 'World_Physical_Map',
556						maxZoom: 8,
557						attribution: '{attribution.Esri} &mdash; Source: US National Park Service'
558					}
559				},
560				OceanBasemap: {
561					options: {
562						variant: 'Ocean/World_Ocean_Base',
563						maxZoom: 13,
564						attribution: '{attribution.Esri} &mdash; Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri'
565					}
566				},
567				NatGeoWorldMap: {
568					options: {
569						variant: 'NatGeo_World_Map',
570						maxZoom: 16,
571						attribution: '{attribution.Esri} &mdash; National Geographic, Esri, DeLorme, NAVTEQ, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, iPC'
572					}
573				},
574				WorldGrayCanvas: {
575					options: {
576						variant: 'Canvas/World_Light_Gray_Base',
577						maxZoom: 16,
578						attribution: '{attribution.Esri} &mdash; Esri, DeLorme, NAVTEQ'
579					}
580				}
581			}
582		},
583		OpenWeatherMap: {
584			url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png?appid={apiKey}',
585			options: {
586				maxZoom: 19,
587				attribution: 'Map data &copy; <a href="http://openweathermap.org">OpenWeatherMap</a>',
588				apiKey: '<insert your api key here>',
589				opacity: 0.5
590			},
591			variants: {
592				Clouds: 'clouds',
593				CloudsClassic: 'clouds_cls',
594				Precipitation: 'precipitation',
595				PrecipitationClassic: 'precipitation_cls',
596				Rain: 'rain',
597				RainClassic: 'rain_cls',
598				Pressure: 'pressure',
599				PressureContour: 'pressure_cntr',
600				Wind: 'wind',
601				Temperature: 'temp',
602				Snow: 'snow'
603			}
604		},
605
606		HERE: {
607
608			/*
609			 * HERE maps API Version 3.
610			 * documentation at: https://www.here.com/docs/bundle/raster-tile-api-developer-guide/page/README.html
611			 * These basemaps are free, but you need an API key. Please sign up at
612			 * https://platform.here.com/portal/
613			 * Subscription remains for free, pricing details can be found here: https://www.here.com/get-started/pricing
614			 * Version 3 deprecates the app_id and app_code access in favor of apiKey
615			 */
616			url:
617				'https://maps.hereapi.com/v3/base/mc/' + // new base url for HERE maptile v3 api
618				'{z}/{x}/{y}/{format}?style={variant}&size={size}' + // slightly modified parameters
619				'&apiKey={app_id}&lg={language}', // replacing app-id with apikey
620			options: {
621				attribution:
622					'Map &copy; 1987-' + new Date().getFullYear() + ' <a href="http://platform.here.com">HERE</a>',
623				subdomains: '1234',
624				mapID: 'newest',
625				apiKey: '<insert your apiKey here>', // switching from appid and appcode to apikey
626				base: 'base',
627				variant: 'explore.day',
628				maxZoom: 20,
629				type: 'maptile',
630				language: 'eng',
631				format: 'png8',
632				size: '256'
633			},
634			variants: {
635				exploreDay: 'explore.day',
636				liteDay: 'lite.day',
637				logisticsDay: 'logistics.day',
638				topoDay: 'topo.day',
639				logisticsNight: 'logistics.night',
640				exploreNight: 'explore.night',
641				topoNight: 'topo.night',
642				liteNight: 'lite.night',
643				exploreSatelliteDay: 'explore.satellite.day',
644				liteSatelliteDay: 'lite.satellite.day',
645				logisticsSatelliteDay: 'logistics.satellite.day',
646				basicMap: {
647					options: {
648						type: 'basetile'
649					}
650				},
651				mapLabels: {
652					options: {
653						type: 'labeltile',
654						format: 'png'
655					}
656				},
657				trafficFlow: {
658					options: {
659						base: 'traffic',
660						type: 'flowtile'
661					}
662				},
663				carnavDayGrey: 'carnav.day.grey',
664				hybridDay: {
665					options: {
666						base: 'aerial',
667						variant: 'hybrid.day'
668					}
669				},
670				hybridDayMobile: {
671					options: {
672						base: 'aerial',
673						variant: 'hybrid.day.mobile'
674					}
675				},
676				hybridDayTransit: {
677					options: {
678						base: 'aerial',
679						variant: 'hybrid.day.transit'
680					}
681				},
682				hybridDayGrey: {
683					options: {
684						base: 'aerial',
685						variant: 'hybrid.grey.day'
686					}
687				},
688				pedestrianDay: 'pedestrian.day',
689				pedestrianNight: 'pedestrian.night',
690				satelliteDay: {
691					options: {
692						base: 'aerial',
693						variant: 'satellite.day'
694					}
695				},
696				terrainDay: {
697					options: {
698						base: 'aerial',
699						variant: 'terrain.day'
700					}
701				},
702				terrainDayMobile: {
703					options: {
704						base: 'aerial',
705						variant: 'terrain.day.mobile'
706					}
707				}
708			}
709		},
710		FreeMapSK: {
711			url: 'https://{s}.freemap.sk/T/{z}/{x}/{y}.jpeg',
712			options: {
713				minZoom: 8,
714				maxZoom: 16,
715				subdomains: 'abcd',
716				bounds: [[47.204642, 15.996093], [49.830896, 22.576904]],
717				attribution:
718					'{attribution.OpenStreetMap}, visualization CC-By-SA 2.0 <a href="http://freemap.sk">Freemap.sk</a>'
719			}
720		},
721		MtbMap: {
722			url: 'http://tile.mtbmap.cz/mtbmap_tiles/{z}/{x}/{y}.png',
723			options: {
724				attribution:
725					'{attribution.OpenStreetMap} &amp; USGS'
726			}
727		},
728		CartoDB: {
729			url: 'https://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}{r}.png',
730			options: {
731				attribution: '{attribution.OpenStreetMap} &copy; <a href="https://carto.com/attributions">CARTO</a>',
732				subdomains: 'abcd',
733				maxZoom: 20,
734				variant: 'light_all'
735			},
736			variants: {
737				Positron: 'light_all',
738				PositronNoLabels: 'light_nolabels',
739				PositronOnlyLabels: 'light_only_labels',
740				DarkMatter: 'dark_all',
741				DarkMatterNoLabels: 'dark_nolabels',
742				DarkMatterOnlyLabels: 'dark_only_labels',
743				Voyager: 'rastertiles/voyager',
744				VoyagerNoLabels: 'rastertiles/voyager_nolabels',
745				VoyagerOnlyLabels: 'rastertiles/voyager_only_labels',
746				VoyagerLabelsUnder: 'rastertiles/voyager_labels_under'
747			}
748		},
749		HikeBike: {
750			url: 'https://tiles.wmflabs.org/{variant}/{z}/{x}/{y}.png',
751			options: {
752				maxZoom: 19,
753				attribution: '{attribution.OpenStreetMap}',
754				variant: 'hikebike'
755			},
756			variants: {
757				HikeBike: {},
758				HillShading: {
759					options: {
760						maxZoom: 15,
761						variant: 'hillshading'
762					}
763				}
764			}
765		},
766		BasemapAT: {
767			url: 'https://mapsneu.wien.gv.at/basemap/{variant}/{type}/google3857/{z}/{y}/{x}.{format}',
768			options: {
769				maxZoom: 19,
770				attribution: 'Datenquelle: <a href="https://www.basemap.at">basemap.at</a>',
771				type: 'normal',
772				format: 'png',
773				bounds: [[46.358770, 8.782379], [49.037872, 17.189532]],
774				variant: 'geolandbasemap'
775			},
776			variants: {
777				basemap: {
778					options: {
779						maxZoom: 20, // currently only in Vienna
780						variant: 'geolandbasemap'
781					}
782				},
783				grau: 'bmapgrau',
784				overlay: 'bmapoverlay',
785				terrain: {
786					options: {
787						variant: 'bmapgelaende',
788						type: 'grau',
789						format: 'jpeg'
790					}
791				},
792				surface: {
793					options: {
794						variant: 'bmapoberflaeche',
795						type: 'grau',
796						format: 'jpeg'
797					}
798				},
799				highdpi: {
800					options: {
801						variant: 'bmaphidpi',
802						format: 'jpeg'
803					}
804				},
805				orthofoto: {
806					options: {
807						maxZoom: 20, // currently only in Vienna
808						variant: 'bmaporthofoto30cm',
809						format: 'jpeg'
810					}
811				}
812			}
813		},
814		nlmaps: {
815			url: 'https://service.pdok.nl/brt/achtergrondkaart/wmts/v2_0/{variant}/EPSG:3857/{z}/{x}/{y}.png',
816			options: {
817				minZoom: 6,
818				maxZoom: 19,
819				bounds: [[50.5, 3.25], [54, 7.6]],
820				attribution: 'Kaartgegevens &copy; <a href="https://www.kadaster.nl">Kadaster</a>'
821			},
822			variants: {
823				standaard: 'standaard',
824				pastel: 'pastel',
825				grijs: 'grijs',
826				water: 'water',
827				luchtfoto: {
828					url: 'https://service.pdok.nl/hwh/luchtfotorgb/wmts/v1_0/Actueel_ortho25/EPSG:3857/{z}/{x}/{y}.jpeg',
829				}
830			}
831		},
832		NASAGIBS: {
833			url: 'https://map1.vis.earthdata.nasa.gov/wmts-webmerc/{variant}/default/{time}/{tilematrixset}{maxZoom}/{z}/{y}/{x}.{format}',
834			options: {
835				attribution:
836					'Imagery provided by services from the Global Imagery Browse Services (GIBS), operated by the NASA/GSFC/Earth Science Data and Information System ' +
837					'(<a href="https://earthdata.nasa.gov">ESDIS</a>) with funding provided by NASA/HQ.',
838				bounds: [[-85.0511287776, -179.999999975], [85.0511287776, 179.999999975]],
839				minZoom: 1,
840				maxZoom: 9,
841				format: 'jpg',
842				time: '',
843				tilematrixset: 'GoogleMapsCompatible_Level'
844			},
845			variants: {
846				ModisTerraTrueColorCR: 'MODIS_Terra_CorrectedReflectance_True
846Color',
847				ModisTerraBands367CR: 'MODIS_Terra_CorrectedReflectance_Bands367',
848				ViirsEarthAtNight2012: {
849					options: {
850						variant: 'VIIRS_CityLights_2012',
851						maxZoom: 8
852					}
853				},
854				ModisTerraLSTDay: {
855					options: {
856						variant: 'MODIS_Terra_Land_Surface_Temp_Day',
857						format: 'png',
858						maxZoom: 7,
859						opacity: 0.75
860					}
861				},
862				ModisTerraSnowCover: {
863					options: {
864						variant: 'MODIS_Terra_NDSI_Snow_Cover',
865						format: 'png',
866						maxZoom: 8,
867						opacity: 0.75
868					}
869				},
870				ModisTerraAOD: {
871					options: {
872						variant: 'MODIS_Terra_Aerosol',
873						format: 'png',
874						maxZoom: 6,
875						opacity: 0.75
876					}
877				},
878				ModisTerraChlorophyll: {
879					options: {
880						variant: 'MODIS_Terra_L2_Chlorophyll_A',
881						format: 'png',
882						maxZoom: 7,
883						opacity: 0.75
884					}
885				}
886			}
887		},
888		NLS: {
889			// NLS maps are copyright National library of Scotland.
890			// http://maps.nls.uk/projects/subscription-api
891			// Please contact NLS for anything other than non-commercial low volume usage
892			//
893			// Map sources: Ordnance Survey 1:1m to 1:63K, 1880s-1961
894			//   z0-9  - 1:1m
895			//  z10-11 - quarter inch (1:253440)
896			//  z12-18 - one inch (1:63360)
897			url: 'https://api.maptiler.com/tiles/{variant}/{z}/{x}/{y}.jpg?key={apikey}',
898			options: {
899				attribution: '<a href="http://maps.nls.uk/projects/subscription-api">National Library of Scotland Historic Maps</a>',
900				bounds: [[49.6, -12], [61.7, 3]],
901				minZoom: 1,
902				maxZoom: 18,
903				apikey: '<insert your api key here>'
904			},
905			variants: {
906				osgb63k1885: 'uk-osgb63k1885',
907				osgb1888: 'uk-osgb1888',
908				osgb10k1888: 'uk-osgb10k1888',
909				osgb1919: 'uk-osgb1919',
910				osgb25k1937: 'uk-osgb25k1937',
911				osgb63k1955: 'uk-osgb63k1955',
912				oslondon1k1893: 'uk-oslondon1k1893'
913			}
914		},
915		JusticeMap: {
916			// Justice Map (http://www.justicemap.org/)
917			// Visualize race and income data for your community, county and country.
918			// Includes tools for data journalists, bloggers and community activists.
919			url: 'https://www.justicemap.org/tile
vendor: 6,597 bytes, lines 919-1121
919/{size}/{variant}/{z}/{x}/{y}.png',
920			options: {
921				attribution: '<a href="http://www.justicemap.org/terms.php">Justice Map</a>',
922				// one of 'county', 'tract', 'block'
923				size: 'county',
924				// Bounds for USA, including Alaska and Hawaii
925				bounds: [[14, -180], [72, -56]]
926			},
927			variants: {
928				income: 'income',
929				americanIndian: 'indian',
930				asian: 'asian',
931				black: 'black',
932				hispanic: 'hispanic',
933				multi: 'multi',
934				nonWhite: 'nonwhite',
935				white: 'white',
936				plurality: 'plural'
937			}
938		},
939		GeoportailFrance: {
940			url: 'https://data.geopf.fr/wmts?REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0&STYLE={style}&TILEMATRIXSET=PM&FORMAT={format}&LAYER={variant}&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}',
941			options: {
942				attribution: '<a target="_blank" href="https://www.geoportail.gouv.fr/">Geoportail France</a>',
943				bounds: [[-75, -180], [81, 180]],
944				minZoom: 2,
945				maxZoom: 18,
946				format: 'image/png',
947				style: 'normal',
948				variant: 'GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2'
949			},
950			variants: {
951				plan: 'GEOGRAPHICALGRIDSYSTEMS.PLANIGNV2',
952				parcels: {
953					options: {
954						variant: 'CADASTRALPARCELS.PARCELLAIRE_EXPRESS',
955						style: 'PCI vecteur',
956						maxZoom: 20
957					}
958				},
959				orthos: {
960					options: {
961						maxZoom: 19,
962						format: 'image/jpeg',
963						variant: 'ORTHOIMAGERY.ORTHOPHOTOS'
964					}
965				}
966			}
967		},
968		OneMapSG: {
969			url: 'https://maps-{s}.onemap.sg/v3/{variant}/{z}/{x}/{y}.png',
970			options: {
971				variant: 'Default',
972				minZoom: 11,
973				maxZoom: 18,
974				bounds: [[1.56073, 104.11475], [1.16, 103.502]],
975				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>'
976			},
977			variants: {
978				Default: 'Default',
979				Night: 'Night',
980				Original: 'Original',
981				Grey: 'Grey',
982				LandLot: 'LandLot'
983			}
984		},
985		USGS: {
986			url: 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}',
987			options: {
988				maxZoom: 20,
989				attribution: 'Tiles courtesy of the <a href="https://usgs.gov/">U.S. Geological Survey</a>'
990			},
991			variants: {
992				USTopo: {},
993				USImagery: {
994					url: 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}'
995				},
996				USImageryTopo: {
997					url: 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryTopo/MapServer/tile/{z}/{y}/{x}'
998				}
999			}
1000		},
1001		WaymarkedTrails: {
1002			url: 'https://tile.waymarkedtrails.org/{variant}/{z}/{x}/{y}.png',
1003			options: {
1004				maxZoom: 18,
1005				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>)'
1006			},
1007			variants: {
1008				hiking: 'hiking',
1009				cycling: 'cycling',
1010				mtb: 'mtb',
1011				slopes: 'slopes',
1012				riding: 'riding',
1013				skating: 'skating'
1014			}
1015		},
1016		OpenAIP: {
1017			url: 'https://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.{ext}',
1018			options: {
1019				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>)',
1020				ext: 'png',
1021				minZoom: 4,
1022				maxZoom: 14,
1023				tms: true,
1024				detectRetina: true,
1025				subdomains: '12'
1026			}
1027		},
1028		OpenSnowMap: {
1029			url: 'https://tiles.opensnowmap.org/{variant}/{z}/{x}/{y}.png',
1030			options: {
1031				minZoom: 9,
1032				maxZoom: 18,
1033				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>'
1034			},
1035			variants: {
1036				pistes: 'pistes',
1037			}
1038		},
1039		AzureMaps: {
1040			url:
1041				'https://atlas.microsoft.com/map/tile?api-version={apiVersion}' +
1042				'&tilesetId={variant}&x={x}&y={y}&zoom={z}&language={language}' +
1043				'&subscription-key={subscriptionKey}',
1044			options: {
1045				attribution: 'See https://docs.microsoft.com/en-us/rest/api/maps/render-v2/get-map-tile for details.',
1046				apiVersion: '2.0',
1047				variant: 'microsoft.imagery',
1048				subscriptionKey: '<insert your subscription key here>',
1049				language: 'en-US',
1050			},
1051			variants: {
1052				MicrosoftImagery: 'microsoft.imagery',
1053				MicrosoftBaseDarkGrey: 'microsoft.base.darkgrey',
1054				MicrosoftBaseRoad: 'microsoft.base.road',
1055				MicrosoftBaseHybridRoad: 'microsoft.base.hybrid.road',
1056				MicrosoftTerraMain: 'microsoft.terra.main',
1057				MicrosoftWeatherInfraredMain: {
1058					url:
1059					'https://atlas.microsoft.com/map/tile?api-version={apiVersion}' +
1060					'&tilesetId={variant}&x={x}&y={y}&zoom={z}' +
1061					'&timeStamp={timeStamp}&language={language}' +
1062					'&subscription-key={subscriptionKey}',
1063					options: {
1064						timeStamp: '2021-05-08T09:03:00Z',
1065						attribution: 'See https://docs.microsoft.com/en-us/rest/api/maps/render-v2/get-map-tile#uri-parameters for details.',
1066						variant: 'microsoft.weather.infrared.main',
1067					},
1068				},
1069				MicrosoftWeatherRadarMain: {
1070					url:
1071					'https://atlas.microsoft.com/map/tile?api-version={apiVersion}' +
1072					'&tilesetId={variant}&x={x}&y={y}&zoom={z}' +
1073					'&timeStamp={timeStamp}&language={language}' +
1074					'&subscription-key={subscriptionKey}',
1075					options: {
1076						timeStamp: '2021-05-08T09:03:00Z',
1077						attribution: 'See https://docs.microsoft.com/en-us/rest/api/maps/render-v2/get-map-tile#uri-parameters for details.',
1078						variant: 'microsoft.weather.radar.main',
1079					},
1080				}
1081			},
1082		},
1083		SwissFederalGeoportal: {
1084			url: 'https://wmts.geo.admin.ch/1.0.0/{variant}/default/current/3857/{z}/{x}/{y}.jpeg',
1085			options: {
1086				attribution: '&copy; <a href="https://www.swisstopo.admin.ch/">swisstopo</a>',
1087				minZoom: 2,
1088				maxZoom: 18,
1089				bounds: [[45.398181, 5.140242], [48.230651, 11.47757]]
1090			},
1091			variants: {
1092				NationalMapColor: 'ch.swisstopo.pixelkarte-farbe',
1093				NationalMapGrey: 'ch.swisstopo.pixelkarte-grau',
1094				SWISSIMAGE: {
1095					options: {
1096						variant: 'ch.swisstopo.swissimage',
1097						maxZoom: 19
1098					}
1099				}
1100			}
1101		},
1102		TopPlusOpen: {
1103			url: 'http://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/{variant}/default/WEBMERCATOR/{z}/{y}/{x}.png',
1104			options: {
1105				maxZoom: 18,
1106				attribution: 'Map data: &copy; <a href="http://www.govdata.de/dl-de/by-2-0">dl-de/by-2-0</a>',
1107				variant: 'web',
1108			},
1109			variants: {
1110				Color: 'web',
1111				Grey: 'web_grau'
1112			}
1113		}
1114	};
1115
1116	L.tileLayer.provider = function(provider, options) {
1117		return new L.TileLayer.Provider(provider, options);
1118	};
1119
1120	return L;
1121}));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.