123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673 |
- (function (root, factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD. Register as an anonymous module.
- define(['leaflet'], factory);
- } else if (typeof modules === 'object' && module.exports) {
- // define a Common JS module that relies on 'leaflet'
- module.exports = factory(require('leaflet'));
- } else {
- // Assume Leaflet is loaded into global object L already
- factory(L);
- }
- }(this, function (L) {
- 'use strict';
- L.TileLayer.Provider = L.TileLayer.extend({
- initialize: function (arg, options) {
- var providers = L.TileLayer.Provider.providers;
- var parts = arg.split('.');
- var providerName = parts[0];
- var variantName = parts[1];
- if (!providers[providerName]) {
- throw 'No such provider (' + providerName + ')';
- }
- var provider = {
- url: providers[providerName].url,
- options: providers[providerName].options
- };
- // overwrite values in provider from variant.
- if (variantName && 'variants' in providers[providerName]) {
- if (!(variantName in providers[providerName].variants)) {
- throw 'No such variant of ' + providerName + ' (' + variantName + ')';
- }
- var variant = providers[providerName].variants[variantName];
- var variantOptions;
- if (typeof variant === 'string') {
- variantOptions = {
- variant: variant
- };
- } else {
- variantOptions = variant.options;
- }
- provider = {
- url: variant.url || provider.url,
- options: L.Util.extend({}, provider.options, variantOptions)
- };
- }
- var forceHTTP = window.location.protocol === 'file:' || provider.options.forceHTTP;
- if (provider.url.indexOf('//') === 0 && forceHTTP) {
- provider.url = 'http:' + provider.url;
- }
- // If retina option is set
- if (provider.options.retina) {
- // Check retina screen
- if (options.detectRetina && L.Browser.retina) {
- // The retina option will be active now
- // But we need to prevent Leaflet retina mode
- options.detectRetina = false;
- } else {
- // No retina, remove option
- provider.options.retina = '';
- }
- }
- // replace attribution placeholders with their values from toplevel provider attribution,
- // recursively
- var attributionReplacer = function (attr) {
- if (attr.indexOf('{attribution.') === -1) {
- return attr;
- }
- return attr.replace(/\{attribution.(\w*)\}/,
- function (match, attributionName) {
- return attributionReplacer(providers[attributionName].options.attribution);
- }
- );
- };
- provider.options.attribution = attributionReplacer(provider.options.attribution);
- // Compute final options combining provider options with any user overrides
- var layerOpts = L.Util.extend({}, provider.options, options);
- L.TileLayer.prototype.initialize.call(this, provider.url, layerOpts);
- }
- });
- /**
- * Definition of providers.
- * see http://leafletjs.com/reference.html#tilelayer for options in the options map.
- */
- L.TileLayer.Provider.providers = {
- OpenStreetMap: {
- url: '//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
- options: {
- maxZoom: 19,
- attribution:
- '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
- },
- variants: {
- Mapnik: {},
- BlackAndWhite: {
- url: 'http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png',
- options: {
- maxZoom: 18
- }
- },
- DE: {
- url: 'http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png',
- options: {
- maxZoom: 18
- }
- },
- France: {
- url: '//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png',
- options: {
- attribution: '© Openstreetmap France | {attribution.OpenStreetMap}'
- }
- },
- HOT: {
- url: '//{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png',
- options: {
- attribution: '{attribution.OpenStreetMap}, Tiles courtesy of <a href="http://hot.openstreetmap.org/" target="_blank">Humanitarian OpenStreetMap Team</a>'
- }
- }
- }
- },
- OpenSeaMap: {
- url: 'http://tiles.openseamap.org/seamark/{z}/{x}/{y}.png',
- options: {
- attribution: 'Map data: © <a href="http://www.openseamap.org">OpenSeaMap</a> contributors'
- }
- },
- OpenTopoMap: {
- url: '//{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: © <a href="https://opentopomap.org">OpenTopoMap</a> (<a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA</a>)'
- }
- },
- Thunderforest: {
- url: '//{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png',
- options: {
- attribution:
- '© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}',
- variant: 'cycle'
- },
- variants: {
- OpenCycleMap: 'cycle',
- Transport: {
- options: {
- variant: 'transport',
- maxZoom: 19
- }
- },
- TransportDark: {
- options: {
- variant: 'transport-dark',
- maxZoom: 19
- }
- },
- SpinalMap: {
- options: {
- variant: 'spinal-map',
- maxZoom: 11
- }
- },
- Landscape: 'landscape',
- Outdoors: 'outdoors',
- Pioneer: 'pioneer'
- }
- },
- OpenMapSurfer: {
- url: 'http://korona.geog.uni-heidelberg.de/tiles/{variant}/x={x}&y={y}&z={z}',
- options: {
- maxZoom: 20,
- variant: 'roads',
- attribution: 'Imagery from <a href="http://giscience.uni-hd.de/">GIScience Research Group @ University of Heidelberg</a> — Map data {attribution.OpenStreetMap}'
- },
- variants: {
- Roads: 'roads',
- AdminBounds: {
- options: {
- variant: 'adminb',
- maxZoom: 19
- }
- },
- Grayscale: {
- options: {
- variant: 'roadsg',
- maxZoom: 19
- }
- }
- }
- },
- Hydda: {
- url: '//{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png',
- options: {
- variant: 'full',
- attribution: 'Tiles courtesy of <a href="http://openstreetmap.se/" target="_blank">OpenStreetMap Sweden</a> — Map data {attribution.OpenStreetMap}'
- },
- variants: {
- Full: 'full',
- Base: 'base',
- RoadsAndLabels: 'roads_and_labels'
- }
- },
- MapQuestOpen: {
- /* Mapquest does support https, but with a different subdomain:
- * https://otile{s}-s.mqcdn.com/tiles/1.0.0/{type}/{z}/{x}/{y}.{ext}
- * which makes implementing protocol relativity impossible.
- */
- url: 'http://otile{s}.mqcdn.com/tiles/1.0.0/{type}/{z}/{x}/{y}.{ext}',
- options: {
- type: 'map',
- ext: 'jpg',
- attribution:
- 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> — ' +
- 'Map data {attribution.OpenStreetMap}',
- subdomains: '1234'
- },
- variants: {
- OSM: {},
- Aerial: {
- options: {
- type: 'sat',
- attribution:
- 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> — ' +
- 'Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency'
- }
- },
- HybridOverlay: {
- options: {
- type: 'hyb',
- ext: 'png',
- opacity: 0.9
- }
- }
- }
- },
- MapBox: {
- url: '//api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}',
- options: {
- attribution:
- 'Imagery from <a href="http://mapbox.com/about/maps/">MapBox</a> — ' +
- 'Map data {attribution.OpenStreetMap}',
- subdomains: 'abcd'
- }
- },
- Stamen: {
- url: '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{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> — ' +
- '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: {
- options: {
- variant: 'watercolor',
- minZoom: 1,
- maxZoom: 16
- }
- },
- Terrain: {
- options: {
- variant: 'terrain',
- minZoom: 4,
- maxZoom: 18,
- bounds: [[22, -132], [70, -56]]
- }
- },
- TerrainBackground: {
- options: {
- variant: 'terrain-background',
- minZoom: 4,
- maxZoom: 18,
- bounds: [[22, -132], [70, -56]]
- }
- },
- TopOSMRelief: {
- 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
- }
- }
- }
- },
- Esri: {
- url: '//server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}',
- options: {
- variant: 'World_Street_Map',
- attribution: 'Tiles © Esri'
- },
- variants: {
- WorldStreetMap: {
- options: {
- attribution:
- '{attribution.Esri} — ' +
- '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} — Copyright: ©2012 DeLorme'
- }
- },
- WorldTopoMap: {
- options: {
- variant: 'World_Topo_Map',
- attribution:
- '{attribution.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'
- }
- },
- WorldImagery: {
- options: {
- variant: 'World_Imagery',
- attribution:
- '{attribution.Esri} — ' +
- '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} — ' +
- 'Source: USGS, Esri, TANA, DeLorme, and NPS'
- }
- },
- WorldShadedRelief: {
- options: {
- variant: 'World_Shaded_Relief',
- maxZoom: 13,
- attribution: '{attribution.Esri} — Source: Esri'
- }
- },
- WorldPhysical: {
- options: {
- variant: 'World_Physical_Map',
- maxZoom: 8,
- attribution: '{attribution.Esri} — Source: US National Park Service'
- }
- },
- OceanBasemap: {
- options: {
- variant: 'Ocean_Basemap',
- maxZoom: 13,
- attribution: '{attribution.Esri} — Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri'
- }
- },
- NatGeoWorldMap: {
- options: {
- variant: 'NatGeo_World_Map',
- maxZoom: 16,
- attribution: '{attribution.Esri} — 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} — Esri, DeLorme, NAVTEQ'
- }
- }
- }
- },
- OpenWeatherMap: {
- url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png',
- options: {
- maxZoom: 19,
- attribution: 'Map data © <a href="http://openweathermap.org">OpenWeatherMap</a>',
- 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: {
- /*
- * HERE maps, formerly Nokia maps.
- * These basemaps are free, but you need an API key. Please sign up at
- * http://developer.here.com/getting-started
- *
- * Note that the base urls contain '.cit' whichs is HERE's
- * 'Customer Integration Testing' environment. Please remove for production
- * envirionments.
- */
- url:
- '//{s}.{base}.maps.cit.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 © 1987-2014 <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',
- normalNight: 'normal.night',
- normalNightMobile: 'normal.night.mobile',
- normalNightGrey: 'normal.night.grey',
- normalNightGreyMobile: 'normal.night.grey.mobile',
- 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'
- }
- },
- 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: 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg',
- options: {
- minZoom: 8,
- maxZoom: 16,
- subdomains: '1234',
- 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} & USGS'
- }
- },
- CartoDB: {
- url: 'http://{s}.basemaps.cartocdn.com/{variant}/{z}/{x}/{y}.png',
- options: {
- attribution: '{attribution.OpenStreetMap} © <a href="http://cartodb.com/attributions">CartoDB</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'
- }
- },
- HikeBike: {
- url: 'http://{s}.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: '//maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}',
- options: {
- maxZoom: 19,
- attribution: 'Datenquelle: <a href="www.basemap.at">basemap.at</a>',
- subdomains: ['', '1', '2', '3', '4'],
- format: 'png',
- bounds: [[46.358770, 8.782379], [49.037872, 17.189532]],
- variant: 'geolandbasemap'
- },
- variants: {
- basemap: 'geolandbasemap',
- grau: 'bmapgrau',
- overlay: 'bmapoverlay',
- highdpi: {
- options: {
- variant: 'bmaphidpi',
- format: 'jpeg'
- }
- },
- orthofoto: {
- options: {
- variant: 'bmaporthofoto30cm',
- format: 'jpeg'
- }
- }
- }
- },
- NASAGIBS: {
- url: '//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: {
- // NLS maps are copyright National library of Scotland.
- // http://maps.nls.uk/projects/api/index.html
- // Please contact NLS for anything other than non-commercial low volume usage
- //
- // Map sources: Ordnance Survey 1:1m to 1:63K, 1920s-1940s
- // z0-9 - 1:1m
- // z10-11 - quarter inch (1:253440)
- // z12-18 - one inch (1:63360)
- url: '//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',
- }
- }
- };
- L.tileLayer.provider = function (provider, options) {
- return new L.TileLayer.Provider(provider, options);
- };
- return L;
- }));
|