2016-10-29 15:07:15 +00:00
( 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 : {
2017-02-04 16:46:44 +00:00
maxZoom : 20 ,
2016-10-29 15:07:15 +00:00
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 : {
2017-02-04 16:46:44 +00:00
url : '//{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png?apikey={apikey}' ,
2016-10-29 15:07:15 +00:00
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'
}
} ,
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' ,
2017-02-04 16:46:44 +00:00
minZoom : 0 ,
maxZoom : 18
2016-10-29 15:07:15 +00:00
}
} ,
TerrainBackground : {
options : {
variant : 'terrain-background' ,
2017-02-04 16:46:44 +00:00
minZoom : 0 ,
maxZoom : 18
2016-10-29 15:07:15 +00:00
}
} ,
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 : {
2017-02-04 16:46:44 +00:00
url : 'https://maps{s}.wien.gv.at/basemap/{variant}/normal/google3857/{z}/{y}/{x}.{format}' ,
2016-10-29 15:07:15 +00:00
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 : {
2017-02-04 16:46:44 +00:00
basemap : {
options : {
maxZoom : 20 , // currently only in Vienna
variant : 'geolandbasemap'
}
} ,
2016-10-29 15:07:15 +00:00
grau : 'bmapgrau' ,
overlay : 'bmapoverlay' ,
highdpi : {
options : {
variant : 'bmaphidpi' ,
format : 'jpeg'
}
} ,
orthofoto : {
options : {
2017-02-04 16:46:44 +00:00
maxZoom : 20 , // currently only in Vienna
2016-10-29 15:07:15 +00:00
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' ,
}
2017-02-04 16:46:44 +00:00
} ,
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'
}
2016-10-29 15:07:15 +00:00
}
} ;
L . tileLayer . provider = function ( provider , options ) {
return new L . TileLayer . Provider ( provider , options ) ;
} ;
return L ;
} ) ) ;