PageSourceSearch

https://www.zannicompagnie.com/wp-content/themes/iwego/assets/leaflet-providers/leaflet-providers.js

js zannicompagnie.com collected 2026-10-08 21:20:48 UTC 37,274 bytes, 1,213 lines download raw bytes

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

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.