Spaces:
Running
Running
| (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: '//{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: { | |
| maxZoom: 20, | |
| 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?apikey={apikey}', | |
| options: { | |
| attribution: | |
| '© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}', | |
| variant: 'cycle', | |
| apikey: 'a7ec6bebc3dc48daa4c24d6c450f37e2', | |
| maxZoom: 22 | |
| }, | |
| variants: { | |
| OpenCycleMap: 'cycle', | |
| Transport: { | |
| options: { | |
| variant: 'transport' | |
| } | |
| }, | |
| TransportDark: { | |
| options: { | |
| variant: 'transport-dark' | |
| } | |
| }, | |
| SpinalMap: { | |
| options: { | |
| variant: 'spinal-map' | |
| } | |
| }, | |
| Landscape: 'landscape', | |
| Outdoors: 'outdoors', | |
| Pioneer: 'pioneer' | |
| } | |
| }, | |
| 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: { | |
| maxZoom: 18, | |
| 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' | |
| } | |
| }, | |
| 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', | |
| id: 'streets', | |
| accessToken: '<insert your access token here>', | |
| } | |
| }, | |
| 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: 0, | |
| maxZoom: 18 | |
| } | |
| }, | |
| TerrainBackground: { | |
| options: { | |
| variant: 'terrain-background', | |
| minZoom: 0, | |
| maxZoom: 18 | |
| } | |
| }, | |
| 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: 'https://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: { | |
| options: { | |
| maxZoom: 20, // currently only in Vienna | |
| variant: 'geolandbasemap' | |
| } | |
| }, | |
| grau: 'bmapgrau', | |
| overlay: 'bmapoverlay', | |
| highdpi: { | |
| options: { | |
| variant: 'bmaphidpi', | |
| format: 'jpeg' | |
| } | |
| }, | |
| orthofoto: { | |
| options: { | |
| maxZoom: 20, // currently only in Vienna | |
| 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', | |
| } | |
| }, | |
| JusticeMap: { | |
| // Justice Map (http://www.justicemap.org/) | |
| // Visualize race and income data for your community, county and country. | |
| // Includes tools for data journalists, bloggers and community activists. | |
| url: 'http://www.justicemap.org/tile/{size}/{variant}/{z}/{x}/{y}.png', | |
| options: { | |
| attribution: '<a href="http://www.justicemap.org/terms.php">Justice Map</a>', | |
| // one of 'county', 'tract', 'block' | |
| size: 'county', | |
| // Bounds for USA, including Alaska and Hawaii | |
| bounds: [[14, -180], [72, -56]] | |
| }, | |
| variants: { | |
| income: 'income', | |
| americanIndian: 'indian', | |
| asian: 'asian', | |
| black: 'black', | |
| hispanic: 'hispanic', | |
| multi: 'multi', | |
| nonWhite: 'nonwhite', | |
| white: 'white', | |
| plurality: 'plural' | |
| } | |
| } | |
| }; | |
| L.tileLayer.provider = function (provider, options) { | |
| return new L.TileLayer.Provider(provider, options); | |
| }; | |
| return L; | |
| })); | |