2015-06-18 16:17:40 +02:00
( function ( root , factory ) {
2015-10-30 23:40:15 +01:00
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 ) ;
}
2015-06-18 16:17:40 +02:00
} ( this , function ( L ) {
2015-01-10 13:11:12 +01:00
'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 )
} ;
}
2015-06-18 16:17:40 +02:00
var forceHTTP = window . location . protocol === 'file:' || provider . options . forceHTTP ;
if ( provider . url . indexOf ( '//' ) === 0 && forceHTTP ) {
provider . url = 'http:' + provider . url ;
}
2015-10-30 23:40:15 +01:00
// 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 = '' ;
}
}
2015-01-10 13:11:12 +01:00
// 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 : {
2015-06-18 16:17:40 +02:00
url : '//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' ,
2015-01-10 13:11:12 +01:00
options : {
2015-06-18 16:17:40 +02:00
maxZoom : 19 ,
2015-01-10 13:11:12 +01:00
attribution :
'© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
} ,
variants : {
Mapnik : { } ,
BlackAndWhite : {
2015-06-18 16:17:40 +02:00
url : 'http://{s}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png' ,
options : {
maxZoom : 18
}
2015-01-10 13:11:12 +01:00
} ,
DE : {
2015-06-18 16:17:40 +02:00
url : 'http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png' ,
options : {
maxZoom : 18
}
} ,
France : {
2016-10-04 13:43:39 +02:00
url : '//{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png' ,
2015-06-18 16:17:40 +02:00
options : {
2016-10-04 13:43:39 +02:00
maxZoom : 20 ,
2015-06-18 16:17:40 +02:00
attribution : '© Openstreetmap France | {attribution.OpenStreetMap}'
}
2015-01-10 13:11:12 +01:00
} ,
HOT : {
2016-10-04 13:43:39 +02:00
url : '//{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png' ,
2015-01-10 13:11:12 +01:00
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'
}
} ,
2015-06-18 16:17:40 +02:00
OpenTopoMap : {
url : '//{s}.tile.opentopomap.org/{z}/{x}/{y}.png' ,
options : {
2016-10-04 13:43:39 +02:00
maxZoom : 17 ,
2015-06-18 16:17:40 +02:00
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>)'
}
} ,
2015-01-10 13:11:12 +01:00
Thunderforest : {
2015-06-18 16:17:40 +02:00
url : '//{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png' ,
2015-01-10 13:11:12 +01:00
options : {
attribution :
2016-10-04 13:43:39 +02:00
'© <a href="http://www.thunderforest.com/">Thunderforest</a>, {attribution.OpenStreetMap}' ,
2015-01-10 13:11:12 +01:00
variant : 'cycle'
} ,
variants : {
OpenCycleMap : 'cycle' ,
2015-06-18 16:17:40 +02:00
Transport : {
options : {
variant : 'transport' ,
maxZoom : 19
}
} ,
TransportDark : {
options : {
variant : 'transport-dark' ,
maxZoom : 19
}
} ,
2016-10-04 13:43:39 +02:00
SpinalMap : {
options : {
variant : 'spinal-map' ,
maxZoom : 11
}
} ,
2015-01-10 13:11:12 +01:00
Landscape : 'landscape' ,
2016-10-04 13:43:39 +02:00
Outdoors : 'outdoors' ,
Pioneer : 'pioneer'
2015-01-10 13:11:12 +01:00
}
} ,
OpenMapSurfer : {
2016-10-04 13:43:39 +02:00
url : 'http://korona.geog.uni-heidelberg.de/tiles/{variant}/x={x}&y={y}&z={z}' ,
2015-01-10 13:11:12 +01:00
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 : {
2016-10-04 13:43:39 +02:00
url : '//{s}.tile.openstreetmap.se/hydda/{variant}/{z}/{x}/{y}.png' ,
2015-01-10 13:11:12 +01:00
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' ,
2015-06-18 16:17:40 +02:00
RoadsAndLabels : 'roads_and_labels'
2015-01-10 13:11:12 +01:00
}
} ,
MapBox : {
2015-10-30 23:40:15 +01:00
url : '//api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}' ,
2015-01-10 13:11:12 +01:00
options : {
attribution :
'Imagery from <a href="http://mapbox.com/about/maps/">MapBox</a> — ' +
'Map data {attribution.OpenStreetMap}' ,
subdomains : 'abcd'
}
} ,
Stamen : {
2015-10-30 23:40:15 +01:00
url : '//stamen-tiles-{s}.a.ssl.fastly.net/{variant}/{z}/{x}/{y}.{ext}' ,
2015-01-10 13:11:12 +01:00
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 ,
2015-06-18 16:17:40 +02:00
variant : 'toner' ,
ext : 'png'
2015-01-10 13:11:12 +01:00
} ,
variants : {
Toner : 'toner' ,
TonerBackground : 'toner-background' ,
TonerHybrid : 'toner-hybrid' ,
TonerLines : 'toner-lines' ,
TonerLabels : 'toner-labels' ,
TonerLite : 'toner-lite' ,
2015-06-18 16:17:40 +02:00
Watercolor : {
options : {
variant : 'watercolor' ,
minZoom : 1 ,
maxZoom : 16
}
} ,
2015-01-10 13:11:12 +01:00
Terrain : {
options : {
variant : 'terrain' ,
2016-10-04 13:43:39 +02:00
minZoom : 0 ,
maxZoom : 18
2015-01-10 13:11:12 +01:00
}
} ,
TerrainBackground : {
options : {
variant : 'terrain-background' ,
2016-10-04 13:43:39 +02:00
minZoom : 0 ,
maxZoom : 18
2015-01-10 13:11:12 +01:00
}
} ,
2015-06-18 16:17:40 +02:00
TopOSMRelief : {
2015-01-10 13:11:12 +01:00
options : {
2015-06-18 16:17:40 +02:00
variant : 'toposm-color-relief' ,
ext : 'jpg' ,
bounds : [ [ 22 , - 132 ] , [ 51 , - 56 ] ]
}
} ,
TopOSMFeatures : {
options : {
variant : 'toposm-features' ,
bounds : [ [ 22 , - 132 ] , [ 51 , - 56 ] ] ,
opacity : 0.9
2015-01-10 13:11:12 +01:00
}
}
}
} ,
Esri : {
2015-06-18 16:17:40 +02:00
url : '//server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}' ,
2015-01-10 13:11:12 +01:00
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 : {
2015-06-18 16:17:40 +02:00
maxZoom : 19 ,
2015-01-10 13:11:12 +01:00
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 :
2015-06-18 16:17:40 +02:00
'//{s}.{base}.maps.cit.api.here.com/maptile/2.1/' +
2016-10-04 13:43:39 +02:00
'{type}/{mapID}/{variant}/{z}/{x}/{y}/{size}/{format}?' +
'app_id={app_id}&app_code={app_code}&lg={language}' ,
2015-01-10 13:11:12 +01:00
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' ,
2016-10-04 13:43:39 +02:00
maxZoom : 20 ,
type : 'maptile' ,
language : 'eng' ,
format : 'png8' ,
size : '256'
2015-01-10 13:11:12 +01:00
} ,
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' ,
2016-10-04 13:43:39 +02:00
basicMap : {
options : {
type : 'basetile'
}
} ,
mapLabels : {
options : {
type : 'labeltile' ,
format : 'png'
}
} ,
trafficFlow : {
options : {
base : 'traffic' ,
type : 'flowtile'
}
} ,
2015-01-10 13:11:12 +01:00
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 : {
2015-10-30 23:40:15 +01:00
url : 'http://t{s}.freemap.sk/T/{z}/{x}/{y}.jpeg' ,
2015-01-10 13:11:12 +01:00
options : {
minZoom : 8 ,
maxZoom : 16 ,
2015-10-30 23:40:15 +01:00
subdomains : '1234' ,
bounds : [ [ 47.204642 , 15.996093 ] , [ 49.830896 , 22.576904 ] ] ,
2015-01-10 13:11:12 +01:00
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' ,
2015-06-18 16:17:40 +02:00
maxZoom : 19 ,
2015-01-10 13:11:12 +01:00
variant : 'light_all'
} ,
variants : {
Positron : 'light_all' ,
PositronNoLabels : 'light_nolabels' ,
2015-10-30 23:40:15 +01:00
PositronOnlyLabels : 'light_only_labels' ,
2015-01-10 13:11:12 +01:00
DarkMatter : 'dark_all' ,
2015-10-30 23:40:15 +01:00
DarkMatterNoLabels : 'dark_nolabels' ,
DarkMatterOnlyLabels : 'dark_only_labels'
2015-01-10 13:11:12 +01:00
}
2015-06-18 16:17:40 +02:00
} ,
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
}
}
}
2015-10-30 23:40:15 +01:00
} ,
NLS : {
2016-10-04 13:43:39 +02:00
// 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' ,
2015-10-30 23:40:15 +01:00
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' ,
}
2015-01-10 13:11:12 +01:00
}
} ;
L . tileLayer . provider = function ( provider , options ) {
return new L . TileLayer . Provider ( provider , options ) ;
} ;
2015-06-18 16:17:40 +02:00
return L ;
} ) ) ;