summaryrefslogtreecommitdiff
path: root/design/templates
diff options
context:
space:
mode:
authorluxagraf <sng@luxagraf.net>2014-05-27 14:18:50 -0400
committerluxagraf <sng@luxagraf.net>2014-05-27 14:18:50 -0400
commit18de08b5dfcc40243bfe8531bce775d0cf106293 (patch)
tree214567b93b0a1f499cc0edab76ac920062a590a1 /design/templates
parent4b46285558ccbe10e9a2a5887c630fce6e355d52 (diff)
moved all the js files to their respective projects and added the
leftlet providers code inline at the top as part of the build process. Also converted everything to stop using google maps.
Diffstat (limited to 'design/templates')
-rw-r--r--design/templates/archives/map.html8
-rw-r--r--design/templates/details/national-parks.html25
-rw-r--r--design/templates/details/photo_galleries.html7
-rw-r--r--design/templates/gis/admin/openlayers.html38
-rw-r--r--design/templates/js/leaflet-providers.js472
5 files changed, 536 insertions, 14 deletions
diff --git a/design/templates/archives/map.html b/design/templates/archives/map.html
index 550a898..0b43e6e 100644
--- a/design/templates/archives/map.html
+++ b/design/templates/archives/map.html
@@ -9,14 +9,13 @@
Google Maps code
==============================================#}
{% block extrahead %}
- <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.css" />
<!--[if lte IE 8]>
- <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.ie.css" />
+ <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.ie.css" />
<![endif]-->
- <script src="http://cdn.leafletjs.com/leaflet-0.5/leaflet.js"></script>
+ <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
<script type="text/javascript">
if (typeof L === "undefined") {
- document.write(unescape("%3Cscript src='/media/js/leaflet-0.5/leaflet.js' type='text/javascript'%3E%3C/script%3E"));
+ document.write(unescape("%3Cscript src='/media/js/leaflet-0.7.3/leaflet.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
@@ -64,7 +63,6 @@ Google Maps code
</section>
{% endblock %}
{% block js %}
-<script type="text/javascript" src="/media/js/leaflet-providers.js"></script>
<!--<script type="text/javascript" src="/media/js/mainmap.js"></script>-->
<script type="text/javascript" src="/media/js/mainmap.min.js"></script>
{% endblock%}
diff --git a/design/templates/details/national-parks.html b/design/templates/details/national-parks.html
index e17bd72..2cd48eb 100644
--- a/design/templates/details/national-parks.html
+++ b/design/templates/details/national-parks.html
@@ -3,6 +3,25 @@
{% block pagetitle %}Luxagraf | Projects | National Parks {% endblock %}
{% block metadescription %}{% endblock %}
+{% block extrahead %}
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.ie.css" />
+ <![endif]-->
+ <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
+ <script type="text/javascript">
+ if (typeof L === "undefined") {
+ document.write(unescape("%3Cscript src='/media/js/leaflet-0.5/leaflet.js' type='text/javascript'%3E%3C/script%3E"));
+}
+ </script>
+
+ <style>
+ #map-canvas img{ border: none;}
+ </style>
+
+
+
+
+{% endblock %}
{%block bodyid%}id="projects-detail"{%endblock%}
@@ -25,8 +44,8 @@
<ul class="buttons">
<li><a href="{{object.post.get_absolute_url}}" title="{{object.post.title}}">Read Journal</a></li>
{%if object.gallery%}<li><a href="{{object.gallery.get_absolute_url}}" title="Photos of {{object.unit_name}}">View Photos</a></li>{%endif%}
- <li><a href="#" class="map-link" title="{{object.mpoly.centroid.y}},{{object.mpoly.centroid.x}},{{object.zoom}},{{object.id}}">Map</a></li>
- <li><a href="#" id="more-{{forloop.counter}}"class="more-link" title="More about {{object.unit_name}}">More</a></li>
+ <li><a href="#" class="map-link" data-latitude="{{object.mpoly.centroid.y}}" data-longitude="{{object.mpoly.centroid.x}}" data-zoom="{{object.zoom}}" data-id="{{object.id}}">Map</a></li>
+ <li><a href="#" id="more-{{forloop.counter}}" class="more-link" title="More about {{object.unit_name}}">More</a></li>
</ul>
<dl class="meta" style="visibility: hidden;">
<dt>Visited:</dt>
@@ -46,8 +65,6 @@
{% endblock %}
{% block js %}
<script type="text/javascript" src="/media/js/jquery.js"></script>
- <script type="text/javascript" src="/media/js/underscore-min.js"></script>
<script type="text/javascript" src="/media/js/natparks.min.js" ></script>
- <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
{% endblock %}
diff --git a/design/templates/details/photo_galleries.html b/design/templates/details/photo_galleries.html
index 4e8fdce..e0530ab 100644
--- a/design/templates/details/photo_galleries.html
+++ b/design/templates/details/photo_galleries.html
@@ -9,11 +9,10 @@
{% block metadescription %}{{object.set_desc|truncatewords:30|smartypants|safe}}{% endblock %}
{% block extrahead %}
- <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.css" />
<!--[if lte IE 8]>
- <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5/leaflet.ie.css" />
+ <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.ie.css" />
<![endif]-->
- <script src="http://cdn.leafletjs.com/leaflet-0.5/leaflet.js"></script>
+ <script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
<script type="text/javascript">
if (typeof L === "undefined") {
document.write(unescape("%3Cscript src='/media/js/leaflet-0.5/leaflet.js' type='text/javascript'%3E%3C/script%3E"));
@@ -83,8 +82,6 @@
{% block js %}
<script type="text/javascript" src="{{MEDIA_URL}}js/jquery.js"></script>
<script type="text/javascript" src="{{MEDIA_URL}}js/jquery.scrollTo-1.4.2-min.js"></script>
- <!--<script type="text/javascript" src="{{MEDIA_URL}}js/photos.min.js" ></script>-->
- <script type="text/javascript" src="/media/js/leaflet-providers.js"></script>
<script type="text/javascript" src="/media/js/photos.min.js" ></script>
diff --git a/design/templates/gis/admin/openlayers.html b/design/templates/gis/admin/openlayers.html
new file mode 100644
index 0000000..a61b689
--- /dev/null
+++ b/design/templates/gis/admin/openlayers.html
@@ -0,0 +1,38 @@
+{% block extrastyle %}
+{% load static %}
+<style type="text/css">
+ #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; }
+ #{{ id }}_map .aligned label { float:inherit; }
+ #{{ id }}_admin_map { position: relative; vertical-align: top; float: {{ LANGUAGE_BIDI|yesno:"right,left" }}; }
+ {% if not display_wkt %}#{{ id }} { display: none; }{% endif %}
+ .olControlEditingToolbar .olControlModifyFeatureItemActive {
+ background-image: url("{% static "admin/img/gis/move_vertex_on.png" %}");
+ background-repeat: no-repeat;
+ }
+ .olControlEditingToolbar .olControlModifyFeatureItemInactive {
+ background-image: url("{% static "admin/img/gis/move_vertex_off.png" %}");
+ background-repeat: no-repeat;
+ }
+</style>
+<!--[if IE]>
+<style type="text/css">
+ /* This fixes the mouse offset issues in IE. */
+ #{{ id }}_admin_map { position: static; vertical-align: top; }
+ /* `font-size: 0` fixes the 1px border between tiles, but borks LayerSwitcher.
+ Thus, this is disabled until a better fix is found.
+ #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; font-size: 0; } */
+</style>
+<![endif]-->
+{% endblock %}
+<span id="{{ id }}_admin_map">
+<script type="text/javascript">
+//<![CDATA[
+{% block openlayers %}{% include "gis/admin/openlayers.js" %}{% endblock %}
+//]]>
+</script>
+<div id="{{ id }}_map"{% if LANGUAGE_BIDI %} dir="ltr"{% endif %}></div>
+<a href="javascript:{{ module }}.clearFeatures()">Delete all Features</a>
+{% if display_wkt %}<p> WKT debugging window:</p>{% endif %}
+<textarea id="{{ id }}" class="vWKTField required" cols="150" rows="10" name="{{ name }}">{{ wkt }}</textarea>
+<script type="text/javascript">{% block init_function %}{{ module }}.init();{% endblock %}</script>
+</span>
diff --git a/design/templates/js/leaflet-providers.js b/design/templates/js/leaflet-providers.js
new file mode 100644
index 0000000..c339c8b
--- /dev/null
+++ b/design/templates/js/leaflet-providers.js
@@ -0,0 +1,472 @@
+(function () {
+ '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)
+ };
+ } else if (typeof provider.url === 'function') {
+ provider.url = provider.url(parts.splice(1, parts.length - 1).join('.'));
+ }
+
+ // 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.
+ */
+
+ //jshint maxlen:220
+ L.TileLayer.Provider.providers = {
+ OpenStreetMap: {
+ url: 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
+ options: {
+ attribution:
+ '&copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, ' +
+ '<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'
+ },
+ variants: {
+ Mapnik: {},
+ BlackAndWhite: {
+ url: 'http://{s}.www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png'
+ },
+ DE: {
+ url: 'http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png'
+ },
+ HOT: {
+ url: 'http://{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: &copy; <a href="http://www.openseamap.org">OpenSeaMap</a> contributors'
+ }
+ },
+ Thunderforest: {
+ url: 'http://{s}.tile.thunderforest.com/{variant}/{z}/{x}/{y}.png',
+ options: {
+ attribution:
+ '&copy; <a href="http://www.opencyclemap.org">OpenCycleMap</a>, {attribution.OpenStreetMap}',
+ variant: 'cycle'
+ },
+ variants: {
+ OpenCycleMap: 'cycle',
+ Transport: 'transport',
+ Landscape: 'landscape',
+ Outdoors: 'outdoors'
+ }
+ },
+ OpenMapSurfer: {
+ url: 'http://openmapsurfer.uni-hd.de/tiles/{variant}/x={x}&y={y}&z={z}',
+ options: {
+ minZoom: 0,
+ maxZoom: 20,
+ variant: 'roads',
+ attribution: 'Imagery from <a href="http://giscience.uni-hd.de/">GIScience Research Group @ University of Heidelberg</a> &mdash; Map data {attribution.OpenStreetMap}'
+ },
+ variants: {
+ Roads: 'roads',
+ AdminBounds: {
+ options: {
+ variant: 'adminb',
+ maxZoom: 19
+ }
+ },
+ Grayscale: {
+ options: {
+ variant: 'roadsg',
+ maxZoom: 19
+ }
+ }
+ }
+ },
+ MapQuestOpen: {
+ url: 'http://otile{s}.mqcdn.com/tiles/1.0.0/map/{z}/{x}/{y}.jpeg',
+ options: {
+ attribution:
+ 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> &mdash; ' +
+ 'Map data {attribution.OpenStreetMap}',
+ subdomains: '1234'
+ },
+ variants: {
+ OSM: {},
+ Aerial: {
+ url: 'http://oatile{s}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg',
+ options: {
+ attribution:
+ 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a> &mdash; ' +
+ 'Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency'
+ }
+ }
+ }
+ },
+ MapBox: {
+ url: function (id) {
+ return 'http://{s}.tiles.mapbox.com/v3/' + id + '/{z}/{x}/{y}.png';
+ },
+ options: {
+ attribution:
+ 'Imagery from <a href="http://mapbox.com/about/maps/">MapBox</a> &mdash; ' +
+ 'Map data {attribution.OpenStreetMap}',
+ subdomains: 'abcd'
+ }
+ },
+ Stamen: {
+ url: 'http://{s}.tile.stamen.com/{variant}/{z}/{x}/{y}.png',
+ 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> &mdash; ' +
+ 'Map data {attribution.OpenStreetMap}',
+ subdomains: 'abcd',
+ minZoom: 0,
+ maxZoom: 20,
+ variant: 'toner'
+ },
+ variants: {
+ Toner: 'toner',
+ TonerBackground: 'toner-background',
+ TonerHybrid: 'toner-hybrid',
+ TonerLines: 'toner-lines',
+ TonerLabels: 'toner-labels',
+ TonerLite: 'toner-lite',
+ Terrain: {
+ options: {
+ variant: 'terrain',
+ minZoom: 4,
+ maxZoom: 18
+ }
+ },
+ TerrainBackground: {
+ options: {
+ variant: 'terrain-background',
+ minZoom: 4,
+ maxZoom: 18
+ }
+ },
+ Watercolor: {
+ options: {
+ variant: 'watercolor',
+ minZoom: 3,
+ maxZoom: 16
+ }
+ }
+ }
+ },
+ Esri: {
+ url: 'https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}',
+ options: {
+ variant: 'World_Street_Map',
+ attribution: 'Tiles &copy; Esri'
+ },
+ variants: {
+ WorldStreetMap: {
+ options: {
+ attribution:
+ '{attribution.Esri} &mdash; ' +
+ '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} &mdash; Copyright: &copy;2012 DeLorme'
+ }
+ },
+ WorldTopoMap: {
+ options: {
+ variant: 'World_Topo_Map',
+ attribution:
+ '{attribution.Esri} &mdash; ' +
+ '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} &mdash; ' +
+ '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} &mdash; ' +
+ 'Source: USGS, Esri, TANA, DeLorme, and NPS'
+ }
+ },
+ WorldShadedRelief: {
+ options: {
+ variant: 'World_Shaded_Relief',
+ maxZoom: 13,
+ attribution: '{attribution.Esri} &mdash; Source: Esri'
+ }
+ },
+ WorldPhysical: {
+ options: {
+ variant: 'World_Physical_Map',
+ maxZoom: 8,
+ attribution: '{attribution.Esri} &mdash; Source: US National Park Service'
+ }
+ },
+ OceanBasemap: {
+ options: {
+ variant: 'Ocean_Basemap',
+ maxZoom: 13,
+ attribution: '{attribution.Esri} &mdash; Sources: GEBCO, NOAA, CHS, OSU, UNH, CSUMB, National Geographic, DeLorme, NAVTEQ, and Esri'
+ }
+ },
+ NatGeoWorldMap: {
+ options: {
+ variant: 'NatGeo_World_Map',
+ maxZoom: 16,
+ attribution: '{attribution.Esri} &mdash; 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} &mdash; Esri, DeLorme, NAVTEQ'
+ }
+ }
+ }
+ },
+ OpenWeatherMap: {
+ url: 'http://{s}.tile.openweathermap.org/map/{variant}/{z}/{x}/{y}.png',
+ options: {
+ attribution: 'Map data &copy; <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:
+ 'http://{s}.{base}.maps.cit.api.here.com/maptile/2.1/' +
+ 'maptile/{mapID}/{variant}/{z}/{x}/{y}/256/png8?' +
+ 'app_id={app_id}&app_code={app_code}',
+ options: {
+ attribution:
+ 'Map &copy; 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',
+ minZoom: 0,
+ maxZoom: 20
+ },
+ 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',
+
+ 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'
+ }
+ }
+ }
+ },
+ Acetate: {
+ url: 'http://a{s}.acetate.geoiq.com/tiles/{variant}/{z}/{x}/{y}.png',
+ options: {
+ attribution:
+ '&copy;2012 Esri & Stamen, Data from OSM and Natural Earth',
+ subdomains: '0123',
+ minZoom: 2,
+ maxZoom: 18,
+ variant: 'acetate-base'
+ },
+ variants: {
+ basemap: 'acetate-base',
+ terrain: 'terrain',
+ all: 'acetate-hillshading',
+ foreground: 'acetate-fg',
+ roads: 'acetate-roads',
+ labels: 'acetate-labels',
+ hillshading: 'hillshading'
+ }
+ }
+ };
+
+ L.tileLayer.provider = function (provider, options) {
+ return new L.TileLayer.Provider(provider, options);
+ };
+
+ L.Control.Layers.Provided = L.Control.Layers.extend({
+ initialize: function (base, overlay, options) {
+ var first;
+
+ var labelFormatter = function (label) {
+ return label.replace(/\./g, ': ').replace(/([a-z])([A-Z])/g, '$1 $2');
+ };
+
+ if (base.length) {
+ (function () {
+ var out = {},
+ len = base.length,
+ i = 0;
+
+ while (i < len) {
+ if (typeof base[i] === 'string') {
+ if (i === 0) {
+ first = L.tileLayer.provider(base[0]);
+ out[labelFormatter(base[i])] = first;
+ } else {
+ out[labelFormatter(base[i])] = L.tileLayer.provider(base[i]);
+ }
+ }
+ i++;
+ }
+ base = out;
+ }());
+ this._first = first;
+ }
+
+ if (overlay && overlay.length) {
+ (function () {
+ var out = {},
+ len = overlay.length,
+ i = 0;
+
+ while (i < len) {
+ if (typeof overlay[i] === 'string') {
+ out[labelFormatter(overlay[i])] = L.tileLayer.provider(overlay[i]);
+ }
+ i++;
+ }
+ overlay = out;
+ }());
+ }
+ L.Control.Layers.prototype.initialize.call(this, base, overlay, options);
+ },
+ onAdd: function (map) {
+ this._first.addTo(map);
+ return L.Control.Layers.prototype.onAdd.call(this, map);
+ }
+ });
+
+ L.control.layers.provided = function (baseLayers, overlays, options) {
+ return new L.Control.Layers.Provided(baseLayers, overlays, options);
+ };
+}());
+