From 08cdba4131650b3ee62a50b2507170f390b06445 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Mon, 11 Mar 2019 21:08:53 +0000 Subject: [PATCH 01/30] First attempt at leaflet 1.4 upgrade --- package.json | 2 +- worldmap/css/map.css | 4 +- worldmap/index.html | 10 +- worldmap/leaflet/Leaflet.Dialog.css | 6 +- worldmap/leaflet/Leaflet.Dialog.js | 28 +- worldmap/leaflet/Leaflet.fullscreen.min.js | 2 +- worldmap/leaflet/TileLayer.Grayscale.js | 63 +++-- worldmap/leaflet/easy-button.css | 6 +- worldmap/leaflet/easy-button.js | 43 ++- worldmap/leaflet/images/layers-2x.png | Bin 2898 -> 1259 bytes worldmap/leaflet/images/layers.png | Bin 1502 -> 696 bytes worldmap/leaflet/images/marker-icon-2x.png | Bin 4033 -> 2464 bytes worldmap/leaflet/images/marker-icon.png | Bin 1747 -> 1466 bytes worldmap/leaflet/images/marker-shadow.png | Bin 797 -> 618 bytes worldmap/leaflet/l.ellipse.min.js | 2 +- worldmap/leaflet/leaflet-heat.js | 4 +- worldmap/leaflet/leaflet-side-by-side.js | 220 +-------------- worldmap/leaflet/leaflet.active-layers.min.js | 6 +- worldmap/leaflet/leaflet.boatmarker.js | 92 +----- worldmap/leaflet/leaflet.css | 261 ++++++++++++++---- worldmap/leaflet/leaflet.js | 14 +- worldmap/leaflet/leaflet.js.map | 1 + worldmap/leaflet/leaflet.label.css | 53 ---- worldmap/leaflet/leaflet.label.js | 9 - worldmap/leaflet/leaflet.measurecontrol.js | 140 +--------- worldmap/worldmap.appcache | 4 +- 26 files changed, 310 insertions(+), 660 deletions(-) create mode 100644 worldmap/leaflet/leaflet.js.map delete mode 100644 worldmap/leaflet/leaflet.label.css delete mode 100644 worldmap/leaflet/leaflet.label.js diff --git a/package.json b/package.json index 9ab39a0..908972f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-red-contrib-web-worldmap", - "version": "1.5.30", + "version": "2.0.0", "description": "A Node-RED node to provide a web page of a world map for plotting things on.", "dependencies": { "cgi": "0.3.1", diff --git a/worldmap/css/map.css b/worldmap/css/map.css index 4e90461..87f0742 100644 --- a/worldmap/css/map.css +++ b/worldmap/css/map.css @@ -53,14 +53,14 @@ a { #map { position:fixed; top:40px; - bottom:0px; + bottom:1px; min-width:100%; display:block; } #foot { position:absolute; - bottom:-1px; + bottom:0px; left:-1px; z-index:1; font-size:9px; diff --git a/worldmap/index.html b/worldmap/index.html index 2f583f6..180cce0 100644 --- a/worldmap/index.html +++ b/worldmap/index.html @@ -32,7 +32,6 @@ - @@ -61,7 +60,6 @@ - @@ -1340,18 +1338,20 @@ function setMarker(data) { // If .label then use that rather than name tooltip if (data.label) { if (typeof data.label === "boolean" && data.label === true) { - marker.bindLabel(data.name, { noHide:true, offset:labelOffset }); + marker.bindTooltip(data.name, { permanent:true, direction:"right", offset:labelOffset }); } else if (typeof data.label === "string" && data.label.length > 0) { - marker.bindLabel(data.label, { noHide:true, offset:labelOffset }); + marker.bindTooltip(data.label, { permanent:true, direction:"right", offset:labelOffset }); } + console.log("M1",marker); delete marker.options.title; delete data.label; } // otherwise check for .tooltip then use that rather than name tooltip else if (data.tooltip) { if (typeof data.tooltip === "string" && data.tooltip.length > 0) { - marker.bindLabel(data.tooltip, { direction:"left", offset:[22,-16] }); + marker.bindTooltip(data.tooltip, { direction:"left", offset:[22,-16] }); + console.log("M2",marker); delete marker.options.title; delete data.tooltip; } diff --git a/worldmap/leaflet/Leaflet.Dialog.css b/worldmap/leaflet/Leaflet.Dialog.css index 8ede848..168d7c0 100644 --- a/worldmap/leaflet/Leaflet.Dialog.css +++ b/worldmap/leaflet/Leaflet.Dialog.css @@ -5,8 +5,6 @@ text-align: left; border-radius: 4px; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65); - display: flex; - flex-direction: column; } .leaflet-control-dialog .leaflet-control-dialog-inner { @@ -15,7 +13,7 @@ float: left; width: 100%; height: 100%; - padding: 16px 0px; + padding: 20px 0px; } .leaflet-control-dialog @@ -70,7 +68,7 @@ width: 100%; height: 100%; margin: 0px; - padding: 0 14px; + padding: 0 20px; min-height: 50px; overflow: auto; box-sizing: border-box; diff --git a/worldmap/leaflet/Leaflet.Dialog.js b/worldmap/leaflet/Leaflet.Dialog.js index 691fb19..d31ad17 100644 --- a/worldmap/leaflet/Leaflet.Dialog.js +++ b/worldmap/leaflet/Leaflet.Dialog.js @@ -1,22 +1,24 @@ L.Control.Dialog = L.Control.extend({ options: { - size: [ 200, 160 ], - minSize: [ 200, 100 ], - maxSize: [ 400, 800 ], - anchor: [ 44, -165 ], - position: "topright", + size: [ 300, 300 ], + minSize: [ 100, 100 ], + maxSize: [ 350, 350 ], + anchor: [ 250, 250 ], + position: "topleft", initOpen: true }, initialize: function(options) { this.options = JSON.parse(JSON.stringify(this.options)); L.setOptions(this, options); + this._attributions = {}; }, onAdd: function(map) { this._initLayout(); this._map = map; + this.update(); if (!this.options.initOpen) { @@ -176,17 +178,14 @@ L.Control.Dialog = L.Control.extend({ }, _initLayout: function() { - var className = "leaflet-control-dialog"; - var container = (this._container = L.DomUtil.create("div", className)); + var className = "leaflet-control-dialog", + container = (this._container = L.DomUtil.create("div", className)); container.style.width = this.options.size[0] + "px"; - //container.style.height = this.options.size[1] + "px"; + container.style.height = this.options.size[1] + "px"; container.style.top = this.options.anchor[0] + "px"; - // container.style.left = this.options.anchor[1] + "px"; - container.style.right = "0px"; - // container.style.display = "flex"; - // container.style["flex-direction"] = "column"; + container.style.left = this.options.anchor[1] + "px"; var stop = L.DomEvent.stopPropagation; L.DomEvent.on(container, "click", stop) @@ -361,11 +360,10 @@ L.Control.Dialog = L.Control.extend({ _updateLayout: function() { this._container.style.width = this.options.size[0] + "px"; - //this._container.style.height = this.options.size[1] + "px"; + this._container.style.height = this.options.size[1] + "px"; this._container.style.top = this.options.anchor[0] + "px"; - //this._container.style.left = this.options.anchor[1] + "px"; - this._container.style.right = "0px"; + this._container.style.left = this.options.anchor[1] + "px"; } }); diff --git a/worldmap/leaflet/Leaflet.fullscreen.min.js b/worldmap/leaflet/Leaflet.fullscreen.min.js index 184cc7f..4107127 100644 --- a/worldmap/leaflet/Leaflet.fullscreen.min.js +++ b/worldmap/leaflet/Leaflet.fullscreen.min.js @@ -1 +1 @@ -L.Control.Fullscreen=L.Control.extend({options:{position:"topleft",title:{"false":"View Fullscreen","true":"Exit Fullscreen"}},onAdd:function(map){var container=L.DomUtil.create("div","leaflet-control-fullscreen leaflet-bar leaflet-control");this.link=L.DomUtil.create("a","leaflet-control-fullscreen-button leaflet-bar-part",container);this.link.href="#";this._map=map;this._map.on("fullscreenchange",this._toggleTitle,this);this._toggleTitle();L.DomEvent.on(this.link,"click",this._click,this);return container},_click:function(e){L.DomEvent.stopPropagation(e);L.DomEvent.preventDefault(e);this._map.toggleFullscreen(this.options)},_toggleTitle:function(){this.link.title=this.options.title[this._map.isFullscreen()]}});L.Map.include({isFullscreen:function(){return this._isFullscreen||false},toggleFullscreen:function(options){var container=this.getContainer();if(this.isFullscreen()){if(options&&options.pseudoFullscreen){this._disablePseudoFullscreen(container)}else if(document.exitFullscreen){document.exitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else{this._disablePseudoFullscreen(container)}}else{if(options&&options.pseudoFullscreen){this._enablePseudoFullscreen(container)}else if(container.requestFullscreen){container.requestFullscreen()}else if(container.mozRequestFullScreen){container.mozRequestFullScreen()}else if(container.webkitRequestFullscreen){container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else if(container.msRequestFullscreen){container.msRequestFullscreen()}else{this._enablePseudoFullscreen(container)}}},_enablePseudoFullscreen:function(container){L.DomUtil.addClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(true);this.invalidateSize();this.fire("fullscreenchange")},_disablePseudoFullscreen:function(container){L.DomUtil.removeClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(false);this.invalidateSize();this.fire("fullscreenchange")},_setFullscreen:function(fullscreen){this._isFullscreen=fullscreen;var container=this.getContainer();if(fullscreen){L.DomUtil.addClass(container,"leaflet-fullscreen-on")}else{L.DomUtil.removeClass(container,"leaflet-fullscreen-on")}},_onFullscreenChange:function(e){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(fullscreenElement===this.getContainer()&&!this._isFullscreen){this._setFullscreen(true);this.fire("fullscreenchange")}else if(fullscreenElement!==this.getContainer()&&this._isFullscreen){this._setFullscreen(false);this.fire("fullscreenchange")}}});L.Map.mergeOptions({fullscreenControl:false});L.Map.addInitHook(function(){if(this.options.fullscreenControl){this.fullscreenControl=new L.Control.Fullscreen(this.options.fullscreenControl);this.addControl(this.fullscreenControl)}var fullscreenchange;if("onfullscreenchange"in document){fullscreenchange="fullscreenchange"}else if("onmozfullscreenchange"in document){fullscreenchange="mozfullscreenchange"}else if("onwebkitfullscreenchange"in document){fullscreenchange="webkitfullscreenchange"}else if("onmsfullscreenchange"in document){fullscreenchange="MSFullscreenChange"}if(fullscreenchange){var onFullscreenChange=L.bind(this._onFullscreenChange,this);this.whenReady(function(){L.DomEvent.on(document,fullscreenchange,onFullscreenChange)});this.on("unload",function(){L.DomEvent.off(document,fullscreenchange,onFullscreenChange)})}});L.control.fullscreen=function(options){return new L.Control.Fullscreen(options)}; \ No newline at end of file +(function(factory){var L;if(typeof define==="function"&&define.amd){define(["leaflet"],factory)}else if(typeof module!=="undefined"){L=require("leaflet");module.exports=factory(L)}else{if(typeof window.L==="undefined"){throw new Error("Leaflet must be loaded first")}factory(window.L)}})(function(L){L.Control.Fullscreen=L.Control.extend({options:{position:"topleft",title:{"false":"View Fullscreen","true":"Exit Fullscreen"}},onAdd:function(map){var container=L.DomUtil.create("div","leaflet-control-fullscreen leaflet-bar leaflet-control");this.link=L.DomUtil.create("a","leaflet-control-fullscreen-button leaflet-bar-part",container);this.link.href="#";this._map=map;this._map.on("fullscreenchange",this._toggleTitle,this);this._toggleTitle();L.DomEvent.on(this.link,"click",this._click,this);return container},_click:function(e){L.DomEvent.stopPropagation(e);L.DomEvent.preventDefault(e);this._map.toggleFullscreen(this.options)},_toggleTitle:function(){this.link.title=this.options.title[this._map.isFullscreen()]}});L.Map.include({isFullscreen:function(){return this._isFullscreen||false},toggleFullscreen:function(options){var container=this.getContainer();if(this.isFullscreen()){if(options&&options.pseudoFullscreen){this._disablePseudoFullscreen(container)}else if(document.exitFullscreen){document.exitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.webkitCancelFullScreen){document.webkitCancelFullScreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else{this._disablePseudoFullscreen(container)}}else{if(options&&options.pseudoFullscreen){this._enablePseudoFullscreen(container)}else if(container.requestFullscreen){container.requestFullscreen()}else if(container.mozRequestFullScreen){container.mozRequestFullScreen()}else if(container.webkitRequestFullscreen){container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}else if(container.msRequestFullscreen){container.msRequestFullscreen()}else{this._enablePseudoFullscreen(container)}}},_enablePseudoFullscreen:function(container){L.DomUtil.addClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(true);this.fire("fullscreenchange")},_disablePseudoFullscreen:function(container){L.DomUtil.removeClass(container,"leaflet-pseudo-fullscreen");this._setFullscreen(false);this.fire("fullscreenchange")},_setFullscreen:function(fullscreen){this._isFullscreen=fullscreen;var container=this.getContainer();if(fullscreen){L.DomUtil.addClass(container,"leaflet-fullscreen-on")}else{L.DomUtil.removeClass(container,"leaflet-fullscreen-on")}this.invalidateSize()},_onFullscreenChange:function(e){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;if(fullscreenElement===this.getContainer()&&!this._isFullscreen){this._setFullscreen(true);this.fire("fullscreenchange")}else if(fullscreenElement!==this.getContainer()&&this._isFullscreen){this._setFullscreen(false);this.fire("fullscreenchange")}}});L.Map.mergeOptions({fullscreenControl:false});L.Map.addInitHook(function(){if(this.options.fullscreenControl){this.fullscreenControl=new L.Control.Fullscreen(this.options.fullscreenControl);this.addControl(this.fullscreenControl)}var fullscreenchange;if("onfullscreenchange"in document){fullscreenchange="fullscreenchange"}else if("onmozfullscreenchange"in document){fullscreenchange="mozfullscreenchange"}else if("onwebkitfullscreenchange"in document){fullscreenchange="webkitfullscreenchange"}else if("onmsfullscreenchange"in document){fullscreenchange="MSFullscreenChange"}if(fullscreenchange){var onFullscreenChange=L.bind(this._onFullscreenChange,this);this.whenReady(function(){L.DomEvent.on(document,fullscreenchange,onFullscreenChange)});this.on("unload",function(){L.DomEvent.off(document,fullscreenchange,onFullscreenChange)})}});L.control.fullscreen=function(options){return new L.Control.Fullscreen(options)}}); diff --git a/worldmap/leaflet/TileLayer.Grayscale.js b/worldmap/leaflet/TileLayer.Grayscale.js index 7d9e934..1dae67c 100644 --- a/worldmap/leaflet/TileLayer.Grayscale.js +++ b/worldmap/leaflet/TileLayer.Grayscale.js @@ -4,45 +4,50 @@ L.TileLayer.Grayscale = L.TileLayer.extend({ options: { - enableCanvas: true + quotaRed: 21, + quotaGreen: 71, + quotaBlue: 8, + quotaDividerTune: 0, + quotaDivider: function() { + return this.quotaRed + this.quotaGreen + this.quotaBlue + this.quotaDividerTune; + } }, initialize: function (url, options) { - var canvasEl = document.createElement('canvas'); - if( !(canvasEl.getContext && canvasEl.getContext('2d')) ) { - options.enableCanvas = false; - } - + options = options || {} + options.crossOrigin = true; L.TileLayer.prototype.initialize.call(this, url, options); + + this.on('tileload', function(e) { + this._makeGrayscale(e.tile); + }); }, - _loadTile: function (tile, tilePoint) { - tile.setAttribute('crossorigin', 'anonymous'); - L.TileLayer.prototype._loadTile.call(this, tile, tilePoint); + _createTile: function () { + var tile = L.TileLayer.prototype._createTile.call(this); + tile.crossOrigin = "Anonymous"; + return tile; }, - _tileOnLoad: function () { - if (this._layer.options.enableCanvas && !this.canvasContext) { - var canvas = document.createElement("canvas"); - canvas.width = canvas.height = this._layer.options.tileSize; - this.canvasContext = canvas.getContext("2d"); - } - var ctx = this.canvasContext; + _makeGrayscale: function (img) { + if (img.getAttribute('data-grayscaled')) + return; - if (ctx) { - this.onload = null; // to prevent an infinite loop - ctx.drawImage(this, 0, 0); - var imgd = ctx.getImageData(0, 0, this._layer.options.tileSize, this._layer.options.tileSize); - var pix = imgd.data; - for (var i = 0, n = pix.length; i < n; i += 4) { - pix[i] = pix[i + 1] = pix[i + 2] = (3 * pix[i] + 4 * pix[i + 1] + pix[i + 2]) / 8; - } - ctx.putImageData(imgd, 0, 0); - this.removeAttribute("crossorigin"); - this.src = ctx.canvas.toDataURL(); - } + img.crossOrigin = ''; + var canvas = document.createElement("canvas"); + canvas.width = img.width; + canvas.height = img.height; + var ctx = canvas.getContext("2d"); + ctx.drawImage(img, 0, 0); - L.TileLayer.prototype._tileOnLoad.call(this); + var imgd = ctx.getImageData(0, 0, canvas.width, canvas.height); + var pix = imgd.data; + for (var i = 0, n = pix.length; i < n; i += 4) { + pix[i] = pix[i + 1] = pix[i + 2] = (this.options.quotaRed * pix[i] + this.options.quotaGreen * pix[i + 1] + this.options.quotaBlue * pix[i + 2]) / this.options.quotaDivider(); + } + ctx.putImageData(imgd, 0, 0); + img.setAttribute('data-grayscaled', true); + img.src = canvas.toDataURL(); } }); diff --git a/worldmap/leaflet/easy-button.css b/worldmap/leaflet/easy-button.css index bc960e3..18ce9ac 100644 --- a/worldmap/leaflet/easy-button.css +++ b/worldmap/leaflet/easy-button.css @@ -3,8 +3,9 @@ background-color: #fff; border: none; border-bottom: 1px solid #ccc; - min-width: 26px; - min-height: 26px; + width: 26px; + height: 26px; + line-height: 26px; display: block; text-align: center; text-decoration: none; @@ -47,6 +48,7 @@ position: relative; } + .leaflet-touch .leaflet-bar button { width: 30px; height: 30px; diff --git a/worldmap/leaflet/easy-button.js b/worldmap/leaflet/easy-button.js index f03f3bd..2863fd5 100644 --- a/worldmap/leaflet/easy-button.js +++ b/worldmap/leaflet/easy-button.js @@ -169,10 +169,8 @@ L.Control.EasyButton = L.Control.extend({ this.button = L.DomUtil.create(this.options.tagName, ''); - // the next three if statements should be collapsed into the options - // when it's time for breaking changes. - if (this.tagName === 'button') { - this.button.type = 'button'; + if (this.options.tagName === 'button') { + this.button.setAttribute('type', 'button'); } if (this.options.id ){ @@ -186,12 +184,13 @@ L.Control.EasyButton = L.Control.extend({ // don't let double clicks and mousedown get to the map L.DomEvent.addListener(this.button, 'dblclick', L.DomEvent.stop); L.DomEvent.addListener(this.button, 'mousedown', L.DomEvent.stop); + L.DomEvent.addListener(this.button, 'mouseup', L.DomEvent.stop); // take care of normal clicks L.DomEvent.addListener(this.button,'click', function(e){ L.DomEvent.stop(e); this._currentState.onClick(this, this._map ? this._map : null ); - this._map.getContainer().focus(); + this._map && this._map.getContainer().focus(); }, this); // prep the contents of the control @@ -219,6 +218,11 @@ L.Control.EasyButton = L.Control.extend({ state: function(newState){ + // when called with no args, it's a getter + if (arguments.length === 0) { + return this._currentState.stateName; + } + // activate by name if(typeof newState == 'string'){ @@ -279,8 +283,6 @@ L.Control.EasyButton = L.Control.extend({ } }, - - enable: function(){ L.DomUtil.addClass(this.button, 'enabled'); L.DomUtil.removeClass(this.button, 'disabled'); @@ -288,8 +290,6 @@ L.Control.EasyButton = L.Control.extend({ return this; }, - - disable: function(){ L.DomUtil.addClass(this.button, 'disabled'); L.DomUtil.removeClass(this.button, 'enabled'); @@ -297,24 +297,21 @@ L.Control.EasyButton = L.Control.extend({ return this; }, - - removeFrom: function (map) { - - this._container.parentNode.removeChild(this._container); - this._map = null; - - return this; - }, - - onAdd: function(){ - var containerObj = L.easyBar([this], { + onAdd: function(map){ + var bar = L.easyBar([this], { position: this.options.position, leafletClasses: this.options.leafletClasses }); - this._container = containerObj.container; - return this._container; - } + this._anonymousBar = bar; + this._container = bar.container; + return this._anonymousBar.container; + }, + removeFrom: function (map) { + if (this._map === map) + this.remove(); + return this; + }, }); diff --git a/worldmap/leaflet/images/layers-2x.png b/worldmap/leaflet/images/layers-2x.png index a2cf7f9efef65d2e021f382f47ef50d51d51a0df..200c333dca9652ac4cba004d609e5af4eee168c1 100644 GIT binary patch delta 1250 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 R9gYA1002ovPDHLkV1kmEP{RNK delta 1495 zcmV;|1t|Ks1>Osg8Gi-<005~MzCV_|S*E^l&Yo9;Xs000GBNkl!>2O#u)-K)t-b7_ z4;_qQVO+!wMxifbbbXMOZa$PzSqGbO(wN3ZhpEBbgrat>S~Xe|bN~GIP~y~S)o#Dn z?>Xmle&?LuA3`a`e%7T+mk0oKb#?8_k?aT5+uK{?cDvsNfK)2=Lq|u)#QzHF?(Qyb zY-~K^a=Dt#W`8pPV0CpB>2x|AjYe;Fc6L7h&!E1(zLV9})u*ghYw33S?Ck9Fgo=++wEZ(=B3H#x{g#TB~MOH_MSa^c4|)`Ns{=6hK6>J$8)^2 zw3OYbQA&$)x!mgjU^1EhAcSN$>dVW^nk>r$u~@866o1A1j-Xq&ZZo_Fkad)d~E z^7(wNq9`qtQX>EmLe>lh!w}E&<6CWKW@etrvi#%e)2E}GK-aEatEjE5J>zn@4)Z*} zX^WbsRjjS8ozQjt;C3Zp80Igd(fB*dvU6J!Bk6Q{bbNgL=DBm{=E&{ax8L%5y>AGD zVA@h9!++Y^TC=LE^#ESpBtYjlZp>&jh6y3cMqy!LA(u=he`Vcn_jgXGb4d^cy&x)z z;>qQ5Z|S=31VDCy007Z-{h+FT)INYo#%4dX9ik_aH*K}R)TU}i} ze(cyW;`Mr8f$`5uCX={#?;bUq%>xX>w4XnJevw3@(UX+Ys{s5dGZ9oU=UWT zb=_xfZVr)1gt9C<$n$*rg$oy+kvn(pv;w#apnhd#1@U+s<>lo#a^whj{>9)?N)eC8 zAtgtbeTH zIIfuIdD!iCWV2aBqfrdC8xVVVc)>hc<_H~FX%NQCOLV0;P zYHDg=G#U$VGCVw7OD^UcnH-d5xs+0RnSW49A&O!#fXf`moeBg3oFEAPg7w0}0uqS?91aKS z>+9DiP}g;gjg4VyY6?D|4}u_UgiqeTe?Oxr$}a#umn7-=rrTQ-#X11r2!en>AQ0d< zuC&mjbUKZvPoE+X2mk;^Mn+IsSqYcRwO&3=(^g}#*znxk90l;PBuRf3Vt@bZJrYHc z0C=AeBKmy3#j2{RmV%bcAKzn;9E(OHU-}Cg%w4y z9Ke@Gqw#Ps7_=4_7gud(m(6BpB9X|WY&JU%;8RJG=C`xk_0J%RVjCgkE1S)hsjI7N zVHm~;0F+WS9*+-BPfwdErBI!cB!ylUXHUN%Q4~1X*U3L xOOmAS7Gq!kI#Cpz0KNu50em7!(xbil{tcM#ah;kQ-Ddy*002ovPDHLkV1nd}%zyv@ diff --git a/worldmap/leaflet/images/marker-icon-2x.png b/worldmap/leaflet/images/marker-icon-2x.png index 0015b6495fa458ad39d51cb4b913430016f48d33..88f9e501888c9c6cb29ad340d9a888627dd1b6d8 100644 GIT binary patch literal 2464 zcmV;R319Y!P)YnU^5s62$4H-fe}gSR(=wKRaTHh!@*b)YV6mo|a4Fn6Rgc&Rpk zvn_X|3VY?v=>nJ{slE^V1GaGWk}m@aIWGIpghbfPh8m@aIWEo_%AZI>==moIFVE^L=C zZJ91?mo03UEp3-BY?wBGur6$uD{Yr9Y?m%SHF8Fk1pc(Nva%QJ+{FLkalfypz3&M|||Fn`7|g3c~4(nXHKFmRnwn$J#_$xE8i z|Ns9!kC;(oC1qQk>LMp3_a2(odYyMT@>voX=UI)k>1cJdn;gjmJ-|6v4nb1Oryh)eQMwHP(i@!36%vGJyFK(JTj?Vb{{C=jx&)@1l zlFmnw%0`&bqruifkkHKC=vbiAM3&E`#Mv>2%tw;VK8?_|&E89cs{a1}$J*!f_xd-C z&F%B|oxRgPlh0F!txkxrQjNA`m9~?&&|jw4W0<`_iNHsX$VQXVK!B}Xkh4>av|f_8 zLY2?t?ejE=%(TnfV5iqOjm?d;&qI~ZGl|SzU77a)002XDQchC<95+*MjE@82?VLm= z3xf6%Vd@99z|q|-ua5l3kJxvZwan-8K1cPiwQAtlcNX~ZqLeoMB+a;7)WA|O#HOB% zg6SX;754xD1{Fy}K~#8Ntklac&zTpadXZ& zC*_=T&g7hfbI$R?v%9?sknIb97gJOJ=`-8YyS3ndqN+Jm+x33!p&Hc@@L$w))s2@N ztv~i}Emc?DykgwFWwma($8+~b>l?tqj$dh13R^nMZnva9 zn0Vflzv2Dvp`oVQw{Guby~i`JGbyBGTEC{y>yzCkg>K&CIeQ$u;lyQ+M{O~gEJ^)Z zrF3p)^>|uT;57}WY&IRwyOQ=dq%Az}_t=_hKowP!Z79q0;@Zu(SWEJJcHY+5T6I({ zw)wj*SNi4wrd+POUfZe4gF77vW?j zoFS}|r2n&$U9Y!S4VEOyN}OpZZi|?cr1VcE_tHsDQgp-ga(SwkBrkCm{|*-yb=}ZW zvcYvLvfA90TPn|!-TuYJV<6`}+RJeRgP3EA=qQcF9k0*#*{f&I_pjam%I6Dd#YE|G zqB!R}tW-K!wV1w+4JcFA_s6~=@9F&j8`u$-ifLN3vK;`lvaA-`jRn_}(8|)!3?-}I zvFi{H;@A$gEZYh?%|Qr_y#*UkOPjwiRCsJQ>mb6h5yGIk6C5_XA=8T?IBfm_?+P0; zhhUs)-(0R*H<&Kku(1>#cGtOpk&Z&kQcw&SJv-4VY<+;=8hYnoX zfNJMCa9)^5Z0;2dCUk;x-%#yS!I~Jr3pNuI!g_tHz!$hKwt1GL~sFvx)3u4TA zv>CLGdQtoZ7Du7ctJRfTqY;FPxs1G{ZJ?73D5J@OO{6BHcPbk{_mjg&p2QFeke%QI zlAJ-kvjuwy1<5D-6>su68A+i998aSZNnQX)+Q}6(GK-C%8G-!1bOJBONU{gT%IOOE z;Yk24YC@^lFW77>r6x7eS1Omc;8=GUp#&zLQ&L{ zv8$hGC`wp~$9pR>f%-_Ps3>YhzP(+vC(E*zr1CVO8ChN^MI-VGMX7+|(r!SGZ9gd5 zzO9sQd>sm|f1|X&oh=8lOzd6+ITvo zCXInR?>RZ#>Hb*PO=7dI!dZ(wY4O}ZGv zdfQFio7+0~PN*RFCZGM6@9-o~y*@?;k00NvOsw54t1^tt{*ATMs^2j}4Wp=4t3RH* z_+8b`F-{E=0sOgM<;VHTo!Ij3u zmmI`2?K7g(GOcGA)@h?$SW&pwHdtj1n57PLI8&6RHhx4R%Q7b z^JEqR)@06V!pbS*@D_ZyRMo_LlT}r{#sXOx4kM-V<_V{!5SSuM^SIVCA37|nY7LWQ zZA#B1h4l`6asz=Lvax_#GMRX|NF>=$=p{Qn0i@ExX1jGhy@B8a*_uR+ODEbVi8ObL zezG?azy>E~S~dl43&8<$(2H}P&*tuBdESUP83KQ?8B z?K(!uS>H1wlWQz;qOfB`T#TZ=EoSp~vZ5XtCvwm1h*Ex6mzTsn_y@_=xREIslV-%- zpdWkEzMjeNOGWrSM32gpBt27*O29NdhGzuDgYxcf`Jjjqw@B;Vmdb@fxdhCRi`Kg> zmUTr$=&@#i!%F4Q6mb&4QKfR^95KJ!<6~fqx-f^66AV!|ywG{6D^Vay-3b99>XOe# e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 4033 zcmV;y4?ggTP)h876I}?PQWpJLz%)x;}A1s3+;FijJ6nrW+Pl4)+EiN1Z`Z};D5lx0BtvZnmddk_DqORVPG3@A z|MUAQ5d8CyG`n3U%W5w|$1lmUI>14Eit;<8S?vK{s*?{-Ss+T)u_t92ZJTA8?H?iF zR>;v&x7=gkU3dZlw!Q;_2%o}};F13pC@6@Z$Rj?JWwli(vf7`Uv_M3vmPaI6ZRyg? zwr>!?ft(K4bi>Np0r=D2_w3@8-GdNOt_Q!(r!eStxP|AMG^4f1MRn*m6B>vlqxDrZ z^e+Su+;WdVxV9T!t{sF|>)yKqtLo0f%X=)K?{|}VWzP^q==9)`cMLdQ#3#~>wy4qc zkwZdrRrSA+s#>ZLK#*s&!Gi5)Vb$&-com)GuwvIBL{{}fScMrv%gqq1Gu;L{wqS=D zA}ae~dCefKx&Wue^ipzWJZ7j zXOrbS%~*l+4B-|15TG$lD8hF1;}EmhTVCA{%ItO^Ul121NsW&?6bK%9NRoQ!5CUZB zO|YcG$Vgw>H3Xqp1%I_^QV@c+R-jF?y|mH7qa2-(C z0ugQ8pDRw<4{n()NIJyegIV${HQGfO5|ixWN;7!nv;%PvB8%H$$MGRJ`}fQ6#kbes z>h&MMcTZrm#Ts3`fhrQak0q-hmbwneh)8_kw~}aV#&vv&0DQ zTMfe^L}O-h6u4_rJ&^vk4ik*_)7p25=@J%{bu-Se@_xIv$v4hVrK*YPiWBP+oJ5Ir zr3moEi=@SPav_d;H&n2Pu<`*W>zjWJNOw_DD_r~j28`tsSACjsxMemoPU@AB>{HW| ztXJMqrYlUW(>mdwMq$Dp@GE$mom`;n2e&N-yI52)$YiOCq+5IXJdE|zd*KS>5aSRb z&c)UdVb4DKNOFD!$C<8h{hnqg;riV@!i3$}=UGTOZpIU)>0{iquGsT|d?Y#Yne-5SPQrxRe+$>w;#JvMh{Q|>l$k-X z*)S}8wwajRf-*gjo*13Ddi{I2mrq!J6XOcRiG#RlA-3m(|8_HzBcDkRaoI^2U;8Bj zLQ1_>oIw~*j8y0k)gb88Fw%SV$TO(&Ik0F^e6@= zLHw>E1o&f_sL`n+G87&T9yqi}E?j2>(j)xilP|{{#Ely_L7r5{ctW;yF>b25Js}>`iO75R6BpgcE9|%%7ZRzD#1@K!W4(uK@LfLHB`NAX3qZf^YwSvp;i9@cqQ*)vIMW(V~k@y^(GFR zk?hjYBY8Jfi-jYuvcKGw#YY%vDItj}3 z7Q|uPsUF8INEZfRw#oQYFK+5{*aoL3O>O}4)g`9<@EtcFTw-*g{8$|m2r9KG(G1~; z5e{y}MqI4=Zwu&dpd`7ElAEf=5>(R5d?a55G39=D1mdJp{meN=dkKNp1|7_pf2kQ< za(hP&%AULsujtTO-x4$UA&=)46DW!dAjWf}ei8-FW91wTuZPe2cpnffC0y4@sv2)Mw;_ci|bZ`gPMKR{MfO zKlGq*A1TRFnjioxLQU_S-3#-w^pgr|akh3F*-@`3{jraTr2X0$DxU9J6 zonZ#3S7xR6ObDnNWJ8&AnybbQ=UC0Wae1hQ7p*{c(l)9RmncZ49Yhd#w`%) zJK~gOp5Ur+-DQnt#)LdUN8^=@2-enu2QF9ys>*XI-S-6QHw&K;_-m@Idn%23!X5>r z@k-;CZ74HNf_oumFy8=wOzyrX$n%YiOPc-`SB%=YvR_CYcdtRU%#lH0jzd^#(k@-di-hx~al>I_R&DnN#rm07DYJ+aF!NQPu( zbl)m=2e-pbn6kGOq%ozxMkhXFRl&@1RiUgum3Vj1u#)6jsv%5j<*IR6^t$emDShpN z7o|>QRl&?k@XAh_XN1|9@o5QNcLkjz8A*rcE*n}g+c*p5 z7~m;%`pNaTgO1TTk`ZiZ=Bn}0^D(8ryf5D9p^RE?AC-e7yN3;(S*bnf{JGme)u3~( zS$ORcqqFvg`t|$f)g;O&W!6%aW^l!m_k7b2$D02GPgh9AD1`()~cZ8Oj2AQyau(pP%|J;>TN`^P;r=4@@A|s=UjbU%Sr& zOCYBon0Iw=*%^D@^5cwU6_3(-JaBfNklGNuHDcIX17Zdjl&3`L?0sTjIws<{(( zDh&g-s0<@jYQyl?D*X^?%13;ml^gy>iMrY_^1WI=(g@LMi+?DxEGH}V!}%)1(4pAI z9S85V*y-_k@6a;~-{bJ){I}`;E+@q`?K*@wrEWlvyeWyuwFB3ybOUxcez?cOl0Vq@ z7Tw$JrKC;|#hcx1i8|WR|7f3^5UrM~U& z(OBPr<9{;>)vd(t!c_U?gAcsmXGXGkRdn4pb}oaPoE)%Y5}S9^y)^@L?D%mS?|Zs+ zJ;gO_AC-?fc)`z;<}Ug!sm)4Jt!~mZI5{MAcqyu8GnKE{PZNE{^&X0<9KqE3<%18r z;OB|6=ly|7c(aSt^$rdYL2}ceV?vR>t#4CQ`F{W<8ohq`-~+EXXa4UH*@j_3Sy|`c zfI8ZrZW)?TB(-}pMOJO1m^ROt`QYaXv-%7n`hml7?H*FpIyhj+$sI0I6)d3b?|eC? zfakLxNtrjFaqPfi`{jc#SU-43l-;Z4iPO68R^%=G8^e{=*#8gCjWTyGE!+JbyM6It zBY%uIKOs&20<0TGF)9~)^4x`giPF20c>Fglmx|Imk0rJxHS36C8uqY+ z;*2gz&@UxvW)CYIRl5^whd94H@PJR0)^!y8?6o3H>)sz)zLCP4+$65F`$57Ww871i z#WmYN%$BH!H@eY3DhE8F<(rO!m%F?C!alLY0qfPsAQ@Kek`;HBh50Kpr^a$IPU%^tdQ zjx8WSB)Wy!1bK^n3}5!B_XG>XOxwZmn!W6F+@ZHk8^{Z-+D+iO^^LX*P7vWnQ-22+ zSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y3)2mdBYy^(NklgF+#9zZY7a#;@J z(5X0e&McXK2n7+jhR}<0i-1U5t`>D@JSJ*^swjdwq0keUf9!BETXZhVyjqS4&z|?2 zHdJnOU-HYF_xSyu=XsCkdtVv=(53>uME@3F*5J;OHwJNJdVhvrcH_HK(smFi>yNz1G$8DUFw3wcsqmtVHt z9$jOBO$U2nt$(%~qN;5WS!snZwS_84owRSn{ta3S1mv8v^P~+nFZrn@6B^-U)(g4f z(|y9?w!zKl`DZoV5T>$#a1yM>ahox+@RG~_a3rVuQD^m-Mm!~F-oehhQAz`BIM55> zYAb{)EmH;=A6?rEt1CKzlX>bPKmE+SQARi!^}3LP=70VT+8zikH$%w&(FjF^5z+nQ z_f!1BmVVT`=wgJOeryw8e6lZ^OpnqEL1ktagsZHuuBHb*M^B?QHmY2w>46CK=&^(! zt?357xZc6uef(?62u{;%uk_>gRpka)RcV93eP$PYTGNd;+A$ z4e;ZwyD<1@2!8$ZKJ3w%!6)+sCALy+bKwykqKCS6qEGWmJ)97b-QXY|`<0lS5THkE ztGgjE>ojOvuftfM&Ugd-rQg9C+|FdGM)HXs(SIfS7|D^7p@o+q9Ou%v*yO~DatlP1 zT!pB79SjW*!+778eP=;f)Jm|uJCaZIh%V8mv34E27g=TiL5UgodyGzmmm@hx55*0}35{r5dLUS# zgMUb+&4o|&h%PJX&|PArHKgDY1fykcq0tFaC*f`>ZJf|ZT=fMA%58?wGOG(e1o=c4 z^;>9+M6KLUrW+LQw*sfY=!7qZyb=#3FYQ}s?Y%js0qc!Bz)d-X9vi{G*zCe5dcLxT z0p>1^gvN@mUd2hNdl-S?dgXVyAei!|6@R!%wQ%g}b!z*P@6pf@=uJO^PwF8E&c6sN z$}FR}M30?Z_kg*hDw4*Et)9!=Q8^TWTabqyc;{WX7tzq^S|jB1=3FXnF(6lQL63JzHommDt#5BxxZF|+uW>L$ z%CBbpbPz}+v*@wv-#s$U!*WR%%u8-}!d;5V5ZiH++Q8SXQT#;upV`QN zJ59Bg5m(jci3`0T4X-&^GU6)x7$Vi0XMWB(2hrdK^!hq0t!bDg$Hh)-9L62h`&{0P zBf%7vM>69o`k4~kx;=3f1MV@Zi05wPak??l<2A!r8mGgXmJ!UbK?oq_|7PUzuOM~0 aoPPlVyRC(T@#}&B0000Tm8Gi%-0007M$bA3+0x?NMK~#7F?b3yg<3JDu&4bGlmUw zt}e{0ExFEAztm>RdS+ssW(-8|?xr0(?$ zvBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrPs(rTFX@W#t$hXNvbgX`g zK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z<&`XDT_lny^IyOW>P2{MdSfj zK%nF5j9n~OOCgk>g&P;ie(tAI8g#ALYNP$7igtMWgP_4s&vtfJ7L1Y^w*|DH2 z4k!##fD&h;zFNMCWJeDoAOT#l*EHGhV#p_aw0tIcB&aDmFd_@=aUq#d;5$Cxjpe<8 zU)hi|v{kghh)gw3_|6Lt20h19ydby-=f@buKww1boDKMB%oE(lW4y+v%oW7Mp<#bb qUhx(WaofO`_<|$22vQKmbetbw(=+Wjl0aer0000$l;9Os4txR8dx@uJ8hXT%8MQwS)4FvQ@{juiSwS^OV6l>pcY|%3&<7AL!SYq zkUYeDfL%^Ns)nE#>i0pR^J~2K~ahRLR#?Jko}&dLtG% z<6QlYG^mO3{Xh^o%DkR9@I1E33pI#nwFYGLL;@#8lV7tcs3skl7= P015yANkvXXu0mjfxmjuc diff --git a/worldmap/leaflet/l.ellipse.min.js b/worldmap/leaflet/l.ellipse.min.js index e25532c..3d7826c 100644 --- a/worldmap/leaflet/l.ellipse.min.js +++ b/worldmap/leaflet/l.ellipse.min.js @@ -1 +1 @@ -L.Ellipse=L.Path.extend({initialize:function(d,c,a,b){L.Path.prototype.initialize.call(this,b);this._latlng=L.latLng(d);if(a){this._tiltDeg=a}else{this._tiltDeg=0}if(c){this._mRadiusX=c[0];this._mRadiusY=c[1]}},options:{fill:true,startAngle:0,endAngle:359.9},setLatLng:function(a){this._latlng=L.latLng(a);return this.redraw()},setRadius:function(a){this._mRadiusX=a[0];this._mRadiusY=a[1];return this.redraw()},setTilt:function(a){this._tiltDeg=a;return this.redraw()},projectLatlngs:function(){var e=this._getLngRadius(),c=this._getLatRadius(),d=this._latlng,a=this._map.latLngToLayerPoint([d.lat,d.lng-e]),b=this._map.latLngToLayerPoint([d.lat-c,d.lng]);this._point=this._map.latLngToLayerPoint(d);this._radiusX=Math.max(this._point.x-a.x,1);this._radiusY=Math.max(b.y-this._point.y,1);this._endPointParams=this._centerPointToEndPoint()},getBounds:function(){var c=this._getLngRadius(),a=this._getLatRadius(),b=this._latlng;return new L.LatLngBounds([b.lat-a,b.lng-c],[b.lat+a,b.lng+c])},getLatLng:function(){return this._latlng},getPathString:function(){var f=this._point,e=this._radiusX,d=this._radiusY,b=this._tiltDeg,a=this._endPointParams;if(this._checkIfEmpty()){return""}if(L.Browser.svg){return"M"+a.x0+","+a.y0+"A"+e+","+d+","+b+","+a.largeArc+","+a.sweep+","+a.x1+","+a.y1+" z"}else{f._round();e=Math.round(e);d=Math.round(d);return"AL "+f.x+","+f.y+" "+e+","+d+" "+b+","+(65535*360)}},getRadius:function(){return new L.point(this._mRadiusX,this._mRadiusY)},_centerPointToEndPoint:function(){var j=this._point,e=this._radiusX,a=this._radiusY,g=(this.options.startAngle+this.options.endAngle)*L.LatLng.DEG_TO_RAD,h=this.options.startAngle*L.LatLng.DEG_TO_RAD,m=this.options.endAngle,i=this._tiltDeg*L.LatLng.DEG_TO_RAD;var f=j.x+Math.cos(i)*e*Math.cos(h)+Math.sin(-i)*a*Math.sin(h);var l=j.y+Math.sin(i)*e*Math.cos(h)+Math.cos(i)*a*Math.sin(h);var d=j.x+Math.cos(i)*e*Math.cos(g)+Math.sin(-i)*a*Math.sin(g);var k=j.y+Math.sin(i)*e*Math.cos(g)+Math.cos(i)*a*Math.sin(g);var b=(m>180)?1:0;var n=(m>0)?1:0;return{x0:f,y0:l,tilt:i,largeArc:b,sweep:n,x1:d,y1:k}},_getLatRadius:function(){return(this._mRadiusY/40075017)*360},_getLngRadius:function(){return((this._mRadiusX/40075017)*360)/Math.cos(L.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map){return false}var a=this._map._pathViewport,b=this._radiusX,c=this._point;return c.x-b>a.max.x||c.y-b>a.max.y||c.x+b180?1:0,m=f>0?1:0;return{x0:h,y0:i,tilt:g,largeArc:l,sweep:m,x1:j,y1:k}},_empty:function(){return this._radiusX&&this._radiusY&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(a){var b=Math.sin(this._tilt),c=Math.cos(this._tilt),d=a.x-this._point.x,e=a.y-this._point.y,f=c*d+b*e,g=b*d-c*e;return f*f/(this._radiusX*this._radiusX)+g*g/(this._radiusY*this._radiusY)<=1}}),L.ellipse=function(a,b,c,d){return new L.Ellipse(a,b,c,d)}; diff --git a/worldmap/leaflet/leaflet-heat.js b/worldmap/leaflet/leaflet-heat.js index 903adfb..e95d557 100644 --- a/worldmap/leaflet/leaflet-heat.js +++ b/worldmap/leaflet/leaflet-heat.js @@ -3,9 +3,9 @@ simpleheat, a tiny JavaScript library for drawing heatmaps with Canvas https://github.com/mourner/simpleheat */ -!function(){"use strict";function t(i){return this instanceof t?(this._canvas=i="string"==typeof i?document.getElementById(i):i,this._ctx=i.getContext("2d"),this._width=i.width,this._height=i.height,this._max=1,void this.clear()):new t(i)}t.prototype={defaultRadius:25,defaultGradient:{.4:"blue",.6:"cyan",.7:"lime",.8:"yellow",1:"red"},data:function(t){return this._data=t,this},max:function(t){return this._max=t,this},add:function(t){return this._data.push(t),this},clear:function(){return this._data=[],this},radius:function(t,i){i=i||15;var a=this._circle=document.createElement("canvas"),e=a.getContext("2d"),s=this._r=t+i;return a.width=a.height=2*s,e.shadowOffsetX=e.shadowOffsetY=200,e.shadowBlur=i,e.shadowColor="black",e.beginPath(),e.arc(s-200,s-200,t,0,2*Math.PI,!0),e.closePath(),e.fill(),this},gradient:function(t){var i=document.createElement("canvas"),a=i.getContext("2d"),e=a.createLinearGradient(0,0,0,256);i.width=1,i.height=256;for(var s in t)e.addColorStop(s,t[s]);return a.fillStyle=e,a.fillRect(0,0,1,256),this._grad=a.getImageData(0,0,1,256).data,this},draw:function(t){this._circle||this.radius(this.defaultRadius),this._grad||this.gradient(this.defaultGradient);var i=this._ctx;i.clearRect(0,0,this._width,this._height);for(var a,e=0,s=this._data.length;s>e;e++)a=this._data[e],i.globalAlpha=Math.max(a[2]/this._max,t||.05),i.drawImage(this._circle,a[0]-this._r,a[1]-this._r);var n=i.getImageData(0,0,this._width,this._height);return this._colorize(n.data,this._grad),i.putImageData(n,0,0),this},_colorize:function(t,i){for(var a,e=3,s=t.length;s>e;e+=4)a=4*t[e],a&&(t[e-3]=i[a],t[e-2]=i[a+1],t[e-1]=i[a+2])}},window.simpleheat=t}(),/* +!function(){"use strict";function t(i){return this instanceof t?(this._canvas=i="string"==typeof i?document.getElementById(i):i,this._ctx=i.getContext("2d"),this._width=i.width,this._height=i.height,this._max=1,void this.clear()):new t(i)}t.prototype={defaultRadius:25,defaultGradient:{.4:"blue",.6:"cyan",.7:"lime",.8:"yellow",1:"red"},data:function(t,i){return this._data=t,this},max:function(t){return this._max=t,this},add:function(t){return this._data.push(t),this},clear:function(){return this._data=[],this},radius:function(t,i){i=i||15;var a=this._circle=document.createElement("canvas"),s=a.getContext("2d"),e=this._r=t+i;return a.width=a.height=2*e,s.shadowOffsetX=s.shadowOffsetY=200,s.shadowBlur=i,s.shadowColor="black",s.beginPath(),s.arc(e-200,e-200,t,0,2*Math.PI,!0),s.closePath(),s.fill(),this},gradient:function(t){var i=document.createElement("canvas"),a=i.getContext("2d"),s=a.createLinearGradient(0,0,0,256);i.width=1,i.height=256;for(var e in t)s.addColorStop(e,t[e]);return a.fillStyle=s,a.fillRect(0,0,1,256),this._grad=a.getImageData(0,0,1,256).data,this},draw:function(t){this._circle||this.radius(this.defaultRadius),this._grad||this.gradient(this.defaultGradient);var i=this._ctx;i.clearRect(0,0,this._width,this._height);for(var a,s=0,e=this._data.length;e>s;s++)a=this._data[s],i.globalAlpha=Math.max(a[2]/this._max,t||.05),i.drawImage(this._circle,a[0]-this._r,a[1]-this._r);var n=i.getImageData(0,0,this._width,this._height);return this._colorize(n.data,this._grad),i.putImageData(n,0,0),this},_colorize:function(t,i){for(var a,s=3,e=t.length;e>s;s+=4)a=4*t[s],a&&(t[s-3]=i[a],t[s-2]=i[a+1],t[s-1]=i[a+2])}},window.simpleheat=t}(),/* (c) 2014, Vladimir Agafonkin Leaflet.heat, a tiny and fast heatmap plugin for Leaflet. https://github.com/Leaflet/Leaflet.heat */ -L.HeatLayer=L.Class.extend({initialize:function(t,i){this._latlngs=t,L.setOptions(this,i)},setLatLngs:function(t){return this._latlngs=t,this.redraw()},addLatLng:function(t){return this._latlngs.push(t),this.redraw()},setOptions:function(t){return L.setOptions(this,t),this._heat&&this._updateOptions(),this.redraw()},redraw:function(){return this._heat&&!this._frame&&(this._frame=L.Util.requestAnimFrame(this._redraw,this)),this},onAdd:function(t){this._map=t,this._canvas||this._initCanvas(),t._panes.overlayPane.appendChild(this._canvas),t.on("moveend",this._reset,this),t.options.zoomAnimation&&L.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._canvas),t.off("moveend",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},_initCanvas:function(){var t=this._canvas=L.DomUtil.create("canvas","leaflet-heatmap-layer"),i=this._map.getSize();t.width=i.x,t.height=i.y;var a=this._map.options.zoomAnimation&&L.Browser.any3d;L.DomUtil.addClass(t,"leaflet-zoom-"+(a?"animated":"hide")),this._heat=simpleheat(t),this._updateOptions()},_updateOptions:function(){this._heat.radius(this.options.radius||this._heat.defaultRadius,this.options.blur),this.options.gradient&&this._heat.gradient(this.options.gradient),this.options.max&&this._heat.max(this.options.max)},_reset:function(){var t=this._map.containerPointToLayerPoint([0,0]);L.DomUtil.setPosition(this._canvas,t);var i=this._map.getSize();this._heat._width!==i.x&&(this._canvas.width=this._heat._width=i.x),this._heat._height!==i.y&&(this._canvas.height=this._heat._height=i.y),this._redraw()},_redraw:function(){var t,i,a,e,s,n,h,o,r,d=[],_=this._heat._r,l=this._map.getSize(),m=new L.LatLngBounds(this._map.containerPointToLatLng(L.point([-_,-_])),this._map.containerPointToLatLng(l.add([_,_]))),c=void 0===this.options.maxZoom?this._map.getMaxZoom():this.options.maxZoom,u=1/Math.pow(2,Math.max(0,Math.min(c-this._map.getZoom(),12))),g=_/2,f=[],p=this._map._getMapPanePos(),v=p.x%g,w=p.y%g;for(t=0,i=this._latlngs.length;i>t;t++)m.contains(this._latlngs[t])&&(a=this._map.latLngToContainerPoint(this._latlngs[t]),s=Math.floor((a.x-v)/g)+2,n=Math.floor((a.y-w)/g)+2,r=(this._latlngs[t].alt||1)*u,f[n]=f[n]||[],e=f[n][s],e?(e[0]=(e[0]*e[2]+a.x*r)/(e[2]+r),e[1]=(e[1]*e[2]+a.y*r)/(e[2]+r),e[2]+=r):f[n][s]=[a.x,a.y,r]);for(t=0,i=f.length;i>t;t++)if(f[t])for(h=0,o=f[t].length;o>h;h++)e=f[t][h],e&&d.push([Math.round(e[0]),Math.round(e[1]),Math.min(e[2],1)]);this._heat.data(d).draw(),this._frame=null},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),a=this._map._getCenterOffset(t.center)._multiplyBy(-i).subtract(this._map._getMapPanePos());this._canvas.style[L.DomUtil.TRANSFORM]=L.DomUtil.getTranslateString(a)+" scale("+i+")"}}),L.heatLayer=function(t,i){return new L.HeatLayer(t,i)}; \ No newline at end of file +L.HeatLayer=(L.Layer?L.Layer:L.Class).extend({initialize:function(t,i){this._latlngs=t,L.setOptions(this,i)},setLatLngs:function(t){return this._latlngs=t,this.redraw()},addLatLng:function(t){return this._latlngs.push(t),this.redraw()},setOptions:function(t){return L.setOptions(this,t),this._heat&&this._updateOptions(),this.redraw()},redraw:function(){return!this._heat||this._frame||this._map._animating||(this._frame=L.Util.requestAnimFrame(this._redraw,this)),this},onAdd:function(t){this._map=t,this._canvas||this._initCanvas(),t._panes.overlayPane.appendChild(this._canvas),t.on("moveend",this._reset,this),t.options.zoomAnimation&&L.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._canvas),t.off("moveend",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},_initCanvas:function(){var t=this._canvas=L.DomUtil.create("canvas","leaflet-heatmap-layer leaflet-layer"),i=L.DomUtil.testProp(["transformOrigin","WebkitTransformOrigin","msTransformOrigin"]);t.style[i]="50% 50%";var a=this._map.getSize();t.width=a.x,t.height=a.y;var s=this._map.options.zoomAnimation&&L.Browser.any3d;L.DomUtil.addClass(t,"leaflet-zoom-"+(s?"animated":"hide")),this._heat=simpleheat(t),this._updateOptions()},_updateOptions:function(){this._heat.radius(this.options.radius||this._heat.defaultRadius,this.options.blur),this.options.gradient&&this._heat.gradient(this.options.gradient),this.options.max&&this._heat.max(this.options.max)},_reset:function(){var t=this._map.containerPointToLayerPoint([0,0]);L.DomUtil.setPosition(this._canvas,t);var i=this._map.getSize();this._heat._width!==i.x&&(this._canvas.width=this._heat._width=i.x),this._heat._height!==i.y&&(this._canvas.height=this._heat._height=i.y),this._redraw()},_redraw:function(){var t,i,a,s,e,n,h,o,r,d=[],_=this._heat._r,l=this._map.getSize(),m=new L.Bounds(L.point([-_,-_]),l.add([_,_])),c=void 0===this.options.max?1:this.options.max,u=void 0===this.options.maxZoom?this._map.getMaxZoom():this.options.maxZoom,f=1/Math.pow(2,Math.max(0,Math.min(u-this._map.getZoom(),12))),g=_/2,p=[],v=this._map._getMapPanePos(),w=v.x%g,y=v.y%g;for(t=0,i=this._latlngs.length;i>t;t++)if(a=this._map.latLngToContainerPoint(this._latlngs[t]),m.contains(a)){e=Math.floor((a.x-w)/g)+2,n=Math.floor((a.y-y)/g)+2;var x=void 0!==this._latlngs[t].alt?this._latlngs[t].alt:void 0!==this._latlngs[t][2]?+this._latlngs[t][2]:1;r=x*f,p[n]=p[n]||[],s=p[n][e],s?(s[0]=(s[0]*s[2]+a.x*r)/(s[2]+r),s[1]=(s[1]*s[2]+a.y*r)/(s[2]+r),s[2]+=r):p[n][e]=[a.x,a.y,r]}for(t=0,i=p.length;i>t;t++)if(p[t])for(h=0,o=p[t].length;o>h;h++)s=p[t][h],s&&d.push([Math.round(s[0]),Math.round(s[1]),Math.min(s[2],c)]);this._heat.data(d).draw(this.options.minOpacity),this._frame=null},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),a=this._map._getCenterOffset(t.center)._multiplyBy(-i).subtract(this._map._getMapPanePos());L.DomUtil.setTransform?L.DomUtil.setTransform(this._canvas,a,i):this._canvas.style[L.DomUtil.TRANSFORM]=L.DomUtil.getTranslateString(a)+" scale("+i+")"}}),L.heatLayer=function(t,i){return new L.HeatLayer(t,i)}; diff --git a/worldmap/leaflet/leaflet-side-by-side.js b/worldmap/leaflet/leaflet-side-by-side.js index 18f38a0..ec8b4b8 100644 --- a/worldmap/leaflet/leaflet-side-by-side.js +++ b/worldmap/leaflet/leaflet-side-by-side.js @@ -1,219 +1 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oa;a++)b=d[a],c=this._layers[b.layerId],b.checked&&!this._map.hasLayer(c.layer)?c.overlay?this._activeOverlayLayers[b.layerId]=c:this._activeBaseLayer=c:!b.checked&&this._map.hasLayer(c.layer)&&c.overlay&&delete this._activeOverlayLayers[b.layerId]}}),L.control.activeLayers=function(a,b,c){return new L.Control.ActiveLayers(a,b,c)}; \ No newline at end of file +/** + * Created: vogdb Date: 5/4/13 Time: 1:54 PM + * Version: 0.3.0 + */ +L.Control.ActiveLayers=L.Control.Layers.extend({getActiveBaseLayer:function(){return this._activeBaseLayer},getActiveOverlayLayers:function(){return this._activeOverlayLayers},onAdd:function(e){var t=L.Control.Layers.prototype.onAdd.call(this,e);return Array.isArray(this._layers)?(this._activeBaseLayer=this._findActiveBaseLayer(),this._activeOverlayLayers=this._findActiveOverlayLayers()):(this._activeBaseLayer=this._findActiveBaseLayerLegacy(),this._activeOverlayLayers=this._findActiveOverlayLayersLegacy()),t},_findActiveBaseLayer:function(){var e=this._layers;for(var t=0;t0,l=70,m=0;m svg, +.leaflet-pane > canvas, .leaflet-zoom-box, .leaflet-image-layer, .leaflet-layer { @@ -20,8 +16,6 @@ } .leaflet-container { overflow: hidden; - -ms-touch-action: none; - touch-action: none; } .leaflet-tile, .leaflet-marker-icon, @@ -29,20 +23,54 @@ -webkit-user-select: none; -moz-user-select: none; user-select: none; - -webkit-user-drag: none; + -webkit-user-drag: none; + } +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; } .leaflet-marker-icon, .leaflet-marker-shadow { display: block; } -/* map is broken in FF if you have max-width: 100% on tiles */ -.leaflet-container img { +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer, +.leaflet-container .leaflet-tile { max-width: none !important; + max-height: none !important; } -/* stupid Android 2 doesn't understand "max-width: none" properly */ -.leaflet-container img.leaflet-image-layer { - max-width: 15000px !important; + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} .leaflet-tile { filter: inherit; visibility: hidden; @@ -53,18 +81,26 @@ .leaflet-zoom-box { width: 0; height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; } /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ .leaflet-overlay-pane svg { -moz-user-select: none; } -.leaflet-tile-pane { z-index: 2; } -.leaflet-objects-pane { z-index: 3; } -.leaflet-overlay-pane { z-index: 4; } -.leaflet-shadow-pane { z-index: 5; } -.leaflet-marker-pane { z-index: 6; } -.leaflet-popup-pane { z-index: 7; } +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } .leaflet-vml-shape { width: 1px; @@ -81,7 +117,8 @@ .leaflet-control { position: relative; - z-index: 7; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ pointer-events: auto; } .leaflet-top, @@ -125,31 +162,35 @@ /* zoom and fade animations */ -.leaflet-fade-anim .leaflet-tile, +.leaflet-fade-anim .leaflet-tile { + will-change: opacity; + } .leaflet-fade-anim .leaflet-popup { opacity: 0; -webkit-transition: opacity 0.2s linear; -moz-transition: opacity 0.2s linear; - -o-transition: opacity 0.2s linear; transition: opacity 0.2s linear; } -.leaflet-fade-anim .leaflet-tile-loaded, .leaflet-fade-anim .leaflet-map-pane .leaflet-popup { opacity: 1; } - +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; + } .leaflet-zoom-anim .leaflet-zoom-animated { -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); - -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); transition: transform 0.25s cubic-bezier(0,0,0.25,1); } .leaflet-zoom-anim .leaflet-tile, -.leaflet-pan-anim .leaflet-tile, -.leaflet-touching .leaflet-zoom-animated { +.leaflet-pan-anim .leaflet-tile { -webkit-transition: none; -moz-transition: none; - -o-transition: none; transition: none; } @@ -160,24 +201,46 @@ /* cursors */ -.leaflet-clickable { +.leaflet-interactive { cursor: pointer; } -.leaflet-container { +.leaflet-grab { cursor: -webkit-grab; cursor: -moz-grab; + cursor: grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; } .leaflet-popup-pane, .leaflet-control { cursor: auto; } -.leaflet-dragging .leaflet-container, -.leaflet-dragging .leaflet-clickable { +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { cursor: move; cursor: -webkit-grabbing; cursor: -moz-grabbing; + cursor: grabbing; } +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } /* visual tweaks */ @@ -250,7 +313,14 @@ height: 30px; line-height: 30px; } - +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } /* zoom control */ @@ -259,16 +329,10 @@ font: bold 18px 'Lucida Console', Monaco, monospace; text-indent: 1px; } -.leaflet-control-zoom-out { - font-size: 20px; - } -.leaflet-touch .leaflet-control-zoom-in { +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { font-size: 22px; } -.leaflet-touch .leaflet-control-zoom-out { - font-size: 24px; - } /* layers control */ @@ -304,6 +368,11 @@ color: #333; background: #fff; } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } .leaflet-control-layers-selector { margin-top: 2px; position: relative; @@ -318,6 +387,11 @@ margin: 5px -10px 5px -6px; } +/* Default icon URLs */ +.leaflet-default-icon-path { + background-image: url(images/marker-icon.png); + } + /* attribution and scale controls */ @@ -355,8 +429,8 @@ font-size: 11px; white-space: nowrap; overflow: hidden; - -moz-box-sizing: content-box; - box-sizing: content-box; + -moz-box-sizing: border-box; + box-sizing: border-box; background: #fff; background: rgba(255, 255, 255, 0.5); @@ -387,47 +461,53 @@ .leaflet-popup { position: absolute; text-align: center; + margin-bottom: 20px; } .leaflet-popup-content-wrapper { padding: 1px; text-align: left; - border-radius: 6px; + border-radius: 12px; } .leaflet-popup-content { - margin: 5px 8px; + margin: 13px 19px; line-height: 1.4; } .leaflet-popup-content p { - /* margin: 18px 0; */ + margin: 18px 0; } .leaflet-popup-tip-container { - margin: 0 auto; width: 40px; height: 20px; - position: relative; + position: absolute; + left: 50%; + margin-left: -20px; overflow: hidden; + pointer-events: none; } .leaflet-popup-tip { width: 17px; height: 17px; padding: 1px; + margin: -10px auto 0; + -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); transform: rotate(45deg); } .leaflet-popup-content-wrapper, .leaflet-popup-tip { background: white; - box-shadow: 0 4px 8px rgba(0,0,0,0.4); + color: #333; + box-shadow: 0 3px 14px rgba(0,0,0,0.4); } .leaflet-container a.leaflet-popup-close-button { position: absolute; top: 0; right: 0; padding: 4px 4px 0 0; + border: none; text-align: center; width: 18px; height: 14px; @@ -474,3 +554,82 @@ background: #fff; border: 1px solid #666; } + + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-clickable { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } diff --git a/worldmap/leaflet/leaflet.js b/worldmap/leaflet/leaflet.js index ee5ff5a..576a90e 100644 --- a/worldmap/leaflet/leaflet.js +++ b/worldmap/leaflet/leaflet.js @@ -1,9 +1,5 @@ -/* - Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com - (c) 2010-2013, Vladimir Agafonkin - (c) 2010-2011, CloudMade -*/ -!function(t,e,i){var n=t.L,o={};o.version="0.7.7","object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if("object"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?void(o=!0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),void t.apply(i,a))}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},splitWords:function(t){return o.Util.trim(t).split(/\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf("?")?"&":"?")+n.join("&")},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,n){var o=e[n];if(o===i)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;it;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+"_idx",u=l+"_len",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+"_idx"in e&&e[t+"_idx_len"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+"_idx",c=u+"_len",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+"_idx"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n="ActiveXObject"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf("webkit"),h=-1!==a.indexOf("chrome"),l=-1!==a.indexOf("phantom"),u=-1!==a.indexOf("android"),c=-1!==a.search("android [23]"),d=-1!==a.indexOf("gecko"),p=typeof orientation!=i+"",_=!t.PointerEvent&&t.MSPointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled||_,f="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,g=e.documentElement,v=n&&"transition"in g.style,y="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix&&!c,P="MozPerspective"in g.style,L="OTransition"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&(m||"ontouchstart"in t||t.DocumentTouch&&e instanceof t.DocumentTouch);o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=o.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if("relative"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,"width"),u=o.DomUtil.getStyle(a,"max-width"),c=a.getBoundingClientRect();("none"!==l||"none"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr="ltr"===o.DomUtil.getStyle(e.body,"direction")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+" ":"")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((" "+o.DomUtil._getClass(t)+" ").replace(" "+e+" "," ")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(t,e){if("opacity"in t.style)t.style.opacity=e;else if("filter"in t.style){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(n)}catch(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;ni||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?"number"==typeof t[0]||"string"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:"object"==typeof t&&"lat"in t?new o.LatLng(t.lat,"lng"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:"EPSG:3857",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:"EPSG:900913"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:"EPSG:4326",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n));s=e.maxZoom?Math.min(e.maxZoom,s):s;var a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return this.setView(l,s,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t){return this.fire("movestart"),this._rawPanBy(o.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds,this)):this.off("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on("load",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire("layerremove",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off("load",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._initialCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire("unload"),this._initEvents("off");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet)throw new Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(this.options.fadeAnimation?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create("div",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,this.fire("viewreset",{hard:!i}),a&&(this.fire("load"),this.eachLayer(this._layerAdd,this)),this.fire("move"),(s||n)&&this.fire("zoomend"),this.fire("moveend",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-(1/0),o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire("zoomlevelschange")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){e=e||"on",o.DomEvent[e](this._container,"click",this._onMouseClick,this);var i,n,s=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,"resize",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire("tilelayersload")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire("layeradd",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c;return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_;return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:"EPSG:3395",projection:o.Projection.Mercator, -transformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-(1/0));for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),this._animated){var e="leaflet-tile-container";this._bgBuffer=o.DomUtil.create("div",e,this._container),this._tileContainer=o.DomUtil.create("div",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire("tileunload",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML="",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||in;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=this._getTileSize(),o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(it.max.x||nt.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome),this._tiles[t.x+":"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create("img","leaflet-tile");return t.style.width=t.style.height=this._getTileSize()+"px",t.galleryimg="no",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire("tileloadstart",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated"),this._tilesToLoad||(this.fire("load"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;e.detectRetina&&o.Browser.retina?i.width=i.height=2*n:i.width=i.height=n;for(var s in e)this.options.hasOwnProperty(s)||"crs"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(","):[a.x,r.y,r.x,a.y].join(","),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+"&BBOX="+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create("canvas","leaflet-tile");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,"leaflet-zoom-animated"):o.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),o.extend(this._image,{galleryimg:"no",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+" scale("+n+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:""},initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n;return n=e&&"IMG"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+"Size"]);i="shadow"===e?o.point(n.shadowAnchor||n.iconAnchor):o.point(n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+n.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];o.Browser.retina&&"icon"===t&&(t+="-2x");var i=o.Icon.Default.imagePath;if(!i)throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:"",alt:"",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),this.fire("add"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){return this._icon&&this._setPos(this._map.latLngToLayerPoint(this._latlng).round()),this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex="0"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,"mouseover",this._bringToFront,this).on(s,"mouseout",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];o.DomUtil.addClass(t,"leaflet-clickable"),o.DomEvent.on(t,"click",this._onMouseClick,this),o.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;is?(e.height=s+"px",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t,t._source=this):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"},addLayer:function(t){return this.hasLayer(t)?this:("on"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),"off"in t&&t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({layer:t.target,target:this},t),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:"#0033ff",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS="http://www.w3.org/2000/svg",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,"svg").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this.options.pointerEvents&&this._path.setAttribute("pointer-events",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute("pointer-events","none"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray"),this.options.lineCap&&this._path.setAttribute("stroke-linecap",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute("stroke-linejoin",this.options.lineJoin)):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,"leaflet-clickable"),o.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;e';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");o.DomUtil.addClass(t,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:"")),this.options.clickable&&o.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,i.dashArray?t.dashStyle=o.Util.isArray(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):t.dashStyle="",i.lineCap&&(t.endcap=i.lineCap.replace("butt","flat")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&(this._map.off("click",this._onClick,this),this._map.off("mousemove",this._onMouseMove,this)),this._requestUpdate(),this.fire("remove"),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color),t.lineCap&&(this._ctx.lineCap=t.lineCap),t.lineJoin&&(this._ctx.lineJoin=t.lineJoin)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill(e.fillRule||"evenodd")),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on("mousemove",this._onMouseMove,this),this._map.on("click dblclick contextmenu",this._fireMouseEvent,this))},_fireMouseEvent:function(t){this._containsPoint(t.layerPoint)&&this.fire(t.type,t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor="pointer",this._mouseInside=!0,this.fire("mouseover",t)):this._mouseInside&&(this._ctx.canvas.style.cursor="",this._mouseInside=!1,this.fire("mouseout",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext("2d").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(t,e){var i=0;return t.xe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&"number"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a="";s>n;n++)e=t[n],i&&e._round(),a+=(n?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return void(this._parts=[n]);this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?"z":"x")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":o.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,23592600")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+ei;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l="Feature"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case"Point":return s=i(u),e?e(t,s):new o.Marker(s);case"MultiPoint":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case"LineString":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case"Polygon":if(2===u.length&&!u[1].length)throw new Error("Invalid GeoJSON object.");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case"MultiLineString":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case"MultiPolygon":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case"GeometryCollection":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:"Feature",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return"Feature"===t.type?t:{type:"Feature",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"Point",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"LineString",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:"Polygon",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t("MultiLineString")}),o.MultiPolygon.include({toGeoJSON:t("MultiPolygon")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&"MultiPoint"===i.type)return t("MultiPoint").call(this);var s=i&&"GeometryCollection"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l="_leaflet_"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf("touch")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",s,!1),t.addEventListener(e,s,!1)):"mouseenter"===e||"mouseleave"===e?(a=s,r="mouseenter"===e?"mouseover":"mouseout",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):"click"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):"attachEvent"in t&&t.attachEvent("on"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s="_leaflet_"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf("touch")?this.removePointerListener(t,e,n):o.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,"mousewheel",e).on(t,"MozMousePixelScroll",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,"click",o.DomEvent._fakeStop).on(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,e){if(!e)return new o.Point(t.clientX,t.clientY);var i=e.getBoundingClientRect();return new o.Point(t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop)},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&500>n||t.target._simulatedClick&&!t._simulated?void o.DomEvent.stop(t):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!t.shiftKey&&(1===t.which||1===t.button||t.touches)&&(o.DomEvent.stopPropagation(t),!o.Draggable._disabled&&(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),!this._moving))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return void(this._moved=!0);var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.Browser.touch&&Math.abs(s.x)+Math.abs(s.y)<3||(o.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,o.DomUtil.addClass(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget)))},_updatePosition:function(){this.fire("predrag"),o.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(){o.DomUtil.removeClass(e.body,"leaflet-dragging"),this._lastTarget&&(o.DomUtil.removeClass(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[t],this._onMove).off(e,o.Draggable.END[t],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&this._moving&&(o.Util.cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)i.inertiaThreshold||!this._positions[0];if(e.fire("dragend",t),s)e.fire("moveend");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire("moveend")}}}),o.Map.addInitHook("addHandler","dragging",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom()+(t.originalEvent.shiftKey?-1:1);"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook("addHandler","doubleClickZoom",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),o.DomEvent.on(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll),o.DomEvent.off(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&("center"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],"function"==typeof n?s[a]=n.bind(h):s[a]=n;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n="_leaflet_";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case"touchstart":return this.addPointerListenerStart(t,e,i,n); -case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){"mouse"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&o.DomEvent.preventDefault(t);for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire("step")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a}),setTimeout(o.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),o.Util.requestAnimFrame(function(){this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)},this))}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth);var i=this._map.getZoom();(i>this.options.maxZoom||i.5&&.5>n?(t.style.visibility="hidden",void this._stopLoadingImages(t)):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document); \ No newline at end of file +/* @preserve + * Leaflet 1.4.0+Detached: 3337f36d2a2d2b33946779057619b31f674ff5dc.3337f36, a JS library for interactive maps. http://leafletjs.com + * (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";function i(t){var i,e,n,o;for(e=1,n=arguments.length;e=0}function A(t,i,e,n){return"touchstart"===i?O(t,e,n):"touchmove"===i?W(t,e,n):"touchend"===i&&H(t,e,n),this}function I(t,i,e){var n=t["_leaflet_"+i+e];return"touchstart"===i?t.removeEventListener(te,n,!1):"touchmove"===i?t.removeEventListener(ie,n,!1):"touchend"===i&&(t.removeEventListener(ee,n,!1),t.removeEventListener(ne,n,!1)),this}function O(t,i,n){var o=e(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(oe.indexOf(t.target.tagName)<0))return;Pt(t)}j(t,i)});t["_leaflet_touchstart"+n]=o,t.addEventListener(te,o,!1),re||(document.documentElement.addEventListener(te,R,!0),document.documentElement.addEventListener(ie,N,!0),document.documentElement.addEventListener(ee,D,!0),document.documentElement.addEventListener(ne,D,!0),re=!0)}function R(t){se[t.pointerId]=t,ae++}function N(t){se[t.pointerId]&&(se[t.pointerId]=t)}function D(t){delete se[t.pointerId],ae--}function j(t,i){t.touches=[];for(var e in se)t.touches.push(se[e]);t.changedTouches=[t],i(t)}function W(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&j(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(ie,n,!1)}function H(t,i,e){var n=function(t){j(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(ee,n,!1),t.addEventListener(ne,n,!1)}function F(t,i,e){function n(t){var i;if(Vi){if(!bi||"mouse"===t.pointerType)return;i=ae}else i=t.touches.length;if(!(i>1)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=n>0&&n<=h,s=e}}function o(t){if(a&&!r.cancelBubble){if(Vi){if(!bi||"mouse"===t.pointerType)return;var e,n,o={};for(n in r)e=r[n],o[n]=e&&e.bind?e.bind(r):e;r=o}r.type="dblclick",i(r),s=null}}var s,r,a=!1,h=250;return t[le+he+e]=n,t[le+ue+e]=o,t[le+"dblclick"+e]=i,t.addEventListener(he,n,!1),t.addEventListener(ue,o,!1),t.addEventListener("dblclick",i,!1),this}function U(t,i){var e=t[le+he+i],n=t[le+ue+i],o=t[le+"dblclick"+i];return t.removeEventListener(he,e,!1),t.removeEventListener(ue,n,!1),bi||t.removeEventListener("dblclick",o,!1),this}function V(t){return"string"==typeof t?document.getElementById(t):t}function q(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function G(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function K(t){var i=t.parentNode;i&&i.removeChild(t)}function Y(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function X(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function J(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function $(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=et(t);return e.length>0&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function Q(t,i){if(void 0!==t.classList)for(var e=u(i),n=0,o=e.length;n100&&n<500||t.target._simulatedClick&&!t._simulated?Lt(t):(ge=e,i(t))}function Zt(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=At(t,e),t=kt(t,e)}function Et(t,i,e){return Math.sqrt(Dt(t,i,e,!0))}function kt(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,Bt(t,n,i,0,e-1);var o,s=[];for(o=0;oh&&(s=r,h=a);h>e&&(i[s]=1,Bt(t,i,e,n,s),Bt(t,i,e,s,o))}function At(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;ni&&(e.push(t[n]),o=n);return oi.max.x&&(e|=2),t.yi.max.y&&(e|=8),e}function Nt(t,i){var e=i.x-t.x,n=i.y-t.y;return e*e+n*n}function Dt(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=e.x,r=e.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new x(s,r)}function jt(t){return!oi(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function Wt(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),jt(t)}function Ht(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o0?Math.floor(t):Math.ceil(t)};x.prototype={clone:function(){return new x(this.x,this.y)},add:function(t){return this.clone()._add(w(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(w(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new x(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new x(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=_i(this.x),this.y=_i(this.y),this},distanceTo:function(t){var i=(t=w(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=w(t)).x===this.x&&t.y===this.y},contains:function(t){return t=w(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+a(this.x)+", "+a(this.y)+")"}},P.prototype={extend:function(t){return t=w(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new x((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new x(this.min.x,this.max.y)},getTopRight:function(){return new x(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof x?w(t):b(t))instanceof P?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=b(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.xi.y&&n.y=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=z(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lati.lng&&n.lng1,Xi=!!document.createElement("canvas").getContext,Ji=!(!document.createElementNS||!E("svg").createSVGRect),$i=!Ji&&function(){try{var t=document.createElement("div");t.innerHTML='';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}(),Qi=(Object.freeze||Object)({ie:Pi,ielt9:Li,edge:bi,webkit:Ti,android:zi,android23:Mi,androidStock:Si,opera:Zi,chrome:Ei,gecko:ki,safari:Bi,phantom:Ai,opera12:Ii,win:Oi,ie3d:Ri,webkit3d:Ni,gecko3d:Di,any3d:ji,mobile:Wi,mobileWebkit:Hi,mobileWebkit3d:Fi,msPointer:Ui,pointer:Vi,touch:qi,mobileOpera:Gi,mobileGecko:Ki,retina:Yi,canvas:Xi,svg:Ji,vml:$i}),te=Ui?"MSPointerDown":"pointerdown",ie=Ui?"MSPointerMove":"pointermove",ee=Ui?"MSPointerUp":"pointerup",ne=Ui?"MSPointerCancel":"pointercancel",oe=["INPUT","SELECT","OPTION"],se={},re=!1,ae=0,he=Ui?"MSPointerDown":Vi?"pointerdown":"touchstart",ue=Ui?"MSPointerUp":Vi?"pointerup":"touchend",le="_leaflet_",ce=st(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),_e=st(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===_e||"OTransition"===_e?_e+"End":"transitionend";if("onselectstart"in document)fi=function(){mt(window,"selectstart",Pt)},gi=function(){ft(window,"selectstart",Pt)};else{var pe=st(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);fi=function(){if(pe){var t=document.documentElement.style;vi=t[pe],t[pe]="none"}},gi=function(){pe&&(document.documentElement.style[pe]=vi,vi=void 0)}}var me,fe,ge,ve=(Object.freeze||Object)({TRANSFORM:ce,TRANSITION:_e,TRANSITION_END:de,get:V,getStyle:q,create:G,remove:K,empty:Y,toFront:X,toBack:J,hasClass:$,addClass:Q,removeClass:tt,setClass:it,getClass:et,setOpacity:nt,testProp:st,setTransform:rt,setPosition:at,getPosition:ht,disableTextSelection:fi,enableTextSelection:gi,disableImageDrag:ut,enableImageDrag:lt,preventOutline:ct,restoreOutline:_t,getSizedParentNode:dt,getScale:pt}),ye="_leaflet_events",xe=Oi&&Ei?2*window.devicePixelRatio:ki?window.devicePixelRatio:1,we={},Pe=(Object.freeze||Object)({on:mt,off:ft,stopPropagation:yt,disableScrollPropagation:xt,disableClickPropagation:wt,preventDefault:Pt,stop:Lt,getMousePosition:bt,getWheelDelta:Tt,fakeStop:zt,skipped:Mt,isExternalTarget:Ct,addListener:mt,removeListener:ft}),Le=ci.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=ht(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=f(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;ithis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,z(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e=w((i=i||{}).paddingTopLeft||i.padding||[0,0]),n=w(i.paddingBottomRight||i.padding||[0,0]),o=this.getCenter(),s=this.project(o),r=this.project(t),a=this.getPixelBounds(),h=a.getSize().divideBy(2),u=b([a.min.add(e),a.max.subtract(n)]);if(!u.contains(r)){this._enforcingBounds=!0;var l=s.subtract(r),c=w(r.x+l.x,r.y+l.y);(r.xu.max.x)&&(c.x=s.x-l.x,l.x>0?c.x+=h.x-e.x:c.x-=h.x-n.x),(r.yu.max.y)&&(c.y=s.y-l.y,l.y>0?c.y+=h.y-e.y:c.y-=h.y-n.y),this.panTo(this.unproject(c),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=i({animate:!1,pan:!0},!0===t?{animate:!0}:t);var n=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=n.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(e(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:n,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=i({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var n=e(this._handleGeolocationResponse,this),o=e(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(n,o,t):navigator.geolocation.getCurrentPosition(n,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new M(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),K(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(g(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload");var t;for(t in this._layers)this._layers[t].remove();for(t in this._panes)K(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=G("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new T(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=z(t),e=w(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=b(this.project(a,n),this.project(r,n)).getSize(),l=ji?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new x(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new P(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(C(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(w(t),i)},layerPointToLatLng:function(t){var i=w(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(C(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(C(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(z(t))},distance:function(t,i){return this.options.crs.distance(C(t),C(i))},containerPointToLayerPoint:function(t){return w(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return w(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(w(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t)))},mouseEventToContainerPoint:function(t){return bt(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=V(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");mt(i,"scroll",this._onScroll,this),this._containerId=n(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&ji,Q(t,"leaflet-container"+(qi?" leaflet-touch":"")+(Yi?" leaflet-retina":"")+(Li?" leaflet-oldie":"")+(Bi?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=q(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),at(this._mapPane,new x(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Q(t.markerPane,"leaflet-zoom-hide"),Q(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){at(this._mapPane,new x(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return g(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){at(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[n(this._container)]=this;var i=t?ft:mt;i(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),ji&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){g(this._resizeRequest),this._resizeRequest=f(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,o=[],s="mouseout"===i||"mouseover"===i,r=t.target||t.srcElement,a=!1;r;){if((e=this._targets[n(r)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){a=!0;break}if(e&&e.listens(i,!0)){if(s&&!Ct(r,t))break;if(o.push(e),s)break}if(r===this._container)break;r=r.parentNode}return o.length||a||s||!Ct(r,t)||(o=[this]),o},_handleDOMEvent:function(t){if(this._loaded&&!Mt(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i||ct(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,n){if("click"===t.type){var o=i({},t);o.type="preclick",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,e))).length){var s=n[0];"contextmenu"===e&&s.listens(e,!0)&&Pt(t);var r={originalEvent:t};if("keypress"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h0?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=ji?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){tt(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=G("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=ce,e=this._proxy.style[i];rt(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();rt(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){K(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(f(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,n,o){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,Q(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:o}),setTimeout(e(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&tt(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),f(function(){this._moveEnd(!0)},this))}}),Te=v.extend({options:{position:"topright"},initialize:function(t){l(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return Q(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this},remove:function(){return this._map?(K(this._container),this.onRemove&&this.onRemove(this._map),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),ze=function(t){return new Te(t)};be.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){function t(t,o){var s=e+t+" "+e+o;i[t+o]=G("div",s,n)}var i=this._controlCorners={},e="leaflet-",n=this._controlContainer=G("div",e+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)K(this._controlCorners[t]);K(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Me=Te.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e1,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(n(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),o=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=o):i=this._createRadioElement("leaflet-base-layers",o),this._layerControlInputs.push(i),i.layerId=n(t.layer),mt(i,"click",this._onInputClick,this);var s=document.createElement("span");s.innerHTML=" "+t.name;var r=document.createElement("div");return e.appendChild(r),r.appendChild(i),r.appendChild(s),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;s>=0;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s=0;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&ni.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),Ce=Te.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=G("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=G("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),wt(s),mt(s,"click",Lt),mt(s,"click",o,this),mt(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";tt(this._zoomInButton,i),tt(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMinZoom())&&Q(this._zoomOutButton,i),(this._disabled||t._zoom===t.getMaxZoom())&&Q(this._zoomInButton,i)}});be.mergeOptions({zoomControl:!0}),be.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ce,this.addControl(this.zoomControl))});var Se=Te.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i=G("div","leaflet-control-scale"),e=this.options;return this._addScales(e,"leaflet-control-scale-line",i),t.on(e.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=G("div",i,e)),t.imperial&&(this._iScale=G("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;o>5280?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return e=e>=10?10:e>=5?5:e>=3?3:e>=2?2:1,i*e}}),Ze=Te.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){l(this,t),this._attributions={}},onAdd:function(t){t.attributionControl=this,this._container=G("div","leaflet-control-attribution"),wt(this._container);for(var i in t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});be.mergeOptions({attributionControl:!0}),be.addInitHook(function(){this.options.attributionControl&&(new Ze).addTo(this)});Te.Layers=Me,Te.Zoom=Ce,Te.Scale=Se,Te.Attribution=Ze,ze.layers=function(t,i,e){return new Me(t,i,e)},ze.zoom=function(t){return new Ce(t)},ze.scale=function(t){return new Se(t)},ze.attribution=function(t){return new Ze(t)};var Ee=v.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled?this:(this._enabled=!0,this.addHooks(),this)},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Ee.addTo=function(t,i){return t.addHandler(i,this),this};var ke,Be={Events:li},Ae=qi?"touchstart mousedown":"mousedown",Ie={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},Oe={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},Re=ci.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){l(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(mt(this._dragStartTarget,Ae,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Re._dragging===this&&this.finishDrag(),ft(this._dragStartTarget,Ae,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!$(this._element,"leaflet-zoom-anim")&&!(Re._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(Re._dragging=this,this._preventOutline&&ct(this._element),ut(),fi(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t,e=dt(this._element);this._startPoint=new x(i.clientX,i.clientY),this._parentScale=pt(e),mt(document,Oe[t.type],this._onMove,this),mt(document,Ie[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new x(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)1e-7;h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new M(a*e,t.x*e/n)}},He=(Object.freeze||Object)({LonLat:je,Mercator:We,SphericalMercator:mi}),Fe=i({},pi,{code:"EPSG:3395",projection:We,transformation:function(){var t=.5/(Math.PI*We.R);return Z(t,.5,-t,.5)}()}),Ue=i({},pi,{code:"EPSG:4326",projection:je,transformation:Z(1/180,1,-1/180,.5)}),Ve=i({},di,{projection:je,transformation:Z(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});di.Earth=pi,di.EPSG3395=Fe,di.EPSG3857=yi,di.EPSG900913=xi,di.EPSG4326=Ue,di.Simple=Ve;var qe=ci.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[n(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[n(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});be.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=n(t);return this._layers[i]?this:(this._layers[i]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t),this)},removeLayer:function(t){var i=n(t);return this._layers[i]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&n(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?oi(t)?t:[t]:[]).length;ithis._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()i)return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=C(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new T,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return jt(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=jt(t),n=0,o=t.length;n=2&&i[0]instanceof M&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){nn.prototype._setLatLngs.call(this,t),jt(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return jt(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new x(i,i);if(t=new P(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;ot.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||nn.prototype._containsPoint.call(this,t,!0)}}),sn=Ke.extend({initialize:function(t,i){l(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=oi(t)?t:t.features;if(o){for(i=0,e=o.length;i0?o:[i.src]}else{oi(this._url)||(this._url=[this._url]),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var a=0;ao?(i.height=o+"px",Q(t,"leaflet-popup-scrolled")):tt(t,"leaflet-popup-scrolled"),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();at(this._container,i.add(e))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,i=parseInt(q(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new x(this._containerLeft,-e-this._containerBottom);o._add(ht(this._container));var s=t.layerPointToContainerPoint(o),r=w(this.options.autoPanPadding),a=w(this.options.autoPanPaddingTopLeft||r),h=w(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Lt(t)},_getAnchor:function(){return w(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});be.mergeOptions({closePopupOnClick:!0}),be.include({openPopup:function(t,i,e){return t instanceof cn||(t=new cn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),qe.include({bindPopup:function(t,i){return t instanceof cn?(l(t,i),this._popup=t,t._source=this):(this._popup&&!i||(this._popup=new cn(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){if(t instanceof qe||(i=t,t=this),t instanceof Ke)for(var e in this._layers){t=this._layers[e];break}return i||(i=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(Lt(t),i instanceof Qe?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var _n=ln.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){ln.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){ln.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=ln.prototype.getEvents.call(this);return qi&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=G("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=w(this.options.offset),u=this._getAnchor();"top"===s?t=t.add(w(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t=t.subtract(w(r/2-h.x,-h.y,!0)):"center"===s?t=t.subtract(w(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.xthis.options.maxZoom||en&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new x(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1this.options.maxZoom||void 0!==this.options.minZoom&&o1)this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new x(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_e.max.x)||!i.wrapLat&&(t.ye.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return z(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new T(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new x(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(K(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){Q(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=r,t.onmousemove=r,Li&&this.options.opacity<1&&nt(t,this.options.opacity),zi&&!Mi&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var n=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),e(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&f(e(this._tileReady,this,t,null,s)),at(s,n),this._tiles[o]={el:s,coords:t,current:!0},i.appendChild(s),this.fire("tileloadstart",{tile:s,coords:t})},_tileReady:function(t,i,n){i&&this.fire("tileerror",{error:i,tile:n,coords:t});var o=this._tileCoordsToKey(t);(n=this._tiles[o])&&(n.loaded=+new Date,this._map._fadeAnimated?(nt(n.el,0),g(this._fadeFrame),this._fadeFrame=f(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),i||(Q(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Li||!this._map._fadeAnimated?f(this._pruneTiles,this):setTimeout(e(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new x(this._wrapX?s(t.x,this._wrapX):t.x,this._wrapY?s(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new P(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),mn=pn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=l(this,i)).detectRetina&&Yi&&i.maxZoom>0&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),zi||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&void 0===i&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var n=document.createElement("img");return mt(n,"load",e(this._tileOnLoad,this,i,n)),mt(n,"error",e(this._tileOnError,this,i,n)),(this.options.crossOrigin||""===this.options.crossOrigin)&&(n.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),n.alt="",n.setAttribute("role","presentation"),n.src=this.getTileUrl(t),n},getTileUrl:function(t){var e={r:Yi?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(e.y=n),e["-y"]=n}return _(this._url,i(e,this.options))},_tileOnLoad:function(t,i){Li?setTimeout(e(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom,e=this.options.zoomReverse,n=this.options.zoomOffset;return e&&(t=i-t),t+n},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=r,i.onerror=r,i.complete||(i.src=si,K(i),delete this._tiles[t]))},_removeTile:function(t){var i=this._tiles[t];if(i)return Si||i.el.setAttribute("src",si),pn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute("src")!==si))return pn.prototype._tileReady.call(this,t,i,e)}}),fn=mn.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,e){this._url=t;var n=i({},this.defaultWmsParams);for(var o in e)o in this.options||(n[o]=e[o]);var s=(e=l(this,e)).detectRetina&&Yi?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[i]=this._crs.code,mn.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=b(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===Ue?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=mn.prototype.getTileUrl.call(this,t);return a+c(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,e){return i(this.wmsParams,t),e||this.redraw(),this}});mn.WMS=fn,Jt.wms=function(t,i){return new fn(t,i)};var gn=qe.extend({options:{padding:.1,tolerance:0},initialize:function(t){l(this,t),n(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&Q(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=ht(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);ji?rt(this._container,a,e):at(this._container,a)},_reset:function(){this._update(),this._updateTransform(this._center,this._zoom);for(var t in this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new P(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),vn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){gn.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");mt(t,"mousemove",o(this._onMouseMove,32,this),this),mt(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),mt(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){g(this._redrawRequest),delete this._ctx,K(this._container),ft(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){this._redrawBounds=null;for(var t in this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){gn.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Yi?2:1;at(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Yi&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){gn.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[n(t)]=t;var i=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,o=i.prev;e?e.prev=o:this._drawLast=o,o?o.next=e:this._drawFirst=e,delete t._order,delete this._layers[n(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var i,e,n=t.options.dashArray.split(/[, ]+/),o=[];for(e=0;e')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),xn={_initContainer:function(){this._container=G("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(gn.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=yn("shape");Q(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=yn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;K(i),t.removeInteractiveTarget(i),delete this._layers[n(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=yn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=oi(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=yn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){X(t._container)},_bringToBack:function(t){J(t._container)}},wn=$i?yn:E,Pn=gn.extend({getEvents:function(){var t=gn.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=wn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=wn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){K(this._container),ft(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){gn.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),at(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=wn("path");t.options.className&&Q(i,t.options.className),t.options.interactive&&Q(i,"leaflet-interactive"),this._updateStyle(t),this._layers[n(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){K(t._path),t.removeInteractiveTarget(t._path),delete this._layers[n(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,k(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){X(t._path)},_bringToBack:function(t){J(t._path)}});$i&&Pn.include(xn),be.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&$t(t)||Qt(t)}});var Ln=on.extend({initialize:function(t,i){on.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=z(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});Pn.create=wn,Pn.pointsToPath=k,sn.geometryToLayer=Ft,sn.coordsToLatLng=Ut,sn.coordsToLatLngs=Vt,sn.latLngToCoords=qt,sn.latLngsToCoords=Gt,sn.getFeature=Kt,sn.asFeature=Yt,be.mergeOptions({boxZoom:!0});var bn=Ee.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){mt(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){ft(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){K(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),fi(),ut(),this._startPoint=this._map.mouseEventToContainerPoint(t),mt(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=G("div","leaflet-zoom-box",this._container),Q(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new P(this._point,this._startPoint),e=i.getSize();at(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(K(this._box),tt(this._container,"leaflet-crosshair")),gi(),lt(),ft(document,{contextmenu:Lt,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(e(this._resetState,this),0);var i=new T(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});be.addInitHook("addHandler","boxZoom",bn),be.mergeOptions({doubleClickZoom:!0});var Tn=Ee.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});be.addInitHook("addHandler","doubleClickZoom",Tn),be.mergeOptions({dragging:!0,inertia:!Mi,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var zn=Ee.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new Re(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}Q(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){tt(this._map._container,"leaflet-grab"),tt(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=z(this._map.options.maxBounds);this._offsetLimit=b(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.xi.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)0?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});be.addInitHook("addHandler","scrollWheelZoom",Cn),be.mergeOptions({tap:!0,tapTolerance:15});var Sn=Ee.extend({addHooks:function(){mt(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){ft(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(Pt(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new x(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&Q(n,"leaflet-active"),this._holdTimeout=setTimeout(e(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),mt(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),ft(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&tt(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new x(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});qi&&!Vi&&be.addInitHook("addHandler","tap",Sn),be.mergeOptions({touchZoom:qi&&!Mi,bounceAtZoomLimits:!0});var Zn=Ee.extend({addHooks:function(){Q(this._map._container,"leaflet-touch-zoom"),mt(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){tt(this._map._container,"leaflet-touch-zoom"),ft(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),mt(document,"touchmove",this._onTouchMove,this),mt(document,"touchend",this._onTouchEnd,this),Pt(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,n=i.mouseEventToContainerPoint(t.touches[0]),o=i.mouseEventToContainerPoint(t.touches[1]),s=n.distanceTo(o)/this._startDist;if(this._zoom=i.getScaleZoom(s,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoomi.getMaxZoom()&&s>1)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=n._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),g(this._animRequest);var a=e(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=f(a,this,!0),Pt(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,g(this._animRequest),ft(document,"touchmove",this._onTouchMove),ft(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});be.addInitHook("addHandler","touchZoom",Zn),be.BoxZoom=bn,be.DoubleClickZoom=Tn,be.Drag=zn,be.Keyboard=Mn,be.ScrollWheelZoom=Cn,be.Tap=Sn,be.TouchZoom=Zn,Object.freeze=ti,t.version="1.4.0+HEAD.3337f36",t.Control=Te,t.control=ze,t.Browser=Qi,t.Evented=ci,t.Mixin=Be,t.Util=ui,t.Class=v,t.Handler=Ee,t.extend=i,t.bind=e,t.stamp=n,t.setOptions=l,t.DomEvent=Pe,t.DomUtil=ve,t.PosAnimation=Le,t.Draggable=Re,t.LineUtil=Ne,t.PolyUtil=De,t.Point=x,t.point=w,t.Bounds=P,t.bounds=b,t.Transformation=S,t.transformation=Z,t.Projection=He,t.LatLng=M,t.latLng=C,t.LatLngBounds=T,t.latLngBounds=z,t.CRS=di,t.GeoJSON=sn,t.geoJSON=Xt,t.geoJson=an,t.Layer=qe,t.LayerGroup=Ge,t.layerGroup=function(t,i){return new Ge(t,i)},t.FeatureGroup=Ke,t.featureGroup=function(t){return new Ke(t)},t.ImageOverlay=hn,t.imageOverlay=function(t,i,e){return new hn(t,i,e)},t.VideoOverlay=un,t.videoOverlay=function(t,i,e){return new un(t,i,e)},t.DivOverlay=ln,t.Popup=cn,t.popup=function(t,i){return new cn(t,i)},t.Tooltip=_n,t.tooltip=function(t,i){return new _n(t,i)},t.Icon=Ye,t.icon=function(t){return new Ye(t)},t.DivIcon=dn,t.divIcon=function(t){return new dn(t)},t.Marker=$e,t.marker=function(t,i){return new $e(t,i)},t.TileLayer=mn,t.tileLayer=Jt,t.GridLayer=pn,t.gridLayer=function(t){return new pn(t)},t.SVG=Pn,t.svg=Qt,t.Renderer=gn,t.Canvas=vn,t.canvas=$t,t.Path=Qe,t.CircleMarker=tn,t.circleMarker=function(t,i){return new tn(t,i)},t.Circle=en,t.circle=function(t,i,e){return new en(t,i,e)},t.Polyline=nn,t.polyline=function(t,i){return new nn(t,i)},t.Polygon=on,t.polygon=function(t,i){return new on(t,i)},t.Rectangle=Ln,t.rectangle=function(t,i){return new Ln(t,i)},t.Map=be,t.map=function(t,i){return new be(t,i)};var En=window.L;t.noConflict=function(){return window.L=En,this},window.L=t}); \ No newline at end of file diff --git a/worldmap/leaflet/leaflet.js.map b/worldmap/leaflet/leaflet.js.map new file mode 100644 index 0000000..50fefec --- /dev/null +++ b/worldmap/leaflet/leaflet.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["dist/leaflet-src.js"],"names":["global","factory","exports","module","define","amd","L","this","extend","dest","i","j","len","src","arguments","length","bind","fn","obj","slice","Array","prototype","apply","call","args","concat","stamp","_leaflet_id","lastId","throttle","time","context","lock","wrapperFn","later","setTimeout","wrapNum","x","range","includeMax","max","min","d","falseFn","formatNum","num","digits","pow","Math","undefined","round","trim","str","replace","splitWords","split","setOptions","options","hasOwnProperty","create","getParamString","existingUrl","uppercase","params","push","encodeURIComponent","toUpperCase","indexOf","join","template","data","templateRe","key","value","Error","array","el","getPrefixed","name","window","timeoutDefer","Date","timeToCall","lastTime","requestAnimFrame","immediate","requestFn","cancelAnimFrame","id","cancelFn","Class","checkDeprecatedMixinEvents","includes","Mixin","isArray","Events","console","warn","stack","Point","y","toPoint","Bounds","a","b","points","toBounds","LatLngBounds","corner1","corner2","latlngs","toLatLngBounds","LatLng","lat","lng","alt","isNaN","toLatLng","c","lon","Transformation","_a","_b","_c","_d","toTransformation","svgCreate","document","createElementNS","pointsToPath","rings","closed","len2","p","svg","userAgentContains","navigator","userAgent","toLowerCase","addPointerListener","type","handler","_addPointerStart","_addPointerMove","_addPointerEnd","removePointerListener","removeEventListener","POINTER_DOWN","POINTER_MOVE","POINTER_UP","POINTER_CANCEL","onDown","e","pointerType","MSPOINTER_TYPE_MOUSE","TAG_WHITE_LIST","target","tagName","preventDefault","_handlePointer","addEventListener","_pointerDocListener","documentElement","_globalPointerDown","_globalPointerMove","_globalPointerUp","_pointers","pointerId","_pointersCount","touches","changedTouches","onMove","buttons","onUp","addDoubleTapListener","onTouchStart","count","pointer","edge","now","delta","last","touch$$1","doubleTap","delay","onTouchEnd","cancelBubble","prop","newTouch","_pre","_touchstart","_touchend","removeDoubleTapListener","touchstart","touchend","dblclick","get","getElementById","getStyle","style","currentStyle","defaultView","css","getComputedStyle","create$1","className","container","createElement","appendChild","remove","parent","parentNode","removeChild","empty","firstChild","toFront","lastChild","toBack","insertBefore","hasClass","classList","contains","getClass","RegExp","test","addClass","classes","add","setClass","removeClass","baseVal","correspondingElement","setOpacity","opacity","_setOpacityIE","filter","filterName","filters","item","Enabled","Opacity","testProp","props","setTransform","offset","scale","pos","TRANSFORM","ie3d","setPosition","point","_leaflet_pos","any3d","left","top","getPosition","disableImageDrag","on","enableImageDrag","off","preventOutline","element","tabIndex","restoreOutline","_outlineElement","_outlineStyle","outline","getSizedParentNode","offsetWidth","offsetHeight","body","getScale","rect","getBoundingClientRect","width","height","boundingClientRect","types","addOne","removeOne","eventsKey","event","originalHandler","touch","chrome","isExternalTarget","android","filterClick","attachEvent","detachEvent","stopPropagation","originalEvent","_stopped","skipped","disableScrollPropagation","disableClickPropagation","fakeStop","returnValue","stop","getMousePosition","clientX","clientY","clientLeft","clientTop","getWheelDelta","wheelDeltaY","deltaY","deltaMode","wheelPxFactor","deltaX","deltaZ","wheelDelta","detail","abs","skipEvents","events","related","relatedTarget","err","timeStamp","elapsed","lastClick","_simulatedClick","_simulated","simplify","tolerance","sqTolerance","_reducePoints","_simplifyDP","pointToSegmentDistance","p1","p2","sqrt","_sqClosestPointOnSegment","markers","Uint8Array","_simplifyDPStep","newPoints","first","index","sqDist","maxSqDist","reducedPoints","prev","_sqDist","clipSegment","bounds","useLastCode","codeOut","newCode","codeA","_lastCode","_getBitCode","codeB","_getEdgeIntersection","code","dx","dy","t","dot","isFlat","_flat","clipPolygon","clippedPoints","k","edges","_code","geometryToLayer","geojson","latlng","geometry","coords","coordinates","layers","pointToLayer","_coordsToLatLng","coordsToLatLng","Marker","FeatureGroup","coordsToLatLngs","Polyline","Polygon","geometries","layer","properties","levelsDeep","latLngToCoords","precision","latLngsToCoords","getFeature","newGeometry","feature","asFeature","geoJSON","GeoJSON","tileLayer","url","TileLayer","canvas$1","canvas","Canvas","svg$1","vml","SVG","freeze","Object","F","proto","toString","emptyImageUrl","requestAnimationFrame","cancelAnimationFrame","clearTimeout","Util","NewClass","initialize","callInitHooks","parentProto","__super__","constructor","statics","_initHooks","_initHooksCalled","include","mergeOptions","addInitHook","init","_on","_off","_events","typeListeners","newListener","ctx","listeners","l","_firingCount","splice","fire","propagate","listens","sourceTarget","_propagateEvent","_eventParents","once","addEventParent","removeEventParent","propagatedFrom","clearAllEventListeners","addOneTimeEventListener","fireEvent","hasEventListeners","Evented","trunc","v","floor","ceil","clone","_add","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","scaleBy","unscaleBy","_round","_floor","_ceil","_trunc","distanceTo","equals","getCenter","getBottomLeft","getTopRight","getTopLeft","getBottomRight","getSize","intersects","min2","max2","xIntersects","yIntersects","overlaps","xOverlaps","yOverlaps","isValid","sw2","ne2","sw","_southWest","ne","_northEast","pad","bufferRatio","heightBuffer","widthBuffer","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","latIntersects","lngIntersects","latOverlaps","lngOverlaps","toBBoxString","maxMargin","other","Earth","distance","wrap","wrapLatLng","sizeInMeters","latAccuracy","lngAccuracy","cos","PI","CRS","latLngToPoint","zoom","projectedPoint","projection","project","transformation","_transform","pointToLatLng","untransformedPoint","untransform","unproject","log","LN2","getProjectedBounds","infinite","s","transform","wrapLng","wrapLat","wrapLatLngBounds","center","newCenter","latShift","lngShift","R","latlng1","latlng2","rad","lat1","lat2","sinDLat","sin","sinDLon","atan2","SphericalMercator","MAX_LATITUDE","atan","exp","disableTextSelection","enableTextSelection","_userSelect","EPSG3857","EPSG900913","style$1","ie","ielt9","webkit","android23","webkitVer","parseInt","exec","androidStock","opera","gecko","safari","phantom","opera12","win","platform","webkit3d","WebKitCSSMatrix","gecko3d","L_DISABLE_3D","mobile","orientation","mobileWebkit","mobileWebkit3d","msPointer","PointerEvent","MSPointerEvent","L_NO_TOUCH","DocumentTouch","mobileOpera","mobileGecko","retina","devicePixelRatio","screen","deviceXDPI","logicalXDPI","getContext","createSVGRect","div","innerHTML","shape","behavior","adj","Browser","TRANSITION","TRANSITION_END","userSelectProperty","DomUtil","DomEvent","addListener","removeListener","PosAnimation","run","newPos","duration","easeLinearity","_el","_inProgress","_duration","_easeOutPower","_startPos","_offset","_startTime","_animate","_step","_complete","_animId","_runFrame","_easeOut","progress","Map","crs","minZoom","maxZoom","maxBounds","renderer","zoomAnimation","zoomAnimationThreshold","fadeAnimation","markerZoomAnimation","transform3DLimit","zoomSnap","zoomDelta","trackResize","_handlers","_layers","_zoomBoundLayers","_sizeChanged","_initContainer","_initLayout","_onResize","_initEvents","setMaxBounds","_zoom","_limitZoom","setView","reset","_zoomAnimated","_createAnimProxy","_proxy","_catchTransitionEnd","_addLayers","_limitCenter","_stop","_loaded","animate","pan","_tryAnimatedZoom","_tryAnimatedPan","_sizeTimer","_resetView","setZoom","zoomIn","zoomOut","setZoomAround","getZoomScale","viewHalf","centerOffset","latLngToContainerPoint","containerPointToLatLng","_getBoundsCenterZoom","getBounds","paddingTL","paddingTopLeft","padding","paddingBR","paddingBottomRight","getBoundsZoom","Infinity","paddingOffset","swPoint","nePoint","fitBounds","fitWorld","panTo","panBy","getZoom","_panAnim","step","_onPanTransitionStep","end","_onPanTransitionEnd","noMoveStart","_mapPane","_getMapPanePos","_rawPanBy","flyTo","targetCenter","targetZoom","r","w1","w0","rho2","u1","sq","sinh","n","cosh","tanh","w","r0","rho","u","easeOut","frame","start","S","_flyToFrame","_move","from","to","startZoom","getScaleZoom","_moveEnd","size","_moveStart","flyToBounds","_panInsideMaxBounds","setMinZoom","oldZoom","setMaxZoom","panInsideBounds","_enforcingBounds","panInside","pixelCenter","pixelPoint","pixelBounds","getPixelBounds","halfPixelBounds","paddedBounds","diff","invalidateSize","oldSize","_lastCenter","newSize","oldCenter","debounceMoveend","locate","_locateOptions","timeout","watch","_handleGeolocationError","message","onResponse","_handleGeolocationResponse","onError","_locationWatchId","geolocation","watchPosition","getCurrentPosition","stopLocate","clearWatch","error","latitude","longitude","accuracy","timestamp","addHandler","HandlerClass","enable","_containerId","_container","_clearControlPos","_resizeRequest","_clearHandlers","_panes","_renderer","createPane","pane","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","inside","nw","se","boundsSize","snap","scalex","scaley","_size","clientWidth","clientHeight","topLeftPoint","_getTopLeftPoint","getPixelOrigin","_pixelOrigin","getPixelWorldBounds","getPane","getPanes","getContainer","toZoom","fromZoom","latLngToLayerPoint","containerPointToLayerPoint","layerPointToContainerPoint","layerPoint","mouseEventToContainerPoint","mouseEventToLayerPoint","mouseEventToLatLng","_onScroll","_fadeAnimated","position","_initPanes","_initControlPos","panes","_paneRenderers","markerPane","shadowPane","loading","zoomChanged","_getNewPixelOrigin","pinch","_getZoomSpan","remove$$1","_targets","onOff","_handleDOMEvent","_onMoveEnd","scrollTop","scrollLeft","_findEventTargets","targets","isHover","srcElement","dragging","_draggableMoved","_fireDOMEvent","_mouseEvents","synth","isMarker","getLatLng","_radius","containerPoint","bubblingMouseEvents","enabled","moved","boxZoom","disable","whenReady","callback","_latLngToNewLayerPoint","topLeft","_latLngBoundsToNewLayerBounds","latLngBounds","_getCenterOffset","centerPoint","viewBounds","_getBoundsOffset","_limitOffset","newBounds","pxBounds","projectedMaxBounds","minOffset","maxOffset","_rebound","right","proxy","mapPane","_animatingZoom","_onZoomTransitionEnd","z","_destroyAnimProxy","propertyName","_nothingToAnimate","getElementsByClassName","_animateZoom","startAnim","noUpdate","_animateToCenter","_animateToZoom","Control","map","_map","removeControl","addControl","addTo","onAdd","corner","_controlCorners","onRemove","_refocusOnMap","screenX","screenY","focus","control","createCorner","vSide","hSide","corners","_controlContainer","Layers","collapsed","autoZIndex","hideSingleBase","sortLayers","sortFunction","layerA","layerB","nameA","nameB","baseLayers","overlays","_layerControlInputs","_lastZIndex","_handlingClick","_addLayer","_update","_checkDisabledLayers","_onLayerChange","_expandIfNotCollapsed","addBaseLayer","addOverlay","removeLayer","_getLayer","expand","_section","acceptableHeight","offsetTop","collapse","setAttribute","section","mouseenter","mouseleave","link","_layersLink","href","title","_baseLayersList","_separator","_overlaysList","overlay","sort","setZIndex","baseLayersPresent","overlaysPresent","baseLayersCount","_addItem","display","_createRadioElement","checked","radioHtml","radioFragment","input","label","hasLayer","defaultChecked","layerId","_onInputClick","holder","inputs","addedLayers","removedLayers","addLayer","disabled","_expand","_collapse","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","zoomName","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","_disabled","shiftKey","html","zoomControl","Scale","maxWidth","metric","imperial","_addScales","updateWhenIdle","_mScale","_iScale","maxMeters","_updateScales","_updateMetric","_updateImperial","meters","_getRoundNum","_updateScale","maxMiles","miles","feet","maxFeet","text","ratio","pow10","Attribution","prefix","_attributions","attributionControl","getAttribution","addAttribution","setPrefix","removeAttribution","attribs","prefixAndAttribs","attribution","Handler","_enabled","addHooks","removeHooks","START","END","mousedown","pointerdown","MSPointerDown","MOVE","Draggable","clickTolerance","dragStartTarget","preventOutline$$1","_element","_dragStartTarget","_preventOutline","_onDown","_dragging","finishDrag","which","button","_moving","sizedParent","_startPoint","_parentScale","_onMove","_onUp","_lastTarget","SVGElementInstance","correspondingUseElement","_newPos","_animRequest","_lastEvent","_updatePosition","LineUtil","closestPointOnSegment","PolyUtil","LonLat","Mercator","R_MINOR","tmp","con","ts","tan","phi","dphi","EPSG3395","EPSG4326","Simple","Layer","removeFrom","_mapToAdd","addInteractiveTarget","targetEl","removeInteractiveTarget","_layerAdd","getEvents","beforeAdd","eachLayer","method","_addZoomLimit","_updateZoomLevels","_removeZoomLimit","oldZoomSpan","LayerGroup","getLayerId","clearLayers","invoke","methodName","getLayer","getLayers","zIndex","setStyle","bringToFront","bringToBack","Icon","popupAnchor","tooltipAnchor","createIcon","oldIcon","_createIcon","createShadow","_getIconUrl","img","_createImg","_setIconStyles","sizeOption","anchor","shadowAnchor","iconAnchor","marginLeft","marginTop","IconDefault","iconUrl","iconRetinaUrl","shadowUrl","iconSize","shadowSize","imagePath","_detectIconPath","path","MarkerDrag","marker","_marker","icon","_icon","_draggable","dragstart","_onDragStart","predrag","_onPreDrag","drag","_onDrag","dragend","_onDragEnd","_adjustPan","speed","autoPanSpeed","autoPanPadding","iconPos","origin","panBounds","movement","_panRequest","_oldLatLng","closePopup","autoPan","shadow","_shadow","_latlng","oldLatLng","interactive","keyboard","zIndexOffset","riseOnHover","riseOffset","draggable","_initIcon","update","_removeIcon","_removeShadow","viewreset","setLatLng","setZIndexOffset","setIcon","_popup","bindPopup","getElement","_setPos","classToAdd","addIcon","mouseover","_bringToFront","mouseout","_resetZIndex","newShadow","addShadow","_updateOpacity","_initInteraction","_zIndex","_updateZIndex","opt","_getPopupAnchor","_getTooltipAnchor","Path","stroke","color","weight","lineCap","lineJoin","dashArray","dashOffset","fill","fillColor","fillOpacity","fillRule","getRenderer","_initPath","_reset","_addPath","_removePath","redraw","_updatePath","_updateStyle","_bringToBack","_path","_project","_clickTolerance","CircleMarker","radius","setRadius","getRadius","_point","_updateBounds","r2","_radiusY","_pxBounds","_updateCircle","_empty","_bounds","_containsPoint","Circle","legacyOptions","_mRadius","half","latR","bottom","lngR","acos","smoothFactor","noClip","_setLatLngs","getLatLngs","_latlngs","setLatLngs","isEmpty","closestLayerPoint","minDistance","minPoint","closest","jLen","_parts","halfDist","segDist","dist","_rings","addLatLng","_defaultShape","_convertLatLngs","result","flat","_projectLatlngs","projectedBounds","ring","_clipPoints","segment","parts","_simplifyPoints","_updatePoly","part","f","area","pop","clipped","addData","features","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","PointToGeoJSON","toGeoJSON","multi","holes","toMultiPoint","isGeometryCollection","jsons","json","geoJson","ImageOverlay","crossOrigin","errorOverlayUrl","_url","_image","_initImage","styleOpts","setUrl","setBounds","zoomanim","wasElementSupplied","onselectstart","onmousemove","onload","onerror","_overlayOnError","image","errorUrl","VideoOverlay","autoplay","loop","vid","onloadeddata","sourceElements","getElementsByTagName","sources","source","DivOverlay","_source","_removeTimeout","getContent","_content","setContent","content","visibility","_updateContent","_updateLayout","isOpen","node","_contentNode","hasChildNodes","_getAnchor","_containerBottom","_containerLeft","_containerWidth","Popup","minWidth","maxHeight","autoPanPaddingTopLeft","autoPanPaddingBottomRight","keepInView","closeButton","autoClose","closeOnEscapeKey","openOn","openPopup","popup","closeOnClick","closePopupOnClick","preclick","_close","moveend","wrapper","_wrapper","_tipContainer","_tip","_closeButton","_onCloseButtonClick","whiteSpace","marginBottom","containerHeight","containerWidth","layerPos","containerPos","_popupHandlersAdded","click","_openPopup","keypress","_onKeyPress","move","_movePopup","unbindPopup","togglePopup","isPopupOpen","setPopupContent","getPopup","keyCode","Tooltip","direction","permanent","sticky","tooltip","closeTooltip","_setPosition","tooltipPoint","tooltipWidth","tooltipHeight","openTooltip","bindTooltip","_tooltip","_initTooltipInteractions","unbindTooltip","_tooltipHandlersAdded","_moveTooltip","_openTooltip","mousemove","toggleTooltip","isTooltipOpen","setTooltipContent","getTooltip","DivIcon","bgPos","backgroundPosition","Default","GridLayer","tileSize","updateWhenZooming","updateInterval","maxNativeZoom","minNativeZoom","noWrap","keepBuffer","_levels","_tiles","_removeAllTiles","_tileZoom","_setAutoZIndex","isLoading","_loading","viewprereset","_invalidateAll","createTile","getTileSize","compare","children","edgeZIndex","isFinite","nextFrame","willPrune","tile","current","loaded","fade","active","_onOpaqueTile","_noPrune","_pruneTiles","_fadeFrame","_updateLevels","_onUpdateLevel","_removeTilesAtZoom","_onRemoveLevel","level","_setZoomTransform","_onCreateLevel","_level","retain","_retainParent","_retainChildren","_removeTile","x2","y2","z2","coords2","_tileCoordsToKey","animating","_setView","_clampZoom","noPrune","tileZoom","tileZoomChanged","_abortLoading","_resetGrid","_setZoomTransforms","translate","_tileSize","_globalTileRange","_pxBoundsToTileRange","_wrapX","_wrapY","_getTiledPixelBounds","mapZoom","halfSize","tileRange","tileCenter","queue","margin","noPruneRange","_isValidTile","fragment","createDocumentFragment","_addTile","tileBounds","_tileCoordsToBounds","_keyToBounds","_keyToTileCoords","_tileCoordsToNwSe","nwPoint","sePoint","bp","_initTile","WebkitBackfaceVisibility","tilePos","_getTilePos","_wrapCoords","_tileReady","_noTilesToLoad","newCoords","subdomains","errorTileUrl","zoomOffset","tms","zoomReverse","detectRetina","_onTileRemove","noRedraw","done","_tileOnLoad","_tileOnError","getTileUrl","_getSubdomain","_getZoomForUrl","invertedY","getAttribute","tilePoint","complete","TileLayerWMS","defaultWmsParams","service","request","styles","format","transparent","version","wmsParams","realRetina","_crs","_wmsVersion","parseFloat","projectionKey","bbox","setParams","WMS","wms","Renderer","_updatePaths","_destroyContainer","_onZoom","zoomend","_onZoomEnd","_onAnimZoom","ev","_updateTransform","currentCenterPoint","_center","topLeftOffset","_onViewPreReset","_postponeUpdatePaths","_draw","_onMouseMove","_onClick","_handleMouseOut","_ctx","_redrawRequest","_redrawBounds","_redraw","m","_updateDashArray","order","_order","_drawLast","next","_drawFirst","_requestRedraw","_extendRedrawBounds","dashValue","Number","_dashArray","_clear","clearRect","save","beginPath","clip","_drawing","restore","closePath","_fillStroke","arc","globalAlpha","fillStyle","setLineDash","lineWidth","strokeStyle","clickedLayer","_fireEvent","moving","_handleMouseHover","_hoveredLayer","candidateHoveredLayer","vmlCreate","namespaces","vmlMixin","coordsize","_stroke","_fill","stroked","filled","dashStyle","endcap","joinstyle","_setPath","create$2","zoomstart","_onZoomStart","_rootGroup","_svgSize","removeAttribute","_getPaneRenderer","_createRenderer","preferCanvas","Rectangle","_boundsToLatLngs","BoxZoom","_pane","overlayPane","_resetStateTimeout","_destroy","_onMouseDown","_resetState","_clearDeferredResetState","contextmenu","mouseup","_onMouseUp","keydown","_onKeyDown","_box","_finish","boxZoomBounds","doubleClickZoom","DoubleClickZoom","_onDoubleClick","inertia","inertiaDeceleration","inertiaMaxSpeed","worldCopyJump","maxBoundsViscosity","Drag","_onPreDragLimit","_onPreDragWrap","_positions","_times","_offsetLimit","_viscosity","_lastTime","_lastPos","_absPos","_prunePositions","shift","pxCenter","pxWorldCenter","_initialWorldOffset","_worldWidth","_viscousLimit","threshold","limit","worldWidth","halfWidth","newX1","newX2","newX","noInertia","ease","speedVector","limitedSpeed","limitedSpeedVector","decelerationDuration","keyboardPanDelta","Keyboard","keyCodes","down","up","_setPanDelta","_setZoomDelta","_onFocus","blur","_onBlur","_addHooks","_removeHooks","_focused","docEl","scrollTo","panDelta","keys","_panKeys","codes","_zoomKeys","altKey","ctrlKey","metaKey","scrollWheelZoom","wheelDebounceTime","wheelPxPerZoomLevel","ScrollWheelZoom","_onWheelScroll","_delta","debounce","_lastMousePos","_timer","_performZoom","d2","d3","d4","tap","tapTolerance","Tap","_fireClick","_holdTimeout","_isTapValid","_simulateEvent","touchmove","simulatedEvent","createEvent","initMouseEvent","dispatchEvent","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_centerPoint","_startLatLng","_pinchStartLatLng","_startDist","_startZoom","_onTouchMove","_onTouchEnd","moveFn","Projection","latLng","layerGroup","featureGroup","imageOverlay","videoOverlay","video","divIcon","gridLayer","circleMarker","circle","polyline","polygon","rectangle","oldL","noConflict"],"mappings":"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","file":"dist/leaflet.js.map"} \ No newline at end of file diff --git a/worldmap/leaflet/leaflet.label.css b/worldmap/leaflet/leaflet.label.css deleted file mode 100644 index 9b03094..0000000 --- a/worldmap/leaflet/leaflet.label.css +++ /dev/null @@ -1,53 +0,0 @@ -.leaflet-label { - background: rgba(250, 250, 250, 0.9); - background-clip: padding-box; - border-color: #888; - border-color: rgba(0,0,0,0.25); - border-radius: 3px; - border-style: solid; - border-width: 1px; - color: #111; - display: block; - font: 12px/20px "Helvetica Neue", Arial, Helvetica, sans-serif; - font-weight: 500; - padding: 1px 6px; - position: absolute; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - pointer-events: none; - white-space: nowrap; - z-index: 6; -} - -.leaflet-label.leaflet-clickable { - cursor: pointer; - pointer-events: auto; -} - -.leaflet-label:before, -.leaflet-label:after { - border-top: 6px solid transparent; - border-bottom: 6px solid transparent; - content: none; - position: absolute; - top: 5px; -} - -.leaflet-label:before { - border-right: 6px solid black; - border-right-color: inherit; - left: -10px; -} - -.leaflet-label:after { - border-left: 6px solid black; - border-left-color: inherit; - right: -10px; -} - -.leaflet-label-right:before, -.leaflet-label-left:after { - content: ""; -} diff --git a/worldmap/leaflet/leaflet.label.js b/worldmap/leaflet/leaflet.label.js deleted file mode 100644 index c1edbdb..0000000 --- a/worldmap/leaflet/leaflet.label.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Leaflet.label, a plugin that adds labels to markers and vectors for Leaflet powered maps. - (c) 2012-2013, Jacob Toye, Smartrak - - https://github.com/Leaflet/Leaflet.label - http://leafletjs.com - https://github.com/jacobtoye -*/ -(function(t,e){"function"==typeof define&&define.amd?define(["leaflet"],t):"object"==typeof exports&&(module.exports=t(require("leaflet"))),e!==void 0&&e.L&&(e.LeafletLabel=t(L))})(function(t){t.labelVersion="0.2.4";var e=t.Class.extend({includes:t.Mixin.Events,options:{className:"",clickable:!1,direction:"right",noHide:!1,offset:[12,-15],opacity:1,zoomAnimation:!0},initialize:function(e,i){t.setOptions(this,e),this._source=i,this._animated=t.Browser.any3d&&this.options.zoomAnimation,this._isOpen=!1},onAdd:function(e){this._map=e,this._pane=this.options.pane?e._panes[this.options.pane]:this._source instanceof t.Marker?e._panes.markerPane:e._panes.popupPane,this._container||this._initLayout(),this._pane.appendChild(this._container),this._initInteraction(),this._update(),this.setOpacity(this.options.opacity),e.on("moveend",this._onMoveEnd,this).on("viewreset",this._onViewReset,this),this._animated&&e.on("zoomanim",this._zoomAnimation,this),t.Browser.touch&&!this.options.noHide&&(t.DomEvent.on(this._container,"click",this.close,this),e.on("click",this.close,this))},onRemove:function(t){this._pane.removeChild(this._container),t.off({zoomanim:this._zoomAnimation,moveend:this._onMoveEnd,viewreset:this._onViewReset},this),this._removeInteraction(),this._map=null},setLatLng:function(e){return this._latlng=t.latLng(e),this._map&&this._updatePosition(),this},setContent:function(t){return this._previousContent=this._content,this._content=t,this._updateContent(),this},close:function(){var e=this._map;e&&(t.Browser.touch&&!this.options.noHide&&(t.DomEvent.off(this._container,"click",this.close),e.off("click",this.close,this)),e.removeLayer(this))},updateZIndex:function(t){this._zIndex=t,this._container&&this._zIndex&&(this._container.style.zIndex=t)},setOpacity:function(e){this.options.opacity=e,this._container&&t.DomUtil.setOpacity(this._container,e)},_initLayout:function(){this._container=t.DomUtil.create("div","leaflet-label "+this.options.className+" leaflet-zoom-animated"),this.updateZIndex(this._zIndex)},_update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updatePosition(),this._container.style.visibility="")},_updateContent:function(){this._content&&this._map&&this._prevContent!==this._content&&"string"==typeof this._content&&(this._container.innerHTML=this._content,this._prevContent=this._content,this._labelWidth=this._container.offsetWidth)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},_setPosition:function(e){var i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),s=i.layerPointToContainerPoint(e),a=this.options.direction,l=this._labelWidth,h=t.point(this.options.offset);"right"===a||"auto"===a&&s.xn;n++)t.DomEvent.on(e,i[n],this._fireMouseEvent,this)}},_removeInteraction:function(){if(this.options.clickable){var e=this._container,i=["dblclick","mousedown","mouseover","mouseout","contextmenu"];t.DomUtil.removeClass(e,"leaflet-clickable"),t.DomEvent.off(e,"click",this._onMouseClick,this);for(var n=0;i.length>n;n++)t.DomEvent.off(e,i[n],this._fireMouseEvent,this)}},_onMouseClick:function(e){this.hasEventListeners(e.type)&&t.DomEvent.stopPropagation(e),this.fire(e.type,{originalEvent:e})},_fireMouseEvent:function(e){this.fire(e.type,{originalEvent:e}),"contextmenu"===e.type&&this.hasEventListeners(e.type)&&t.DomEvent.preventDefault(e),"mousedown"!==e.type?t.DomEvent.stopPropagation(e):t.DomEvent.preventDefault(e)}});return t.BaseMarkerMethods={showLabel:function(){return this.label&&this._map&&(this.label.setLatLng(this._latlng),this._map.showLabel(this.label)),this},hideLabel:function(){return this.label&&this.label.close(),this},setLabelNoHide:function(t){this._labelNoHide!==t&&(this._labelNoHide=t,t?(this._removeLabelRevealHandlers(),this.showLabel()):(this._addLabelRevealHandlers(),this.hideLabel()))},bindLabel:function(i,n){var o=this.options.icon?this.options.icon.options.labelAnchor:this.options.labelAnchor,s=t.point(o)||t.point(0,0);return s=s.add(e.prototype.options.offset),n&&n.offset&&(s=s.add(n.offset)),n=t.Util.extend({offset:s},n),this._labelNoHide=n.noHide,this.label||(this._labelNoHide||this._addLabelRevealHandlers(),this.on("remove",this.hideLabel,this).on("move",this._moveLabel,this).on("add",this._onMarkerAdd,this),this._hasLabelHandlers=!0),this.label=new e(n,this).setContent(i),this},unbindLabel:function(){return this.label&&(this.hideLabel(),this.label=null,this._hasLabelHandlers&&(this._labelNoHide||this._removeLabelRevealHandlers(),this.off("remove",this.hideLabel,this).off("move",this._moveLabel,this).off("add",this._onMarkerAdd,this)),this._hasLabelHandlers=!1),this},updateLabelContent:function(t){this.label&&this.label.setContent(t)},getLabel:function(){return this.label},_onMarkerAdd:function(){this._labelNoHide&&this.showLabel()},_addLabelRevealHandlers:function(){this.on("mouseover",this.showLabel,this).on("mouseout",this.hideLabel,this),t.Browser.touch&&this.on("click",this.showLabel,this)},_removeLabelRevealHandlers:function(){this.off("mouseover",this.showLabel,this).off("mouseout",this.hideLabel,this),t.Browser.touch&&this.off("click",this.showLabel,this)},_moveLabel:function(t){this.label.setLatLng(t.latlng)}},t.Icon.Default.mergeOptions({labelAnchor:new t.Point(9,-20)}),t.Marker.mergeOptions({icon:new t.Icon.Default}),t.Marker.include(t.BaseMarkerMethods),t.Marker.include({_originalUpdateZIndex:t.Marker.prototype._updateZIndex,_updateZIndex:function(t){var e=this._zIndex+t;this._originalUpdateZIndex(t),this.label&&this.label.updateZIndex(e)},_originalSetOpacity:t.Marker.prototype.setOpacity,setOpacity:function(t,e){this.options.labelHasSemiTransparency=e,this._originalSetOpacity(t)},_originalUpdateOpacity:t.Marker.prototype._updateOpacity,_updateOpacity:function(){var t=0===this.options.opacity?0:1;this._originalUpdateOpacity(),this.label&&this.label.setOpacity(this.options.labelHasSemiTransparency?this.options.opacity:t)},_originalSetLatLng:t.Marker.prototype.setLatLng,setLatLng:function(t){return this.label&&!this._labelNoHide&&this.hideLabel(),this._originalSetLatLng(t)}}),t.CircleMarker.mergeOptions({labelAnchor:new t.Point(0,0)}),t.CircleMarker.include(t.BaseMarkerMethods),t.Path.include({bindLabel:function(i,n){return this.label&&this.label.options===n||(this.label=new e(n,this)),this.label.setContent(i),this._showLabelAdded||(this.on("mouseover",this._showLabel,this).on("mousemove",this._moveLabel,this).on("mouseout remove",this._hideLabel,this),t.Browser.touch&&this.on("click",this._showLabel,this),this._showLabelAdded=!0),this},unbindLabel:function(){return this.label&&(this._hideLabel(),this.label=null,this._showLabelAdded=!1,this.off("mouseover",this._showLabel,this).off("mousemove",this._moveLabel,this).off("mouseout remove",this._hideLabel,this)),this},updateLabelContent:function(t){this.label&&this.label.setContent(t)},_showLabel:function(t){this.label.setLatLng(t.latlng),this._map.showLabel(this.label)},_moveLabel:function(t){this.label.setLatLng(t.latlng)},_hideLabel:function(){this.label.close()}}),t.Map.include({showLabel:function(t){return this.addLayer(t)}}),t.FeatureGroup.include({clearLayers:function(){return this.unbindLabel(),this.eachLayer(this.removeLayer,this),this},bindLabel:function(t,e){return this.invoke("bindLabel",t,e)},unbindLabel:function(){return this.invoke("unbindLabel")},updateLabelContent:function(t){this.invoke("updateLabelContent",t)}}),e},window); \ No newline at end of file diff --git a/worldmap/leaflet/leaflet.measurecontrol.js b/worldmap/leaflet/leaflet.measurecontrol.js index 52ac80f..4b9d90b 100644 --- a/worldmap/leaflet/leaflet.measurecontrol.js +++ b/worldmap/leaflet/leaflet.measurecontrol.js @@ -1,139 +1 @@ -L.Polyline.Measure = L.Draw.Polyline.extend({ - addHooks: function() { - L.Draw.Polyline.prototype.addHooks.call(this); - if (this._map) { - this._markerGroup = new L.LayerGroup(); - this._map.addLayer(this._markerGroup); - - this._markers = []; - this._map.on('click', this._onClick, this); - this._startShape(); - } - }, - - removeHooks: function () { - L.Draw.Polyline.prototype.removeHooks.call(this); - - this._clearHideErrorTimeout(); - - //!\ Still useful when control is disabled before any drawing (refactor needed?) - this._map.off('mousemove', this._onMouseMove); - this._clearGuides(); - this._container.style.cursor = ''; - - this._removeShape(); - - this._map.off('click', this._onClick, this); - }, - - _startShape: function() { - this._drawing = true; - this._poly = new L.Polyline([], this.options.shapeOptions); - - this._container.style.cursor = 'crosshair'; - - this._updateTooltip(); - this._map.on('mousemove', this._onMouseMove, this); - }, - - _finishShape: function () { - this._drawing = false; - - this._cleanUpShape(); - this._clearGuides(); - - this._updateTooltip(); - - this._map.off('mousemove', this._onMouseMove, this); - this._container.style.cursor = ''; - }, - - _removeShape: function() { - if (!this._poly) - return; - this._map.removeLayer(this._poly); - delete this._poly; - this._markers.splice(0); - this._markerGroup.clearLayers(); - }, - - _onClick: function(e) { - if (!this._drawing) { - this._removeShape(); - this._startShape(); - return; - } - }, - - _getTooltipText: function() { - var labelText = L.Draw.Polyline.prototype._getTooltipText.call(this); - if (!this._drawing) { - labelText.text = ''; - } - return labelText; - } -}); - -L.Control.MeasureControl = L.Control.extend({ - - statics: { - TITLE: 'Measure distances' - }, - options: { - position: 'topleft', - handler: {} - }, - - toggle: function() { - if (this.handler.enabled()) { - this.handler.disable.call(this.handler); - } else { - this.handler.enable.call(this.handler); - } - }, - - onAdd: function(map) { - var className = 'leaflet-control-draw'; - - this._container = L.DomUtil.create('div', 'leaflet-bar'); - - this.handler = new L.Polyline.Measure(map, this.options.handler); - - this.handler.on('enabled', function () { - L.DomUtil.addClass(this._container, 'enabled'); - }, this); - - this.handler.on('disabled', function () { - L.DomUtil.removeClass(this._container, 'enabled'); - }, this); - - var link = L.DomUtil.create('a', className+'-measure', this._container); - link.href = '#'; - link.title = L.Control.MeasureControl.TITLE; - - L.DomEvent - .addListener(link, 'click', L.DomEvent.stopPropagation) - .addListener(link, 'click', L.DomEvent.preventDefault) - .addListener(link, 'click', this.toggle, this); - - return this._container; - } -}); - - -L.Map.mergeOptions({ - measureControl: false -}); - - -L.Map.addInitHook(function () { - if (this.options.measureControl) { - this.measureControl = L.Control.measureControl().addTo(this); - } -}); - - -L.Control.measureControl = function (options) { - return new L.Control.MeasureControl(options); -}; - +(function(factory,window){if(typeof define==="function"&&define.amd){define(["leaflet"],function(L){factory(L,window.toGeoJSON)})}else if(typeof exports==="object"){module.exports=function(L){if(L===undefined){if(typeof window!=="undefined"){L=require("leaflet")}}factory(L);return L}}else if(typeof window!=="undefined"&&window.L){factory(window.L)}})(function(L){L.Polyline.Measure=L.Draw.Polyline.extend({addHooks:function(){L.Draw.Polyline.prototype.addHooks.call(this);if(this._map){this._markerGroup=new L.LayerGroup;this._map.addLayer(this._markerGroup);this._markers=[];this._map.on("click",this._onClick,this);this._startShape()}},removeHooks:function(){L.Draw.Polyline.prototype.removeHooks.call(this);this._clearHideErrorTimeout();this._map.off("pointermove",this._onMouseMove,this).off("mousemove",this._onMouseMove,this).off("click",this._onClick,this);this._clearGuides();this._container.style.cursor="";this._removeShape()},_startShape:function(){this._drawing=true;this._poly=new L.Polyline([],this.options.shapeOptions);this._poly._onClick=function(){};this._container.style.cursor="crosshair";this._updateTooltip();this._map.on("pointermove",this._onMouseMove,this).on("mousemove",this._onMouseMove,this)},_finishShape:function(){this._drawing=false;this._cleanUpShape();this._clearGuides();this._updateTooltip();this._map.off("pointermove",this._onMouseMove,this).off("mousemove",this._onMouseMove,this);this._container.style.cursor=""},_removeShape:function(){if(!this._poly)return;this._map.removeLayer(this._poly);delete this._poly;this._markers.splice(0);this._markerGroup.clearLayers()},_onClick:function(){if(!this._drawing){this._removeShape();this._startShape();return}},_getTooltipText:function(){var labelText=L.Draw.Polyline.prototype._getTooltipText.call(this);if(!this._drawing){labelText.text=""}return labelText}});L.Control.MeasureControl=L.Control.extend({statics:{TITLE:"Measure distances"},options:{position:"topleft",handler:{}},toggle:function(){if(this.handler.enabled()){this.handler.disable.call(this.handler)}else{this.handler.enable.call(this.handler)}},onAdd:function(map){var link=null;var className="leaflet-control-draw";this._container=L.DomUtil.create("div","leaflet-bar");this.handler=new L.Polyline.Measure(map,this.options.handler);this.handler.on("enabled",function(){this.enabled=true;L.DomUtil.addClass(this._container,"enabled")},this);this.handler.on("disabled",function(){delete this.enabled;L.DomUtil.removeClass(this._container,"enabled")},this);link=L.DomUtil.create("a",className+"-measure",this._container);link.href="#";link.title=L.Control.MeasureControl.TITLE;L.DomEvent.addListener(link,"click",L.DomEvent.stopPropagation).addListener(link,"click",L.DomEvent.preventDefault).addListener(link,"click",this.toggle,this);return this._container}});L.Map.mergeOptions({measureControl:false});L.Map.addInitHook(function(){if(this.options.measureControl){this.measureControl=L.Control.measureControl().addTo(this)}});L.Control.measureControl=function(options){return new L.Control.MeasureControl(options)}},window); diff --git a/worldmap/worldmap.appcache b/worldmap/worldmap.appcache index e66c8a5..167cd44 100644 --- a/worldmap/worldmap.appcache +++ b/worldmap/worldmap.appcache @@ -1,5 +1,5 @@ CACHE MANIFEST -# date: Mar 2nd 2019 - v1.5.30 +# date: Mar 11th 2019 - v2.0.0b CACHE: index.html @@ -39,8 +39,6 @@ leaflet/leaflet.draw.css leaflet/leaflet.draw.js leaflet/leaflet.fullscreen.css leaflet/leaflet.js -leaflet/leaflet.label.css -leaflet/leaflet.label.js leaflet/leaflet.markercluster.js leaflet/leaflet.markercluster.freezable-src.js leaflet/leaflet.measurecontrol.css From 9eb5a7c48d38846728a679a49458a9c7ea49e6cf Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Mon, 11 Mar 2019 21:46:04 +0000 Subject: [PATCH 02/30] add draw update --- worldmap/index.html | 4 +--- worldmap/leaflet/leaflet.draw.css | 2 +- worldmap/leaflet/leaflet.draw.js | 2 +- worldmap/worldmap.appcache | 2 +- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/worldmap/index.html b/worldmap/index.html index 180cce0..9cacd75 100644 --- a/worldmap/index.html +++ b/worldmap/index.html @@ -1343,7 +1343,6 @@ function setMarker(data) { else if (typeof data.label === "string" && data.label.length > 0) { marker.bindTooltip(data.label, { permanent:true, direction:"right", offset:labelOffset }); } - console.log("M1",marker); delete marker.options.title; delete data.label; } @@ -1351,7 +1350,6 @@ function setMarker(data) { else if (data.tooltip) { if (typeof data.tooltip === "string" && data.tooltip.length > 0) { marker.bindTooltip(data.tooltip, { direction:"left", offset:[22,-16] }); - console.log("M2",marker); delete marker.options.title; delete data.tooltip; } @@ -1781,7 +1779,7 @@ function doCommand(cmd) { if (cmd.side && basemaps.hasOwnProperty(cmd.side)) { if (sidebyside) { sidebyside.remove(); map.removeLayer(basemaps[sidebyside.lay]); } basemaps[cmd.side].addTo(map); - sidebyside = L.Control.sideBySide(basemaps[baselayername], basemaps[cmd.side]); + sidebyside = L.control.sideBySide(basemaps[baselayername], basemaps[cmd.side]); sidebyside.addTo(map); sidebyside.lay = cmd.side; } diff --git a/worldmap/leaflet/leaflet.draw.css b/worldmap/leaflet/leaflet.draw.css index 7bc9978..03ccf33 100644 --- a/worldmap/leaflet/leaflet.draw.css +++ b/worldmap/leaflet/leaflet.draw.css @@ -300,4 +300,4 @@ .leaflet-oldie .leaflet-draw-toolbar { border: 1px solid #999; -} \ No newline at end of file +} diff --git a/worldmap/leaflet/leaflet.draw.js b/worldmap/leaflet/leaflet.draw.js index 954b0b0..ac062ad 100644 --- a/worldmap/leaflet/leaflet.draw.js +++ b/worldmap/leaflet/leaflet.draw.js @@ -7,4 +7,4 @@ https://github.com/jacobtoye */ !function(t,e){L.drawVersion="0.2.4-dev",L.drawLocal={draw:{toolbar:{actions:{title:"Cancel drawing",text:"Cancel"},undo:{title:"Delete last point drawn",text:"Delete last point"},buttons:{polyline:"Draw a polyline",polygon:"Draw a polygon",rectangle:"Draw a rectangle",circle:"Draw a circle",marker:"Draw a marker"}},handlers:{circle:{tooltip:{start:"Click and drag to draw circle."},radius:"Radius"},marker:{tooltip:{start:"Click map to place marker."}},polygon:{tooltip:{start:"Click to start drawing shape.",cont:"Click to continue drawing shape.",end:"Click first point to close this shape."}},polyline:{error:"Error: shape edges cannot cross!",tooltip:{start:"Click to start drawing line.",cont:"Click to continue drawing line.",end:"Click last point to finish line."}},rectangle:{tooltip:{start:"Click and drag to draw rectangle."}},simpleshape:{tooltip:{end:"Release mouse to finish drawing."}}}},edit:{toolbar:{actions:{save:{title:"Save changes.",text:"Save"},cancel:{title:"Cancel editing, discards all changes.",text:"Cancel"}},buttons:{edit:"Edit layers.",editDisabled:"No layers to edit.",remove:"Delete layers.",removeDisabled:"No layers to delete."}},handlers:{edit:{tooltip:{text:"Drag handles, or marker to edit feature.",subtext:"Click cancel to undo changes."}},remove:{tooltip:{text:"Click on a feature to remove"}}}}},L.Draw={},L.Draw.Feature=L.Handler.extend({includes:L.Mixin.Events,initialize:function(t,e){this._map=t,this._container=t._container,this._overlayPane=t._panes.overlayPane,this._popupPane=t._panes.popupPane,e&&e.shapeOptions&&(e.shapeOptions=L.Util.extend({},this.options.shapeOptions,e.shapeOptions)),L.setOptions(this,e)},enable:function(){this._enabled||(L.Handler.prototype.enable.call(this),this.fire("enabled",{handler:this.type}),this._map.fire("draw:drawstart",{layerType:this.type}))},disable:function(){this._enabled&&(L.Handler.prototype.disable.call(this),this._map.fire("draw:drawstop",{layerType:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(L.DomUtil.disableTextSelection(),t.getContainer().focus(),this._tooltip=new L.Tooltip(this._map),L.DomEvent.on(this._container,"keyup",this._cancelDrawing,this))},removeHooks:function(){this._map&&(L.DomUtil.enableTextSelection(),this._tooltip.dispose(),this._tooltip=null,L.DomEvent.off(this._container,"keyup",this._cancelDrawing,this))},setOptions:function(t){L.setOptions(this,t)},_fireCreatedEvent:function(t){this._map.fire("draw:created",{layer:t,layerType:this.type})},_cancelDrawing:function(t){27===t.keyCode&&this.disable()}}),L.Draw.Polyline=L.Draw.Feature.extend({statics:{TYPE:"polyline"},Poly:L.Polyline,options:{allowIntersection:!0,repeatMode:!1,drawError:{color:"#b00b00",timeout:2500},icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"}),guidelineDistance:20,maxGuideLineLength:4e3,shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!1,clickable:!0},metric:!0,showLength:!0,zIndexOffset:2e3},initialize:function(t,e){this.options.drawError.message=L.drawLocal.draw.handlers.polyline.error,e&&e.drawError&&(e.drawError=L.Util.extend({},this.options.drawError,e.drawError)),this.type=L.Draw.Polyline.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._markers=[],this._markerGroup=new L.LayerGroup,this._map.addLayer(this._markerGroup),this._poly=new L.Polyline([],this.options.shapeOptions),this._tooltip.updateContent(this._getTooltipText()),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("mousedown",this._onMouseDown,this).addTo(this._map),this._map.on("mousemove",this._onMouseMove,this).on("mouseup",this._onMouseUp,this).on("zoomend",this._onZoomEnd,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._clearHideErrorTimeout(),this._cleanUpShape(),this._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers,this._map.removeLayer(this._poly),delete this._poly,this._mouseMarker.off("mousedown",this._onMouseDown,this).off("mouseup",this._onMouseUp,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._clearGuides(),this._map.off("mousemove",this._onMouseMove,this).off("zoomend",this._onZoomEnd,this)},deleteLastVertex:function(){if(!(this._markers.length<=1)){var t=this._markers.pop(),e=this._poly,i=this._poly.spliceLatLngs(e.getLatLngs().length-1,1)[0];this._markerGroup.removeLayer(t),e.getLatLngs().length<2&&this._map.removeLayer(e),this._vertexChanged(i,!1)}},addVertex:function(t){var e=this._markers.length;return e>0&&!this.options.allowIntersection&&this._poly.newLatLngIntersects(t)?(this._showErrorTooltip(),void 0):(this._errorShown&&this._hideErrorTooltip(),this._markers.push(this._createMarker(t)),this._poly.addLatLng(t),2===this._poly.getLatLngs().length&&this._map.addLayer(this._poly),this._vertexChanged(t,!0),void 0)},_finishShape:function(){var t=this._poly.newLatLngIntersects(this._poly.getLatLngs()[0],!0);return!this.options.allowIntersection&&t||!this._shapeIsValid()?(this._showErrorTooltip(),void 0):(this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable(),void 0)},_shapeIsValid:function(){return!0},_onZoomEnd:function(){this._updateGuide()},_onMouseMove:function(t){var e=t.layerPoint,i=t.latlng;this._currentLatLng=i,this._updateTooltip(i),this._updateGuide(e),this._mouseMarker.setLatLng(i),L.DomEvent.preventDefault(t.originalEvent)},_vertexChanged:function(t,e){this._updateFinishHandler(),this._updateRunningMeasure(t,e),this._clearGuides(),this._updateTooltip()},_onMouseDown:function(t){var e=t.originalEvent;this._mouseDownOrigin=L.point(e.clientX,e.clientY)},_onMouseUp:function(e){if(this._mouseDownOrigin){var i=L.point(e.originalEvent.clientX,e.originalEvent.clientY).distanceTo(this._mouseDownOrigin);Math.abs(i)<9*(t.devicePixelRatio||1)&&this.addVertex(e.latlng)}this._mouseDownOrigin=null},_updateFinishHandler:function(){var t=this._markers.length;t>1&&this._markers[t-1].on("click",this._finishShape,this),t>2&&this._markers[t-2].off("click",this._finishShape,this)},_createMarker:function(t){var e=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset});return this._markerGroup.addLayer(e),e},_updateGuide:function(t){var e=this._markers.length;e>0&&(t=t||this._map.latLngToLayerPoint(this._currentLatLng),this._clearGuides(),this._drawGuide(this._map.latLngToLayerPoint(this._markers[e-1].getLatLng()),t))},_updateTooltip:function(t){var e=this._getTooltipText();t&&this._tooltip.updatePosition(t),this._errorShown||this._tooltip.updateContent(e)},_drawGuide:function(t,e){var i,o,a,s=Math.floor(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))),r=this.options.guidelineDistance,n=this.options.maxGuideLineLength,l=s>n?s-n:r;for(this._guidesContainer||(this._guidesContainer=L.DomUtil.create("div","leaflet-draw-guides",this._overlayPane));s>l;l+=this.options.guidelineDistance)i=l/s,o={x:Math.floor(t.x*(1-i)+i*e.x),y:Math.floor(t.y*(1-i)+i*e.y)},a=L.DomUtil.create("div","leaflet-draw-guide-dash",this._guidesContainer),a.style.backgroundColor=this._errorShown?this.options.drawError.color:this.options.shapeOptions.color,L.DomUtil.setPosition(a,o)},_updateGuideColor:function(t){if(this._guidesContainer)for(var e=0,i=this._guidesContainer.childNodes.length;i>e;e++)this._guidesContainer.childNodes[e].style.backgroundColor=t},_clearGuides:function(){if(this._guidesContainer)for(;this._guidesContainer.firstChild;)this._guidesContainer.removeChild(this._guidesContainer.firstChild)},_getTooltipText:function(){var t,e,i=this.options.showLength;return 0===this._markers.length?t={text:L.drawLocal.draw.handlers.polyline.tooltip.start}:(e=i?this._getMeasurementString():"",t=1===this._markers.length?{text:L.drawLocal.draw.handlers.polyline.tooltip.cont,subtext:e}:{text:L.drawLocal.draw.handlers.polyline.tooltip.end,subtext:e}),t},_updateRunningMeasure:function(t,e){var i,o,a=this._markers.length;1===this._markers.length?this._measurementRunningTotal=0:(i=a-(e?2:1),o=t.distanceTo(this._markers[i].getLatLng()),this._measurementRunningTotal+=o*(e?1:-1))},_getMeasurementString:function(){var t,e=this._currentLatLng,i=this._markers[this._markers.length-1].getLatLng();return t=this._measurementRunningTotal+e.distanceTo(i),L.GeometryUtil.readableDistance(t,this.options.metric)},_showErrorTooltip:function(){this._errorShown=!0,this._tooltip.showAsError().updateContent({text:this.options.drawError.message}),this._updateGuideColor(this.options.drawError.color),this._poly.setStyle({color:this.options.drawError.color}),this._clearHideErrorTimeout(),this._hideErrorTimeout=setTimeout(L.Util.bind(this._hideErrorTooltip,this),this.options.drawError.timeout)},_hideErrorTooltip:function(){this._errorShown=!1,this._clearHideErrorTimeout(),this._tooltip.removeError().updateContent(this._getTooltipText()),this._updateGuideColor(this.options.shapeOptions.color),this._poly.setStyle({color:this.options.shapeOptions.color})},_clearHideErrorTimeout:function(){this._hideErrorTimeout&&(clearTimeout(this._hideErrorTimeout),this._hideErrorTimeout=null)},_cleanUpShape:function(){this._markers.length>1&&this._markers[this._markers.length-1].off("click",this._finishShape,this)},_fireCreatedEvent:function(){var t=new this.Poly(this._poly.getLatLngs(),this.options.shapeOptions);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.Polygon=L.Draw.Polyline.extend({statics:{TYPE:"polygon"},Poly:L.Polygon,options:{showArea:!1,shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0}},initialize:function(t,e){L.Draw.Polyline.prototype.initialize.call(this,t,e),this.type=L.Draw.Polygon.TYPE},_updateFinishHandler:function(){var t=this._markers.length;1===t&&this._markers[0].on("click",this._finishShape,this),t>2&&(this._markers[t-1].on("dblclick",this._finishShape,this),t>3&&this._markers[t-2].off("dblclick",this._finishShape,this))},_getTooltipText:function(){var t,e;return 0===this._markers.length?t=L.drawLocal.draw.handlers.polygon.tooltip.start:this._markers.length<3?t=L.drawLocal.draw.handlers.polygon.tooltip.cont:(t=L.drawLocal.draw.handlers.polygon.tooltip.end,e=this._getMeasurementString()),{text:t,subtext:e}},_getMeasurementString:function(){var t=this._area;return t?L.GeometryUtil.readableArea(t,this.options.metric):null},_shapeIsValid:function(){return this._markers.length>=3},_vertexChanged:function(t,e){var i;!this.options.allowIntersection&&this.options.showArea&&(i=this._poly.getLatLngs(),this._area=L.GeometryUtil.geodesicArea(i)),L.Draw.Polyline.prototype._vertexChanged.call(this,t,e)},_cleanUpShape:function(){var t=this._markers.length;t>0&&(this._markers[0].off("click",this._finishShape,this),t>2&&this._markers[t-1].off("dblclick",this._finishShape,this))}}),L.SimpleShape={},L.Draw.SimpleShape=L.Draw.Feature.extend({options:{repeatMode:!1},initialize:function(t,e){this._endLabelText=L.drawLocal.draw.handlers.simpleshape.tooltip.end,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._mapDraggable=this._map.dragging.enabled(),this._mapDraggable&&this._map.dragging.disable(),this._container.style.cursor="crosshair",this._tooltip.updateContent({text:this._initialLabelText}),this._map.on("mousedown",this._onMouseDown,this).on("mousemove",this._onMouseMove,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._mapDraggable&&this._map.dragging.enable(),this._container.style.cursor="",this._map.off("mousedown",this._onMouseDown,this).off("mousemove",this._onMouseMove,this),L.DomEvent.off(e,"mouseup",this._onMouseUp,this),this._shape&&(this._map.removeLayer(this._shape),delete this._shape)),this._isDrawing=!1},_getTooltipText:function(){return{text:this._endLabelText}},_onMouseDown:function(t){this._isDrawing=!0,this._startLatLng=t.latlng,L.DomEvent.on(e,"mouseup",this._onMouseUp,this).preventDefault(t.originalEvent)},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._isDrawing&&(this._tooltip.updateContent(this._getTooltipText()),this._drawShape(e))},_onMouseUp:function(){this._shape&&this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()}}),L.Draw.Rectangle=L.Draw.SimpleShape.extend({statics:{TYPE:"rectangle"},options:{shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},metric:!0},initialize:function(t,e){this.type=L.Draw.Rectangle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.rectangle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){this._shape?this._shape.setBounds(new L.LatLngBounds(this._startLatLng,t)):(this._shape=new L.Rectangle(new L.LatLngBounds(this._startLatLng,t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Rectangle(this._shape.getBounds(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_getTooltipText:function(){var t,e,i,o=L.Draw.SimpleShape.prototype._getTooltipText.call(this),a=this._shape;return a&&(t=this._shape.getLatLngs(),e=L.GeometryUtil.geodesicArea(t),i=L.GeometryUtil.readableArea(e,this.options.metric)),{text:o.text,subtext:i}}}),L.Draw.Circle=L.Draw.SimpleShape.extend({statics:{TYPE:"circle"},options:{shapeOptions:{stroke:!0,color:"#f06eaa",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showRadius:!0,metric:!0},initialize:function(t,e){this.type=L.Draw.Circle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){this._shape?this._shape.setRadius(this._startLatLng.distanceTo(t)):(this._shape=new L.Circle(this._startLatLng,this._startLatLng.distanceTo(t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Circle(this._startLatLng,this._shape.getRadius(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_onMouseMove:function(t){var e,i=t.latlng,o=this.options.showRadius,a=this.options.metric;this._tooltip.updatePosition(i),this._isDrawing&&(this._drawShape(i),e=this._shape.getRadius().toFixed(1),this._tooltip.updateContent({text:this._endLabelText,subtext:o?L.drawLocal.draw.handlers.circle.radius+": "+L.GeometryUtil.readableDistance(e,a):""}))}}),L.Draw.Marker=L.Draw.Feature.extend({statics:{TYPE:"marker"},options:{icon:new L.Icon.Default,repeatMode:!1,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.Marker.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._tooltip.updateContent({text:L.drawLocal.draw.handlers.marker.tooltip.start}),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("click",this._onClick,this).addTo(this._map),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._marker&&(this._marker.off("click",this._onClick,this),this._map.off("click",this._onClick,this).removeLayer(this._marker),delete this._marker),this._mouseMarker.off("click",this._onClick,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._map.off("mousemove",this._onMouseMove,this))},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._mouseMarker.setLatLng(e),this._marker?(e=this._mouseMarker.getLatLng(),this._marker.setLatLng(e)):(this._marker=new L.Marker(e,{icon:this.options.icon,zIndexOffset:this.options.zIndexOffset}),this._marker.on("click",this._onClick,this),this._map.on("click",this._onClick,this).addLayer(this._marker))},_onClick:function(){this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_fireCreatedEvent:function(){var t=new L.Marker(this._marker.getLatLng(),{icon:this.options.icon});L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Edit=L.Edit||{},L.Edit.Marker=L.Handler.extend({initialize:function(t,e){this._marker=t,L.setOptions(this,e)},addHooks:function(){var t=this._marker;t.dragging.enable(),t.on("dragend",this._onDragEnd,t),this._toggleMarkerHighlight()},removeHooks:function(){var t=this._marker;t.dragging.disable(),t.off("dragend",this._onDragEnd,t),this._toggleMarkerHighlight()},_onDragEnd:function(t){var e=t.target;e.edited=!0},_toggleMarkerHighlight:function(){if(this._icon){var t=this._icon;t.style.display="none",L.DomUtil.hasClass(t,"leaflet-edit-marker-selected")?(L.DomUtil.removeClass(t,"leaflet-edit-marker-selected"),this._offsetMarker(t,-4)):(L.DomUtil.addClass(t,"leaflet-edit-marker-selected"),this._offsetMarker(t,4)),t.style.display=""}},_offsetMarker:function(t,e){var i=parseInt(t.style.marginTop,10)-e,o=parseInt(t.style.marginLeft,10)-e;t.style.marginTop=i+"px",t.style.marginLeft=o+"px"}}),L.Marker.addInitHook(function(){L.Edit.Marker&&(this.editing=new L.Edit.Marker(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.Poly=L.Handler.extend({options:{icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"})},initialize:function(t,e){this._poly=t,L.setOptions(this,e)},addHooks:function(){var t=this._poly;t instanceof L.Polygon||(t.options.editing.fill=!1),t.setStyle(t.options.editing),this._poly._map&&(this._markerGroup||this._initMarkers(),this._poly._map.addLayer(this._markerGroup))},removeHooks:function(){var t=this._poly;t.setStyle(t.options.original),t._map&&(t._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers)},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._markers=[];var t,e,i,o,a=this._poly._latlngs;for(t=0,i=a.length;i>t;t++)o=this._createMarker(a[t],t),o.on("click",this._onMarkerClick,this),this._markers.push(o);var s,r;for(t=0,e=i-1;i>t;e=t++)(0!==t||L.Polygon&&this._poly instanceof L.Polygon)&&(s=this._markers[e],r=this._markers[t],this._createMiddleMarker(s,r),this._updatePrevNext(s,r))},_createMarker:function(t,e){var i=new L.Marker(t,{draggable:!0,icon:this.options.icon});return i._origLatLng=t,i._index=e,i.on("drag",this._onMarkerDrag,this),i.on("dragend",this._fireEdit,this),this._markerGroup.addLayer(i),i},_removeMarker:function(t){var e=t._index;this._markerGroup.removeLayer(t),this._markers.splice(e,1),this._poly.spliceLatLngs(e,1),this._updateIndexes(e,-1),t.off("drag",this._onMarkerDrag,this).off("dragend",this._fireEdit,this).off("click",this._onMarkerClick,this)},_fireEdit:function(){this._poly.edited=!0,this._poly.fire("edit")},_onMarkerDrag:function(t){var e=t.target;L.extend(e._origLatLng,e._latlng),e._middleLeft&&e._middleLeft.setLatLng(this._getMiddleLatLng(e._prev,e)),e._middleRight&&e._middleRight.setLatLng(this._getMiddleLatLng(e,e._next)),this._poly.redraw()},_onMarkerClick:function(t){var e=L.Polygon&&this._poly instanceof L.Polygon?4:3,i=t.target;this._poly._latlngs.lengtht&&(i._index+=e)})},_createMiddleMarker:function(t,e){var i,o,a,s=this._getMiddleLatLng(t,e),r=this._createMarker(s);r.setOpacity(.6),t._middleRight=e._middleLeft=r,o=function(){var o=e._index;r._index=o,r.off("click",i,this).on("click",this._onMarkerClick,this),s.lat=r.getLatLng().lat,s.lng=r.getLatLng().lng,this._poly.spliceLatLngs(o,0,s),this._markers.splice(o,0,r),r.setOpacity(1),this._updateIndexes(o,1),e._index++,this._updatePrevNext(t,r),this._updatePrevNext(r,e),this._poly.fire("editstart")},a=function(){r.off("dragstart",o,this),r.off("dragend",a,this),this._createMiddleMarker(t,r),this._createMiddleMarker(r,e)},i=function(){o.call(this),a.call(this),this._fireEdit()},r.on("click",i,this).on("dragstart",o,this).on("dragend",a,this),this._markerGroup.addLayer(r)},_updatePrevNext:function(t,e){t&&(t._next=e),e&&(e._prev=t)},_getMiddleLatLng:function(t,e){var i=this._poly._map,o=i.project(t.getLatLng()),a=i.project(e.getLatLng());return i.unproject(o._add(a)._divideBy(2))}}),L.Polyline.addInitHook(function(){this.editing||(L.Edit.Poly&&(this.editing=new L.Edit.Poly(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()}))}),L.Edit=L.Edit||{},L.Edit.SimpleShape=L.Handler.extend({options:{moveIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-move"}),resizeIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize"})},initialize:function(t,e){this._shape=t,L.Util.setOptions(this,e)},addHooks:function(){var t=this._shape;t.setStyle(t.options.editing),t._map&&(this._map=t._map,this._markerGroup||this._initMarkers(),this._map.addLayer(this._markerGroup))},removeHooks:function(){var t=this._shape;if(t.setStyle(t.options.original),t._map){this._unbindMarker(this._moveMarker);for(var e=0,i=this._resizeMarkers.length;i>e;e++)this._unbindMarker(this._resizeMarkers[e]);this._resizeMarkers=null,this._map.removeLayer(this._markerGroup),delete this._markerGroup}this._map=null},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new L.LayerGroup),this._createMoveMarker(),this._createResizeMarker()},_createMoveMarker:function(){},_createResizeMarker:function(){},_createMarker:function(t,e){var i=new L.Marker(t,{draggable:!0,icon:e,zIndexOffset:10});return this._bindMarker(i),this._markerGroup.addLayer(i),i},_bindMarker:function(t){t.on("dragstart",this._onMarkerDragStart,this).on("drag",this._onMarkerDrag,this).on("dragend",this._onMarkerDragEnd,this)},_unbindMarker:function(t){t.off("dragstart",this._onMarkerDragStart,this).off("drag",this._onMarkerDrag,this).off("dragend",this._onMarkerDragEnd,this)},_onMarkerDragStart:function(t){var e=t.target;e.setOpacity(0),this._shape.fire("editstart")},_fireEdit:function(){this._shape.edited=!0,this._shape.fire("edit")},_onMarkerDrag:function(t){var e=t.target,i=e.getLatLng();e===this._moveMarker?this._move(i):this._resize(i),this._shape.redraw()},_onMarkerDragEnd:function(t){var e=t.target;e.setOpacity(1),this._fireEdit()},_move:function(){},_resize:function(){}}),L.Edit=L.Edit||{},L.Edit.Rectangle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getBounds(),e=t.getCenter();this._moveMarker=this._createMarker(e,this.options.moveIcon)},_createResizeMarker:function(){var t=this._getCorners();this._resizeMarkers=[];for(var e=0,i=t.length;i>e;e++)this._resizeMarkers.push(this._createMarker(t[e],this.options.resizeIcon)),this._resizeMarkers[e]._cornerIndex=e},_onMarkerDragStart:function(t){L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this,t);var e=this._getCorners(),i=t.target,o=i._cornerIndex;this._oppositeCorner=e[(o+2)%4],this._toggleCornerMarkers(0,o)},_onMarkerDragEnd:function(t){var e,i,o=t.target;o===this._moveMarker&&(e=this._shape.getBounds(),i=e.getCenter(),o.setLatLng(i)),this._toggleCornerMarkers(1),this._repositionCornerMarkers(),L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this,t)},_move:function(t){for(var e,i=this._shape.getLatLngs(),o=this._shape.getBounds(),a=o.getCenter(),s=[],r=0,n=i.length;n>r;r++)e=[i[r].lat-a.lat,i[r].lng-a.lng],s.push([t.lat+e[0],t.lng+e[1]]);this._shape.setLatLngs(s),this._repositionCornerMarkers()},_resize:function(t){var e;this._shape.setBounds(L.latLngBounds(t,this._oppositeCorner)),e=this._shape.getBounds(),this._moveMarker.setLatLng(e.getCenter())},_getCorners:function(){var t=this._shape.getBounds(),e=t.getNorthWest(),i=t.getNorthEast(),o=t.getSouthEast(),a=t.getSouthWest();return[e,i,o,a]},_toggleCornerMarkers:function(t){for(var e=0,i=this._resizeMarkers.length;i>e;e++)this._resizeMarkers[e].setOpacity(t)},_repositionCornerMarkers:function(){for(var t=this._getCorners(),e=0,i=this._resizeMarkers.length;i>e;e++)this._resizeMarkers[e].setLatLng(t[e])}}),L.Rectangle.addInitHook(function(){L.Edit.Rectangle&&(this.editing=new L.Edit.Rectangle(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.Circle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getLatLng();this._moveMarker=this._createMarker(t,this.options.moveIcon)},_createResizeMarker:function(){var t=this._shape.getLatLng(),e=this._getResizeMarkerPoint(t);this._resizeMarkers=[],this._resizeMarkers.push(this._createMarker(e,this.options.resizeIcon))},_getResizeMarkerPoint:function(t){var e=this._shape._radius*Math.cos(Math.PI/4),i=this._map.project(t);return this._map.unproject([i.x+e,i.y-e])},_move:function(t){var e=this._getResizeMarkerPoint(t);this._resizeMarkers[0].setLatLng(e),this._shape.setLatLng(t)},_resize:function(t){var e=this._moveMarker.getLatLng(),i=e.distanceTo(t);this._shape.setRadius(i)}}),L.Circle.addInitHook(function(){L.Edit.Circle&&(this.editing=new L.Edit.Circle(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()})}),L.LatLngUtil={cloneLatLngs:function(t){for(var e=[],i=0,o=t.length;o>i;i++)e.push(this.cloneLatLng(t[i]));return e},cloneLatLng:function(t){return L.latLng(t.lat,t.lng)}},L.GeometryUtil=L.extend(L.GeometryUtil||{},{geodesicArea:function(t){var e,i,o=t.length,a=0,s=L.LatLng.DEG_TO_RAD;if(o>2){for(var r=0;o>r;r++)e=t[r],i=t[(r+1)%o],a+=(i.lng-e.lng)*s*(2+Math.sin(e.lat*s)+Math.sin(i.lat*s));a=6378137*a*6378137/2}return Math.abs(a)},readableArea:function(t,e){var i;return e?i=t>=1e4?(1e-4*t).toFixed(2)+" ha":t.toFixed(2)+" m²":(t/=.836127,i=t>=3097600?(t/3097600).toFixed(2)+" mi²":t>=4840?(t/4840).toFixed(2)+" acres":Math.ceil(t)+" yd²"),i},readableDistance:function(t,e){var i;return e?i=t>1e3?(t/1e3).toFixed(2)+" km":Math.ceil(t)+" m":(t*=1.09361,i=t>1760?(t/1760).toFixed(2)+" miles":Math.ceil(t)+" yd"),i}}),L.Util.extend(L.LineUtil,{segmentsIntersect:function(t,e,i,o){return this._checkCounterclockwise(t,i,o)!==this._checkCounterclockwise(e,i,o)&&this._checkCounterclockwise(t,e,i)!==this._checkCounterclockwise(t,e,o)},_checkCounterclockwise:function(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}}),L.Polyline.include({intersects:function(){var t,e,i,o=this._originalPoints,a=o?o.length:0;if(this._tooFewPointsForIntersection())return!1;for(t=a-1;t>=3;t--)if(e=o[t-1],i=o[t],this._lineSegmentsIntersectsRange(e,i,t-2))return!0;return!1},newLatLngIntersects:function(t,e){return this._map?this.newPointIntersects(this._map.latLngToLayerPoint(t),e):!1},newPointIntersects:function(t,e){var i=this._originalPoints,o=i?i.length:0,a=i?i[o-1]:null,s=o-2;return this._tooFewPointsForIntersection(1)?!1:this._lineSegmentsIntersectsRange(a,t,s,e?1:0)},_tooFewPointsForIntersection:function(t){var e=this._originalPoints,i=e?e.length:0;return i+=t||0,!this._originalPoints||3>=i},_lineSegmentsIntersectsRange:function(t,e,i,o){var a,s,r=this._originalPoints;o=o||0;for(var n=i;n>o;n--)if(a=r[n-1],s=r[n],L.LineUtil.segmentsIntersect(t,e,a,s))return!0;return!1}}),L.Polygon.include({intersects:function(){var t,e,i,o,a,s=this._originalPoints;return this._tooFewPointsForIntersection()?!1:(t=L.Polyline.prototype.intersects.call(this))?!0:(e=s.length,i=s[0],o=s[e-1],a=e-2,this._lineSegmentsIntersectsRange(o,i,a,1))}}),L.Control.Draw=L.Control.extend({options:{position:"topleft",draw:{},edit:!1},initialize:function(t){if(L.version<"0.7")throw new Error("Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/");L.Control.prototype.initialize.call(this,t);var e;this._toolbars={},L.DrawToolbar&&this.options.draw&&(e=new L.DrawToolbar(this.options.draw),this._toolbars[L.DrawToolbar.TYPE]=e,this._toolbars[L.DrawToolbar.TYPE].on("enable",this._toolbarEnabled,this)),L.EditToolbar&&this.options.edit&&(e=new L.EditToolbar(this.options.edit),this._toolbars[L.EditToolbar.TYPE]=e,this._toolbars[L.EditToolbar.TYPE].on("enable",this._toolbarEnabled,this))},onAdd:function(t){var e,i=L.DomUtil.create("div","leaflet-draw"),o=!1,a="leaflet-draw-toolbar-top";for(var s in this._toolbars)this._toolbars.hasOwnProperty(s)&&(e=this._toolbars[s].addToolbar(t),e&&(o||(L.DomUtil.hasClass(e,a)||L.DomUtil.addClass(e.childNodes[0],a),o=!0),i.appendChild(e)));return i},onRemove:function(){for(var t in this._toolbars)this._toolbars.hasOwnProperty(t)&&this._toolbars[t].removeToolbar()},setDrawingOptions:function(t){for(var e in this._toolbars)this._toolbars[e]instanceof L.DrawToolbar&&this._toolbars[e].setOptions(t)},_toolbarEnabled:function(t){var e=t.target;for(var i in this._toolbars)this._toolbars[i]!==e&&this._toolbars[i].disable()}}),L.Map.mergeOptions({drawControlTooltips:!0,drawControl:!1}),L.Map.addInitHook(function(){this.options.drawControl&&(this.drawControl=new L.Control.Draw,this.addControl(this.drawControl))}),L.Toolbar=L.Class.extend({includes:[L.Mixin.Events],initialize:function(t){L.setOptions(this,t),this._modes={},this._actionButtons=[],this._activeMode=null},enabled:function(){return null!==this._activeMode},disable:function(){this.enabled()&&this._activeMode.handler.disable()},addToolbar:function(t){var e,i=L.DomUtil.create("div","leaflet-draw-section"),o=0,a=this._toolbarClass||"",s=this.getModeHandlers(t);for(this._toolbarContainer=L.DomUtil.create("div","leaflet-draw-toolbar leaflet-bar"),this._map=t,e=0;ee;e++)this._disposeButton(this._actionButtons[e].button,this._actionButtons[e].callback,this);this._actionButtons=[],this._actionsContainer=null},_initModeHandler:function(t,e,i,o,a){var s=t.type;this._modes[s]={},this._modes[s].handler=t,this._modes[s].button=this._createButton({title:a,className:o+"-"+s,container:e,callback:this._modes[s].handler.enable,context:this._modes[s].handler}),this._modes[s].buttonIndex=i,this._modes[s].handler.on("enabled",this._handlerActivated,this).on("disabled",this._handlerDeactivated,this)},_createButton:function(t){var e=L.DomUtil.create("a",t.className||"",t.container);return e.href="#",t.text&&(e.innerHTML=t.text),t.title&&(e.title=t.title),L.DomEvent.on(e,"click",L.DomEvent.stopPropagation).on(e,"mousedown",L.DomEvent.stopPropagation).on(e,"dblclick",L.DomEvent.stopPropagation).on(e,"click",L.DomEvent.preventDefault).on(e,"click",t.callback,t.context),e -},_disposeButton:function(t,e){L.DomEvent.off(t,"click",L.DomEvent.stopPropagation).off(t,"mousedown",L.DomEvent.stopPropagation).off(t,"dblclick",L.DomEvent.stopPropagation).off(t,"click",L.DomEvent.preventDefault).off(t,"click",e)},_handlerActivated:function(t){this.disable(),this._activeMode=this._modes[t.handler],L.DomUtil.addClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._showActionsToolbar(),this.fire("enable")},_handlerDeactivated:function(){this._hideActionsToolbar(),L.DomUtil.removeClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._activeMode=null,this.fire("disable")},_createActions:function(t){var e,i,o,a,s=this._actionsContainer,r=this.getActions(t),n=r.length;for(i=0,o=this._actionButtons.length;o>i;i++)this._disposeButton(this._actionButtons[i].button,this._actionButtons[i].callback);for(this._actionButtons=[];s.firstChild;)s.removeChild(s.firstChild);for(var l=0;n>l;l++)"enabled"in r[l]&&!r[l].enabled||(e=L.DomUtil.create("li","",s),a=this._createButton({title:r[l].title,text:r[l].text,container:e,callback:r[l].callback,context:r[l].context}),this._actionButtons.push({button:a,callback:r[l].callback}))},_showActionsToolbar:function(){var t=this._activeMode.buttonIndex,e=this._lastButtonIndex,i=this._activeMode.button.offsetTop-1;this._createActions(this._activeMode.handler),this._actionsContainer.style.top=i+"px",0===t&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-top")),t===e&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-bottom")),this._actionsContainer.style.display="block"},_hideActionsToolbar:function(){this._actionsContainer.style.display="none",L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-top"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-bottom")}}),L.Tooltip=L.Class.extend({initialize:function(t){this._map=t,this._popupPane=t._panes.popupPane,this._container=t.options.drawControlTooltips?L.DomUtil.create("div","leaflet-draw-tooltip",this._popupPane):null,this._singleLineLabel=!1},dispose:function(){this._container&&(this._popupPane.removeChild(this._container),this._container=null)},updateContent:function(t){return this._container?(t.subtext=t.subtext||"",0!==t.subtext.length||this._singleLineLabel?t.subtext.length>0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?''+t.subtext+"
":"")+""+t.text+"",this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(i.style.visibility="inherit",L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,"leaflet-error-draw-tooltip"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,"leaflet-error-draw-tooltip"),this}}),L.DrawToolbar=L.Toolbar.extend({statics:{TYPE:"draw"},options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass="leaflet-draw-draw",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker}]},getActions:function(t){return[{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({statics:{TYPE:"edit"},options:{edit:{selectedPathOptions:{color:"#fe57a1",opacity:.6,dashArray:"10, 10",fill:!0,fillColor:"#fe57a1",fillOpacity:.1,maintainColor:!1}},remove:{},featureGroup:null},initialize:function(t){t.edit&&("undefined"==typeof t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit.selectedPathOptions=L.extend({},this.options.edit.selectedPathOptions,t.edit.selectedPathOptions)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),this._toolbarClass="leaflet-draw-edit",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(){return[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this}]},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on("layeradd layerremove",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off("layeradd layerremove",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:"edit"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.setOptions(this,e),this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire("draw:editstart",{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on("layeradd",this._enableLayerEdit,this).on("layerremove",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off("layeradd",this._enableLayerEdit,this).off("layerremove",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire("draw:editstop",{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire("draw:edited",{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:t instanceof L.Marker&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):t instanceof L.Marker&&t.setLatLng(this._uneditedLayerProps[e].latlng),t.fire("revert-edited",{layer:t}))},_enableLayerEdit:function(t){var e,i=t.layer||t.target||t;this._backupLayer(i),this.options.selectedPathOptions&&(e=L.Util.extend({},this.options.selectedPathOptions),e.maintainColor&&(e.color=i.options.color,e.fillColor=i.options.fillColor),i.options.original=L.extend({},i.options),i.options.editing=e),i.editing.enable()},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,e.editing.disable(),delete e.options.editing,delete e.options.original},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:"remove"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this.type=L.EditToolbar.Delete.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire("draw:deletestart",{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on("layeradd",this._enableLayerDelete,this).on("layerremove",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off("layeradd",this._enableLayerDelete,this).off("layerremove",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire("draw:deletestop",{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire("revert-deleted",{layer:t})},this)},save:function(){this._map.fire("draw:deleted",{layers:this._deletedLayers})},_enableLayerDelete:function(t){var e=t.layer||t.target||t;e.on("click",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off("click",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire("deleted")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document); \ No newline at end of file +},_disposeButton:function(t,e){L.DomEvent.off(t,"click",L.DomEvent.stopPropagation).off(t,"mousedown",L.DomEvent.stopPropagation).off(t,"dblclick",L.DomEvent.stopPropagation).off(t,"click",L.DomEvent.preventDefault).off(t,"click",e)},_handlerActivated:function(t){this.disable(),this._activeMode=this._modes[t.handler],L.DomUtil.addClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._showActionsToolbar(),this.fire("enable")},_handlerDeactivated:function(){this._hideActionsToolbar(),L.DomUtil.removeClass(this._activeMode.button,"leaflet-draw-toolbar-button-enabled"),this._activeMode=null,this.fire("disable")},_createActions:function(t){var e,i,o,a,s=this._actionsContainer,r=this.getActions(t),n=r.length;for(i=0,o=this._actionButtons.length;o>i;i++)this._disposeButton(this._actionButtons[i].button,this._actionButtons[i].callback);for(this._actionButtons=[];s.firstChild;)s.removeChild(s.firstChild);for(var l=0;n>l;l++)"enabled"in r[l]&&!r[l].enabled||(e=L.DomUtil.create("li","",s),a=this._createButton({title:r[l].title,text:r[l].text,container:e,callback:r[l].callback,context:r[l].context}),this._actionButtons.push({button:a,callback:r[l].callback}))},_showActionsToolbar:function(){var t=this._activeMode.buttonIndex,e=this._lastButtonIndex,i=this._activeMode.button.offsetTop-1;this._createActions(this._activeMode.handler),this._actionsContainer.style.top=i+"px",0===t&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-top")),t===e&&(L.DomUtil.addClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.addClass(this._actionsContainer,"leaflet-draw-actions-bottom")),this._actionsContainer.style.display="block"},_hideActionsToolbar:function(){this._actionsContainer.style.display="none",L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-notop"),L.DomUtil.removeClass(this._toolbarContainer,"leaflet-draw-toolbar-nobottom"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-top"),L.DomUtil.removeClass(this._actionsContainer,"leaflet-draw-actions-bottom")}}),L.Tooltip=L.Class.extend({initialize:function(t){this._map=t,this._popupPane=t._panes.popupPane,this._container=t.options.drawControlTooltips?L.DomUtil.create("div","leaflet-draw-tooltip",this._popupPane):null,this._singleLineLabel=!1},dispose:function(){this._container&&(this._popupPane.removeChild(this._container),this._container=null)},updateContent:function(t){return this._container?(t.subtext=t.subtext||"",0!==t.subtext.length||this._singleLineLabel?t.subtext.length>0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?''+t.subtext+"
":"")+""+t.text+"",this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(i.style.visibility="inherit",L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,"leaflet-error-draw-tooltip"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,"leaflet-error-draw-tooltip"),this}}),L.DrawToolbar=L.Toolbar.extend({statics:{TYPE:"draw"},options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass="leaflet-draw-draw",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker}]},getActions:function(t){return[{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({statics:{TYPE:"edit"},options:{edit:{selectedPathOptions:{color:"#fe57a1",opacity:.6,dashArray:"10, 10",fill:!0,fillColor:"#fe57a1",fillOpacity:.1,maintainColor:!1}},remove:{},featureGroup:null},initialize:function(t){t.edit&&("undefined"==typeof t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit.selectedPathOptions=L.extend({},this.options.edit.selectedPathOptions,t.edit.selectedPathOptions)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),this._toolbarClass="leaflet-draw-edit",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(){return[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this}]},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on("layeradd layerremove",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off("layeradd layerremove",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:"edit"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.setOptions(this,e),this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire("draw:editstart",{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on("layeradd",this._enableLayerEdit,this).on("layerremove",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off("layeradd",this._enableLayerEdit,this).off("layerremove",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire("draw:editstop",{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire("draw:edited",{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:t instanceof L.Marker&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):t instanceof L.Marker&&t.setLatLng(this._uneditedLayerProps[e].latlng),t.fire("revert-edited",{layer:t}))},_enableLayerEdit:function(t){var e,i=t.layer||t.target||t;this._backupLayer(i),this.options.selectedPathOptions&&(e=L.Util.extend({},this.options.selectedPathOptions),e.maintainColor&&(e.color=i.options.color,e.fillColor=i.options.fillColor),i.options.original=L.extend({},i.options),i.options.editing=e),i.editing.enable()},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,e.editing.disable(),delete e.options.editing,delete e.options.original},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:"remove"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this.type=L.EditToolbar.Delete.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire("draw:deletestart",{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on("layeradd",this._enableLayerDelete,this).on("layerremove",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off("layeradd",this._enableLayerDelete,this).off("layerremove",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire("draw:deletestop",{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire("revert-deleted",{layer:t})},this)},save:function(){this._map.fire("draw:deleted",{layers:this._deletedLayers})},_enableLayerDelete:function(t){var e=t.layer||t.target||t;e.on("click",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off("click",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire("deleted")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document); diff --git a/worldmap/worldmap.appcache b/worldmap/worldmap.appcache index 167cd44..e1fd0e0 100644 --- a/worldmap/worldmap.appcache +++ b/worldmap/worldmap.appcache @@ -1,5 +1,5 @@ CACHE MANIFEST -# date: Mar 11th 2019 - v2.0.0b +# date: Mar 11th 2019 - v2.0.0d CACHE: index.html From 9b2f89c33a6ce06953971092da996a53ac0f4008 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Mon, 11 Mar 2019 21:51:40 +0000 Subject: [PATCH 03/30] fix split code to add setsplit again --- worldmap/leaflet/leaflet-side-by-side.js | 276 ++++++++++++++++++++++- worldmap/worldmap.appcache | 2 +- 2 files changed, 276 insertions(+), 2 deletions(-) diff --git a/worldmap/leaflet/leaflet-side-by-side.js b/worldmap/leaflet/leaflet-side-by-side.js index ec8b4b8..7299847 100644 --- a/worldmap/leaflet/leaflet-side-by-side.js +++ b/worldmap/leaflet/leaflet-side-by-side.js @@ -1 +1,275 @@ -!function a(s,o,d){function l(r,e){if(!o[r]){if(!s[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(h)return h(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var i=o[r]={exports:{}};s[r][0].call(i.exports,function(e){return l(s[r][1][e]||e)},i,i.exports,a,s,o,d)}return o[r].exports}for(var h="function"==typeof require&&require,e=0;e Date: Mon, 11 Mar 2019 22:12:52 +0000 Subject: [PATCH 04/30] tidy up --- worldmap/leaflet/leaflet-slider.css | 230 ---------------------------- worldmap/leaflet/leaflet-slider.js | 150 ------------------ worldmap/worldmap.appcache | 2 - 3 files changed, 382 deletions(-) delete mode 100644 worldmap/leaflet/leaflet-slider.css delete mode 100644 worldmap/leaflet/leaflet-slider.js diff --git a/worldmap/leaflet/leaflet-slider.css b/worldmap/leaflet/leaflet-slider.css deleted file mode 100644 index ccfceb8..0000000 --- a/worldmap/leaflet/leaflet-slider.css +++ /dev/null @@ -1,230 +0,0 @@ -.leaflet-control-slider { - box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.4); - background: none repeat scroll 0% 0% #FFF; - border-radius: 5px; -} -a.leaflet-control-slider-toggle { - width: 36px; - height: 36px; - background-position: 50% 50%; - background-repeat: no-repeat; - display: block; - line-height: 36px !important; - font-weight: bolder; - text-align: center; - text-decoration: none; - color:#000; - font-size:1.3em; -} - -.leaflet-control-slider p.leaflet-control-slider-value { - line-height: 26px; - display: block; - text-align: center; - text-decoration: none; - color: #000; - font-weight: bold; - font-size: 1.1em; - display:none; -} -.leaflet-control-slider.leaflet-control-slider-horizontal p.leaflet-control-slider-value { - line-height: 36px; - height: 36px; - margin: 0px 0px 0px 0px; - border-right: 1px solid #CCC; - width: 35px; - float :left; - clear:none; -} -.leaflet-control-slider.leaflet-control-slider-vertical p.leaflet-control-slider-value { - height: 25px; - line-height: 26px; - margin: 0px 0px 5px 0px; - border-bottom: 1px solid #CCC; - width: 36px; -} -.leaflet-control-slider input.leaflet-slider { - margin:0px; -} -.leaflet-control-slider input.leaflet-slider , .leaflet-control-slider .leaflet-slider-container { - display:none; - padding: 0px; -} - -.leaflet-control-slider.leaflet-control-slider-horizontal .leaflet-slider-container { - float :right; - clear:none; - width: 90%; - height:36px; -} -.leaflet-control-slider.leaflet-control-slider-horizontal input.leaflet-slider { - height:36px; -} - -.leaflet-control-slider.leaflet-control-slider-vertical input.leaflet-slider{ - writing-mode: bt-lr; - width: 36px; - height:100%; -} - -.leaflet-control-slider.leaflet-control-slider-expanded p.leaflet-control-slider-value { - display:block; -} -.leaflet-control-slider.leaflet-control-slider-expanded a.leaflet-control-slider-toggle { - display:none; -} -.leaflet-control-slider.leaflet-control-slider-expanded input.leaflet-slider, .leaflet-control-slider.leaflet-control-slider-expanded .leaflet-slider-container{ - display:inherit; -} -.leaflet-control-slider.leaflet-control-slider-vertical .leaflet-slider-container { - width:36px; - -webkit-transform:rotate(180deg); -} - -.leaflet-control-slider.leaflet-control-slider-vertical .leaflet-slider-container { - margin: 10px 0px; -} - -.leaflet-control-slider.leaflet-control-slider-horizontal .leaflet-slider-container { - margin: 0px 10px; -} - -.leaflet-control-slider.leaflet-control-slider-vertical.leaflet-control-slider-incdec .leaflet-slider-container { - margin: 0px 0px; -} - - - -.leaflet-control-slider input[type=range] { - -webkit-appearance: none; - width: 100%; -} -.leaflet-control-slider input[type=range]:focus { - outline: none; -} -.leaflet-control-slider input[type=range]::-webkit-slider-runnable-track { - width: 100%; - height: 5px; - cursor: pointer; - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); - background: #dddddd; - border-radius: 25px; - border: 0px solid rgba(0, 0, 0, 0); -} -.leaflet-control-slider input[type=range]::-webkit-slider-thumb { - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); - border: 0px solid rgba(0, 0, 0, 0); - height: 16px; - width: 16px; - border-radius: 8px; - background: #a4a4a4; - cursor: pointer; - -webkit-appearance: none; - margin-top: -5.5px; -} -.leaflet-control-slider input[type=range]:focus::-webkit-slider-runnable-track { - background: #eaeaea; -} -.leaflet-control-slider input[type=range]::-moz-range-track { - width: 100%; - height: 5px; - cursor: pointer; - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); - background: #dddddd; - border-radius: 25px; - border: 0px solid rgba(0, 0, 0, 0); -} -.leaflet-control-slider input[type=range]::-moz-range-thumb { - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); - border: 0px solid rgba(0, 0, 0, 0); - height: 16px; - width: 16px; - border-radius: 8px; - background: #a4a4a4; - cursor: pointer; -} -.leaflet-control-slider input[type=range]::-ms-track { - width: 100%; - height: 5px; - cursor: pointer; - background: transparent; - border-color: transparent; - color: transparent; -} -.leaflet-control-slider input[type=range]::-ms-fill-lower { - background: #d0d0d0; - border: 0px solid rgba(0, 0, 0, 0); - border-radius: 50px; - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); -} -.leaflet-control-slider input[type=range]::-ms-fill-upper { - background: #dddddd; - border: 0px solid rgba(0, 0, 0, 0); - border-radius: 50px; - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); -} -.leaflet-control-slider input[type=range]::-ms-thumb { - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0), 0px 0px 0px rgba(13, 13, 13, 0); - border: 0px solid rgba(0, 0, 0, 0); - height: 16px; - width: 16px; - border-radius: 8px; - background: #a4a4a4; - cursor: pointer; - height: 5px; -} -.leaflet-control-slider input[type=range]:focus::-ms-fill-lower { - background: #dddddd; -} -.leaflet-control-slider input[type=range]:focus::-ms-fill-upper { - background: #eaeaea; -} - -.leaflet-control-slider.leaflet-control-slider-vertical input[type=range]::-moz-range-track { - height: 100%; - width: 5px; -} - -/*increment/decrement*/ - - -.leaflet-control-slider-plus, .leaflet-control-slider-minus{ - width: 36px; - height: 36px; - background-position: 50% 50%; - background-repeat: no-repeat; - display: block; - line-height: 32px !important; - font-weight: bolder; - text-align: center; - vertical-align: middle; - text-decoration: none; - color:#000; - font-size:1.3em; - display:none; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.leaflet-control-slider.leaflet-control-slider-expanded .leaflet-control-slider-plus, .leaflet-control-slider.leaflet-control-slider-expanded .leaflet-control-slider-minus{ - display: block; -} -.leaflet-control-slider.leaflet-control-slider-horizontal .leaflet-control-slider-plus, .leaflet-control-slider.leaflet-control-slider-horizontal .leaflet-control-slider-minus{ - float:right; -} - -.leaflet-control-slider input[type=range]::-moz-focus-outer { - border: 0; -} - -@media screen and (-webkit-min-device-pixel-ratio:0) { - /* webkit specific CSS */ - .leaflet-control-slider.leaflet-control-slider-vertical input[type=range] { - -webkit-transform-origin: 18px 18px; - -webkit-transform:rotate(90deg); - height:36px; - } -} diff --git a/worldmap/leaflet/leaflet-slider.js b/worldmap/leaflet/leaflet-slider.js deleted file mode 100644 index 1d40f74..0000000 --- a/worldmap/leaflet/leaflet-slider.js +++ /dev/null @@ -1,150 +0,0 @@ -L.Control.Slider = L.Control.extend({ - update: function(value) { - return value; - }, - - options: { - size: '100px', - position: 'topright', - min: 0, - max: 250, - step: 1, - id: "slider", - value: 50, - collapsed: true, - title: 'Leaflet Slider', - logo: 'S', - orientation: 'horizontal', - increment: false, - getValue: function(value) { - return value; - }, - showValue: true, - syncSlider: false - }, - initialize: function (f, options) { - L.setOptions(this, options); - if (typeof f == "function") { - this.update = f; - } else { - this.update = function (value) { - console.log(value); - }; - } - if (typeof this.options.getValue != "function") { - this.options.getValue = function (value) { - return value; - }; - } - if (this.options.orientation!='vertical') { - this.options.orientation = 'horizontal'; - } - }, - onAdd: function (map) { - this._initLayout(); - this.update(this.options.value+""); - return this._container; - }, - _updateValue: function () { - this.value = this.slider.value; - if (this.options.showValue) { - this._sliderValue.innerHTML = this.options.getValue(this.value); - } - this.update(this.value); - }, - _initLayout: function () { - var className = 'leaflet-control-slider'; - this._container = L.DomUtil.create('div', className + ' ' +className + '-' + this.options.orientation); - this._sliderLink = L.DomUtil.create('a', className + '-toggle', this._container); - this._sliderLink.setAttribute("title", this.options.title); - this._sliderLink.innerHTML = this.options.logo; - - if (this.options.showValue) { - this._sliderValue = L.DomUtil.create('p', className+'-value', this._container); - this._sliderValue.innerHTML = this.options.getValue(this.options.value); - } - - if (this.options.increment) { - this._plus = L.DomUtil.create('a', className + '-plus', this._container); - this._plus.innerHTML = "+"; - L.DomEvent.on(this._plus, 'click', this._increment, this); - L.DomUtil.addClass(this._container, 'leaflet-control-slider-incdec'); - } - - this._sliderContainer = L.DomUtil.create('div', 'leaflet-slider-container', this._container); - this.slider = L.DomUtil.create('input', 'leaflet-slider', this._sliderContainer); - if (this.options.orientation == 'vertical') {this.slider.setAttribute("orient", "vertical");} - this.slider.setAttribute("title", this.options.title); - this.slider.setAttribute("id", this.options.id); - this.slider.setAttribute("type", "range"); - this.slider.setAttribute("min", this.options.min); - this.slider.setAttribute("max", this.options.max); - this.slider.setAttribute("step", this.options.step); - this.slider.setAttribute("value", this.options.value); - if (this.options.syncSlider) { - L.DomEvent.on(this.slider, "input", function (e) { - this._updateValue(); - }, this); - } else { - L.DomEvent.on(this.slider, "change", function (e) { - this._updateValue(); - }, this); - } - - if (this.options.increment) { - this._minus = L.DomUtil.create('a', className + '-minus', this._container); - this._minus.innerHTML = "-"; - L.DomEvent.on(this._minus, 'click', this._decrement, this); - } - - if (this.options.showValue) { - if (window.matchMedia("screen and (-webkit-min-device-pixel-ratio:0)").matches && this.options.orientation =='vertical') {this.slider.style.width = (this.options.size.replace('px','') -36) +'px'; this._sliderContainer.style.height = (this.options.size.replace('px','') -36) +'px';} - else if (this.options.orientation =='vertical') {this._sliderContainer.style.height = (this.options.size.replace('px','') -36) +'px';} - else {this._sliderContainer.style.width = (this.options.size.replace('px','') -56) +'px';} - } else { - if (window.matchMedia("screen and (-webkit-min-device-pixel-ratio:0)").matches && this.options.orientation =='vertical') {this.slider.style.width = (this.options.size.replace('px','') -10) +'px'; this._sliderContainer.style.height = (this.options.size.replace('px','') -10) +'px';} - else if (this.options.orientation =='vertical') {this._sliderContainer.style.height = (this.options.size.replace('px','') -10) +'px';} - else {this._sliderContainer.style.width = (this.options.size.replace('px','') -25) +'px';} - } - - L.DomEvent.disableClickPropagation(this._container); - - if (this.options.collapsed) { - if (!L.Browser.android) { - L.DomEvent - .on(this._container, 'mouseenter', this._expand, this) - .on(this._container, 'mouseleave', this._collapse, this); - } - - if (L.Browser.touch) { - L.DomEvent - .on(this._sliderLink, 'click', L.DomEvent.stop) - .on(this._sliderLink, 'click', this._expand, this); - } else { - L.DomEvent.on(this._sliderLink, 'focus', this._expand, this); - } - } else { - this._expand(); - } - }, - _expand: function () { - L.DomUtil.addClass(this._container, 'leaflet-control-slider-expanded'); - }, - _collapse: function () { - L.DomUtil.removeClass(this._container, 'leaflet-control-slider-expanded'); - }, - _increment: function () { - console.log(this.slider.value-this.slider.step + " " + this.slider.value+this.slider.step); - this.slider.value = this.slider.value*1+this.slider.step*1; - this._updateValue(); - }, - _decrement: function () { - console.log(this.slider.value-this.slider.step + " " + this.slider.value+this.slider.step); - this.slider.value = this.slider.value*1-this.slider.step*1; - this._updateValue(); - } -}); - -L.control.slider = function (f, options) { - return new L.Control.Slider(f, options); -}; diff --git a/worldmap/worldmap.appcache b/worldmap/worldmap.appcache index 7b9fdc0..14cb911 100644 --- a/worldmap/worldmap.appcache +++ b/worldmap/worldmap.appcache @@ -28,8 +28,6 @@ leaflet/l.ellipse.min.js leaflet/leaflet-heat.js leaflet/leaflet-omnivore.min.js leaflet/leaflet-side-by-side.js -leaflet/leaflet-slider.css -leaflet/leaflet-slider.js leaflet/leaflet-velocity.min.css leaflet/leaflet-velocity.min.js leaflet/leaflet.active-layers.min.js From 809edd3d5044bb2145ba5383252986e43f31b234 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Mon, 11 Mar 2019 22:26:46 +0000 Subject: [PATCH 05/30] revert boatmarker to better previous version --- worldmap/leaflet/leaflet.boatmarker.js | 92 +++++++++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/worldmap/leaflet/leaflet.boatmarker.js b/worldmap/leaflet/leaflet.boatmarker.js index 6186add..29338d7 100644 --- a/worldmap/leaflet/leaflet.boatmarker.js +++ b/worldmap/leaflet/leaflet.boatmarker.js @@ -1 +1,91 @@ -L.BoatIcon=L.Icon.extend({options:{iconSize:new L.Point(150,150),className:"leaflet-boat-icon",course:0,speed:0,color:"#8ED6FF",labelAnchor:[23,0],wind:!1,windDirection:0,windSpeed:0,idleCircle:!1},x:66,y:85,x_fac:.18,y_fac:.18,ctx:null,lastHeading:0,lastWindDirection:0,createIcon:function(){var a=document.createElement("canvas");this._setIconStyles(a,"icon");var b=this.options.iconSize;return a.width=b.x,a.height=b.y,this.lastHeading=0,this.ctx=a.getContext("2d"),this.draw(this.ctx,b.x,b.y),a},draw:function(a,b,c){if(a){var d=this.x,e=this.y,f=this.x_fac,g=this.y_fac;if(a.clearRect(0,0,b,c),a.translate(b/2,c/2),a.rotate(this.options.course*Math.PI/180),a.translate(-b/2,-c/2),a.beginPath(),this.options.idleCircle===!0&&0===this.options.speed?a.arc(d+50*f,e-50*g,50*f,0,2*Math.PI):(a.moveTo(d,e),a.bezierCurveTo(d,e+80*g,d+100*f,e+80*g,d+100*f,e),a.quadraticCurveTo(d+100*f,e-100*g,d+50*f,e-200*g),a.quadraticCurveTo(d,e-100*g,d,e)),a.fillStyle=this.options.color,a.fill(),a.stroke(),a.closePath(),1==this.options.wind){a.translate(b/2,c/2),a.rotate(this.options.windDirection*Math.PI/180),a.translate(-b/2,-c/2),a.beginPath(),a.moveTo(b/2,e-45),a.lineTo(b/2,e-70);for(var h=b/2,i=5*Math.round(this.options.windSpeed/5),j=Math.floor(i/10),k=i%10>0,l=70,m=0;m Date: Thu, 14 Mar 2019 21:46:46 +0000 Subject: [PATCH 06/30] popup improvements --- worldmap/css/map.css | 4 ++ worldmap/index.html | 97 ++++++++++++++++++++---------------- worldmap/leaflet/leaflet.css | 9 +++- worldmap/worldmap.appcache | 2 +- 4 files changed, 66 insertions(+), 46 deletions(-) diff --git a/worldmap/css/map.css b/worldmap/css/map.css index 87f0742..1557592 100644 --- a/worldmap/css/map.css +++ b/worldmap/css/map.css @@ -25,6 +25,10 @@ a { vertical-align:middle; } +.leaflet-tooltip { + padding: 1px 4px !important; +} + #topbar { color:#c7c7c7; background-color:black; diff --git a/worldmap/index.html b/worldmap/index.html index 9cacd75..942d391 100644 --- a/worldmap/index.html +++ b/worldmap/index.html @@ -512,12 +512,18 @@ document.getElementById("menu").style.display = 'none'; //} //document.getElementById("heat").style.display = 'none'; -var popped = false; -var popmark = null; +// var popped = false; +// var popmark = null; +// map.on('popupopen', function(e) { +// popped = true; +// popmark = e.popup._source; +// popid = e.popup.dname; +// }); map.on('popupopen', function(e) { - popped = true; - popmark = e.popup._source; - popid = e.popup.dname; + console.log("OPEN",e); +}); +map.on('popupclose', function(e) { + console.log("CLOSE",e); }); map.on('overlayadd', function(e) { @@ -615,7 +621,7 @@ var hiderightclick = false; var addThing = function() { var thing = document.getElementById('rinput').value; map.closePopup(); - popped = false; + //popped = false; var bits = thing.split(","); var icon = (bits[1] || "circle").trim(); var lay = (bits[2] || "_drawing").trim(); @@ -1059,7 +1065,7 @@ function setMarker(data) { // Create the icons... handle plane, car, ship, wind, earthquake as specials var marker, myMarker; var icon, q; - var labelOffset = [20,-8]; + var labelOffset = [12,0]; var drag = false; if (data.draggable === true) { drag = true; } //console.log("ICON",data.icon); @@ -1190,7 +1196,7 @@ function setMarker(data) { html:'', }); marker = L.marker(ll, {title:data.name, icon:myMarker, draggable:drag}); - labelOffset = [20,-12]; + labelOffset = [12,-4]; } else if (data.icon === "friend") { marker = L.marker(ll, { icon: L.divIcon({ className: 'circle f', iconSize: [20, 12] }), title: data.name, draggable:drag }); @@ -1234,7 +1240,7 @@ function setMarker(data) { iconSize: [32, 32] }); marker = L.marker(ll, {title:data.name, icon:myMarker, draggable:drag}); - labelOffset = [20,-12]; + labelOffset = [12,-4]; } else if (data.icon && (data.icon.match(/^https?:.*$/))) { myMarker = L.icon({ @@ -1244,7 +1250,7 @@ function setMarker(data) { popupAnchor: [0, -16] }); marker = L.marker(ll, {title:data.name, icon:myMarker, draggable:drag}); - labelOffset = [20,-12]; + labelOffset = [12,-4]; } else if (data.icon && (data.icon.substr(0,3) === "fa-")) { var col = data.iconColor || "#910000"; @@ -1257,7 +1263,7 @@ function setMarker(data) { popupAnchor: [0, -16] }); marker = L.marker(ll, {title:data.name, icon:myMarker, draggable:drag}); - labelOffset = [16,-16]; + labelOffset = [8,-8]; } else { myMarker = L.VectorMarkers.icon({ @@ -1267,7 +1273,7 @@ function setMarker(data) { iconColor: 'white' }); marker = L.marker(ll, {title:data.name, icon:myMarker, draggable:drag}); - labelOffset = [14,-16]; + labelOffset = [6,-6]; } marker.name = data.name; @@ -1322,19 +1328,6 @@ function setMarker(data) { } delete data.weblink; } - if (data.hasOwnProperty("popped") && (data.popped === true)) { - popped = true; - popid = data.name; - delete data.popped; - } - if (data.hasOwnProperty("popped") && (data.popped === false)) { - if (popid == data.name) { - if (popmark) { popmark.closePopup(); } - popped = false; - } - delete data.popped; - } - // If .label then use that rather than name tooltip if (data.label) { if (typeof data.label === "boolean" && data.label === true) { @@ -1349,11 +1342,23 @@ function setMarker(data) { // otherwise check for .tooltip then use that rather than name tooltip else if (data.tooltip) { if (typeof data.tooltip === "string" && data.tooltip.length > 0) { - marker.bindTooltip(data.tooltip, { direction:"left", offset:[22,-16] }); + marker.bindTooltip(data.tooltip, { direction:"bottom", offset:[0,4] }); delete marker.options.title; delete data.tooltip; } } + // customise right click context menu + var rightcontext = ""; + if (data.contextmenu && (typeof data.contextmenu === "string")) { + rightcontext = data.contextmenu.replace(/$name/g,'\""+'+data.name+'+"\"'); + console.log("RC",rightcontext); + delete data.contextmenu; + } + var openpop; + if (data.hasOwnProperty("popped") && (typeof data.popped === "boolean")) { + openpop = data.popped; + delete data.popped; + } // Add any remaining properties to the info box var llc = data.lineColor; @@ -1373,12 +1378,12 @@ function setMarker(data) { } if (data.popup) { words = data.popup; } else { words = words + marker.getLatLng().toString().replace('LatLng(','lat, lon : ').replace(')',''); } - words = ""+data.name+"
" + words; - marker.bindPopup(words, {closeButton:false, closeOnClick:false, keepInView:true, minWidth:250}); + words = ""+data.name+"
" + words; //"
" + words; + marker.bindPopup(words, {autoClose:false, closeButton:true, closeOnClick:false, keepInView:true, minWidth:200}); marker._popup.dname = data.name; marker.lay = lay; // and the layer it is on - var rightmenuMarker = L.popup({offset:[0,-12]}).setContent(""+data.name+"
"); + var rightmenuMarker = L.popup({offset:[0,-12]}).setContent(""+data.name+"
"+rightcontext); marker.on('contextmenu', function(e) { if (hiderightclick !== true) { rightmenuMarker.setLatLng(e.latlng); @@ -1392,6 +1397,7 @@ function setMarker(data) { if (heatAll || map.hasLayer(layers[lay])) { heat.addLatLng(lli); } } markers[data.name] = marker; + console.log("LAY",lay,layers); layers[lay].addLayer(marker); } if ((data.hdg != null) && (data.bearing == null)) { data.bearing = data.hdg; delete data.hdg; } @@ -1432,22 +1438,25 @@ function setMarker(data) { } } if (panit) { - if (popped === true) { - map.setView(ll,map.getZoom()); - } - else { map.setView(ll,map.getZoom()); } - } - if (popped === true) { - if (popid == data.name) { - if (popmark) { - popmark.closePopup(); - setTimeout(function() { marker.openPopup(); },100); - } - marker.openPopup(); - } - else { popmark.openPopup(); } - popped = true; + map.setView(ll,map.getZoom()); + // if (popped === true) { + // map.setView(ll,map.getZoom()); + // } + // else { map.setView(ll,map.getZoom()); } } + if (openpop === true) { marker.opemPopup(); } + if (openpop === false) { marker.closePopup(); } + // if (popped === true) { + // if (popid == data.name) { + // if (popmark) { + // popmark.closePopup(); + // setTimeout(function() { marker.openPopup(); },100); + // } + // marker.openPopup(); + // } + // else { popmark.openPopup(); } + // popped = true; + // } } } diff --git a/worldmap/leaflet/leaflet.css b/worldmap/leaflet/leaflet.css index a0932d5..58e0c5c 100644 --- a/worldmap/leaflet/leaflet.css +++ b/worldmap/leaflet/leaflet.css @@ -553,7 +553,14 @@ .leaflet-div-icon { background: #fff; border: 1px solid #666; - } +} + +.leaflet-popup-content-wrapper { + border-radius: 6px !important; +} +.leaflet-popup-content { + margin: 6px 8px !important; +} /* Tooltip */ diff --git a/worldmap/worldmap.appcache b/worldmap/worldmap.appcache index 14cb911..de75009 100644 --- a/worldmap/worldmap.appcache +++ b/worldmap/worldmap.appcache @@ -1,5 +1,5 @@ CACHE MANIFEST -# date: Mar 11th 2019 - v2.0.0e +# date: Mar 11th 2019 - v2.0.0d CACHE: index.html From a270e53f18b5da7ab60df2988ff82ccaa622c0b2 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Fri, 15 Mar 2019 16:41:26 +0000 Subject: [PATCH 07/30] keep in sync with master --- worldmap/index.html | 117 +++++++++++++++++++++++--------------------- 1 file changed, 60 insertions(+), 57 deletions(-) diff --git a/worldmap/index.html b/worldmap/index.html index 942d391..1ca881b 100644 --- a/worldmap/index.html +++ b/worldmap/index.html @@ -131,7 +131,6 @@ var clusterAt = 13; var maxage = 600; // default max age of icons on map in seconds - cleared after 10 mins var baselayername = "OSM grey"; // Default base layer OSM but uniform grey var ibmfoot = " © IBM 2015,2019" -var initialposition = false; var inIframe = false; var showUserMenu = true; var showLayerMenu = true; @@ -219,21 +218,22 @@ document.addEventListener ("keydown", function (ev) { } }); -if ( window.localStorage.hasOwnProperty("lastpos") ) { - initialposition = true; - var sp = JSON.parse(window.localStorage.getItem("lastpos")); - startpos = [ sp.lat, sp.lng ]; -} -if ( window.localStorage.hasOwnProperty("lastzoom") ) { - startzoom = window.localStorage.getItem("lastzoom"); -} -// if ( window.localStorage.hasOwnProperty("clusterat") ) { -// clusterAt = window.localStorage.getItem("clusterat"); -// document.getElementById("setclus").value = clusterAt; -// } -if ( window.localStorage.hasOwnProperty("maxage") ) { - maxage = window.localStorage.getItem("maxage"); - document.getElementById("maxage").value = maxage; +if (showUserMenu) { + if ( window.localStorage.hasOwnProperty("lastpos") ) { + var sp = JSON.parse(window.localStorage.getItem("lastpos")); + startpos = [ sp.lat, sp.lng ]; + } + if ( window.localStorage.hasOwnProperty("lastzoom") ) { + startzoom = window.localStorage.getItem("lastzoom"); + } + // if ( window.localStorage.hasOwnProperty("clusterat") ) { + // clusterAt = window.localStorage.getItem("clusterat"); + // document.getElementById("setclus").value = clusterAt; + // } + if ( window.localStorage.hasOwnProperty("maxage") ) { + maxage = window.localStorage.getItem("maxage"); + document.getElementById("maxage").value = maxage; + } } // Create the Initial Map object. @@ -264,7 +264,7 @@ if (window.self !== window.top) { (document.getElementById("menu").style.borderRadius="6px"); } else { - console.log("NOT in an iframe") + console.log("NOT in an iframe"); // window.onbeforeunload = function(e) { // return 'Reloading will delete all the local markers, including any drawing on the "drawing" layer'; // }; @@ -276,12 +276,10 @@ else { if (!inIframe) { // Add the fullscreen button L.control.fullscreen().addTo(map); - // map.on('fullscreenchange', function () { // if (map.isFullscreen()) { console.log('entered fullscreen') } // else { console.log('exited fullscreen'); } // }); - // Add the locate my position button L.easyButton( 'fa-crosshairs fa-lg', function() { map.locate({setView:true, maxZoom:16}); @@ -877,9 +875,11 @@ overlays["ship nav"] = L.tileLayer('https://tiles.openseamap.org/seamark/{z}/{x} attribution: 'Map data: © OpenSeaMap contributors' }); -if ( window.localStorage.hasOwnProperty("lastlayer") ) { - if ( basemaps[window.localStorage.getItem("lastlayer")] ) { - baselayername = window.localStorage.getItem("lastlayer"); +if (showUserMenu) { + if ( window.localStorage.hasOwnProperty("lastlayer") ) { + if ( basemaps[window.localStorage.getItem("lastlayer")] ) { + baselayername = window.localStorage.getItem("lastlayer"); + } } } basemaps[baselayername].addTo(map); @@ -1463,10 +1463,6 @@ function setMarker(data) { // handle any incoming COMMANDS to control the map remotely function doCommand(cmd) { //console.log("COMMAND",cmd); - // ignore server side initial command if client position already saved. - // if (cmd.hasOwnProperty("init") && initialposition) { - // return; - // } if (cmd.hasOwnProperty("clear")) { doTidyUp(cmd.clear); } @@ -1475,39 +1471,27 @@ function doCommand(cmd) { else { panit = false; } document.getElementById("panit").checked = panit; } - if (cmd.hasOwnProperty("panlock")) { - if (cmd.panlock == "true" || cmd.panlock == true) { lockit = false; } - else { lockit = true; } - doLock(); - document.getElementById("lockit").checked = !lockit; - } if (cmd.hasOwnProperty("hiderightclick")) { if (cmd.hiderightclick == "true" || cmd.hiderightclick == true) { hiderightclick = true; } else { hiderightclick = false; } } - if (cmd.hasOwnProperty("zoomlock")) { - if (cmd.zoomlock == "true" || cmd.zoomlock == true) { - if (map.doubleClickZoom.enabled()) { map.removeControl(map.zoomControl); } - map.doubleClickZoom.disable(); - map.scrollWheelZoom.disable(); - } - else { - if (!map.doubleClickZoom.enabled()) { map.addControl(map.zoomControl); } - map.doubleClickZoom.enable(); - map.scrollWheelZoom.enable(); - } - } if (cmd.hasOwnProperty("showmenu")) { if ((cmd.showmenu === "hide") && (showUserMenu === true)) { showUserMenu = false; - if (menuButton) { - try { map.removeControl(menuButton); } - catch(e) {} + if (inIframe) { + if (menuButton) { + try { map.removeControl(menuButton); } + catch(e) {} + } } + else { document.getElementById("bars").style.display="none"; } } else if ((cmd.showmenu === "show") && (showUserMenu === false)) { showUserMenu = true; - map.addControl(menuButton); + if (inIframe) { + map.addControl(menuButton); + } + else { document.getElementById("bars").style.display="unset"; } } } if (cmd.hasOwnProperty("showlayers")) { @@ -1536,20 +1520,18 @@ function doCommand(cmd) { } } if (cmd.hasOwnProperty("coords")) { - if (cmd.coords === "dms" && showMouseCoords === false) { + try { coords.removeFrom(map); } + catch(e) {} + if (cmd.coords == "dms") { coords.options.useDMS = true; - showMouseCoords = true; + showMouseCoords = "dms"; coords.addTo(map); } - if (cmd.coords === "deg" && showMouseCoords === false) { + if (cmd.coords == "deg") { coords.options.useDMS = false; - showMouseCoords = true; + showMouseCoords = "deg"; coords.addTo(map); } - if (cmd.coords === "none" && showMouseCoords === true) { - showMouseCoords = false - coords.removeFrom(map); - } } var existsalready = false; @@ -1811,12 +1793,21 @@ function doCommand(cmd) { } } } + + if (cmd.hasOwnProperty("panlock")) { + if (cmd.panlock == "true" || cmd.panlock == true) { lockit = false; } + else { lockit = true; doLock(); } + document.getElementById("lockit").checked = !lockit; + } + // move to a new position var clat = map.getCenter().lat; var clon = map.getCenter().lng; var czoom = map.getZoom(); if (cmd.hasOwnProperty("lat")) { clat = cmd.lat; } if (cmd.hasOwnProperty("lon")) { clon = cmd.lon; } if (cmd.hasOwnProperty("zoom")) { czoom = cmd.zoom; } + map.setView([clat,clon],czoom); + if (cmd.hasOwnProperty("cluster")) { clusterAt = cmd.cluster; document.getElementById("setclus").value = cmd.cluster; @@ -1831,7 +1822,19 @@ function doCommand(cmd) { document.getElementById("heatall").checked = !!cmd.heatmap; heat.redraw(); } - map.setView([clat,clon],czoom); + if (cmd.hasOwnProperty("panlock") && lockit === false) { doLock(); } + if (cmd.hasOwnProperty("zoomlock")) { + if (cmd.zoomlock == "true" || cmd.zoomlock == true) { + if (map.doubleClickZoom.enabled()) { map.removeControl(map.zoomControl); } + map.doubleClickZoom.disable(); + map.scrollWheelZoom.disable(); + } + else { + if (!map.doubleClickZoom.enabled()) { map.addControl(map.zoomControl); } + map.doubleClickZoom.enable(); + map.scrollWheelZoom.enable(); + } + } } // handle any incoming GEOJSON directly - may style badly From ca7b0165d5536ca4d51b187ff19a0bfee2da420a Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Fri, 15 Mar 2019 17:27:40 +0000 Subject: [PATCH 08/30] close ws on close --- worldmap/index.html | 4 ++-- worldmap/worldmap.appcache | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/worldmap/index.html b/worldmap/index.html index 1ca881b..4eb3010 100644 --- a/worldmap/index.html +++ b/worldmap/index.html @@ -67,7 +67,7 @@ - +
Node-RED - map all the things @@ -1444,7 +1444,7 @@ function setMarker(data) { // } // else { map.setView(ll,map.getZoom()); } } - if (openpop === true) { marker.opemPopup(); } + if (openpop === true) { marker.openPopup(); } if (openpop === false) { marker.closePopup(); } // if (popped === true) { // if (popid == data.name) { diff --git a/worldmap/worldmap.appcache b/worldmap/worldmap.appcache index de75009..71f1847 100644 --- a/worldmap/worldmap.appcache +++ b/worldmap/worldmap.appcache @@ -1,5 +1,5 @@ CACHE MANIFEST -# date: Mar 11th 2019 - v2.0.0d +# date: Mar 11th 2019 - v2.0.0h CACHE: index.html From 9a2e0b130ecabd59b6328c3257b7c9c70c5411e3 Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Sat, 16 Mar 2019 18:21:22 +0000 Subject: [PATCH 09/30] update dialog, draw, and sock.js libs --- worldmap/leaflet/dialog-polyfill.css | 21 +- worldmap/leaflet/dialog-polyfill.js | 466 +++++++++++++++------ worldmap/leaflet/images/marker-icon-2x.png | Bin 2464 -> 2586 bytes worldmap/leaflet/images/spritesheet-2x.png | Bin 2078 -> 3581 bytes worldmap/leaflet/images/spritesheet.png | Bin 1056 -> 1906 bytes worldmap/leaflet/images/spritesheet.svg | 156 +++++++ worldmap/leaflet/leaflet.draw.css | 313 +------------- worldmap/leaflet/leaflet.draw.js | 16 +- worldmap/leaflet/sockjs.min.js | 5 +- 9 files changed, 523 insertions(+), 454 deletions(-) create mode 100644 worldmap/leaflet/images/spritesheet.svg diff --git a/worldmap/leaflet/dialog-polyfill.css b/worldmap/leaflet/dialog-polyfill.css index 1adc607..60589b5 100644 --- a/worldmap/leaflet/dialog-polyfill.css +++ b/worldmap/leaflet/dialog-polyfill.css @@ -12,11 +12,11 @@ dialog { padding: 1em; background: white; color: black; - display: none; + display: block; } -dialog[open] { - display: block; +dialog:not([open]) { + display: none; } dialog + .backdrop { @@ -25,16 +25,13 @@ dialog + .backdrop { background: rgba(0,0,0,0.1); } -/* for small devices, modal dialogs go full-screen */ -@media screen and (max-width: 540px) { - dialog[_polyfill_modal] { /* TODO: implement */ - top: 0; - width: auto; - margin: 1em; - } -} - ._dialog_overlay { position: fixed; top: 0; right: 0; bottom: 0; left: 0; } + +dialog.fixed { + position: fixed; + top: 50%; + transform: translate(0, -50%); +} diff --git a/worldmap/leaflet/dialog-polyfill.js b/worldmap/leaflet/dialog-polyfill.js index dc415f0..1b6fd6f 100644 --- a/worldmap/leaflet/dialog-polyfill.js +++ b/worldmap/leaflet/dialog-polyfill.js @@ -1,7 +1,12 @@ -(function() { +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = global || self, global.dialogPolyfill = factory()); +}(this, function () { 'use strict'; + // nb. This is for IE10 and lower _only_. var supportCustomEvent = window.CustomEvent; - if (!supportCustomEvent || typeof supportCustomEvent == 'object') { + if (!supportCustomEvent || typeof supportCustomEvent === 'object') { supportCustomEvent = function CustomEvent(event, x) { x = x || {}; var ev = document.createEvent('CustomEvent'); @@ -11,6 +16,33 @@ supportCustomEvent.prototype = window.Event.prototype; } + /** + * @param {Element} el to check for stacking context + * @return {boolean} whether this el or its parents creates a stacking context + */ + function createsStackingContext(el) { + while (el && el !== document.body) { + var s = window.getComputedStyle(el); + var invalid = function(k, ok) { + return !(s[k] === undefined || s[k] === ok); + }; + + if (s.opacity < 1 || + invalid('zIndex', 'auto') || + invalid('transform', 'none') || + invalid('mixBlendMode', 'normal') || + invalid('filter', 'none') || + invalid('perspective', 'none') || + s['isolation'] === 'isolate' || + s.position === 'fixed' || + s.webkitOverflowScrolling === 'touch') { + return true; + } + el = el.parentElement; + } + return false; + } + /** * Finds the nearest from the passed element. * @@ -19,7 +51,7 @@ */ function findNearestDialog(el) { while (el) { - if (el.nodeName.toUpperCase() == 'DIALOG') { + if (el.localName === 'dialog') { return /** @type {HTMLDialogElement} */ (el); } el = el.parentElement; @@ -35,7 +67,7 @@ * @param {Element} el to blur */ function safeBlur(el) { - if (el && el.blur && el != document.body) { + if (el && el.blur && el !== document.body) { el.blur(); } } @@ -47,13 +79,24 @@ */ function inNodeList(nodeList, node) { for (var i = 0; i < nodeList.length; ++i) { - if (nodeList[i] == node) { + if (nodeList[i] === node) { return true; } } return false; } + /** + * @param {HTMLFormElement} el to check + * @return {boolean} whether this form has method="dialog" + */ + function isFormMethodDialog(el) { + if (!el || !el.hasAttribute('method')) { + return false; + } + return el.getAttribute('method').toLowerCase() === 'dialog'; + } + /** * @param {!HTMLDialogElement} dialog to upgrade * @constructor @@ -76,13 +119,29 @@ dialog.returnValue = ''; } - this.maybeHideModal = this.maybeHideModal.bind(this); if ('MutationObserver' in window) { - // IE11+, most other browsers. - var mo = new MutationObserver(this.maybeHideModal); - mo.observe(dialog, { attributes: true, attributeFilter: ['open'] }); + var mo = new MutationObserver(this.maybeHideModal.bind(this)); + mo.observe(dialog, {attributes: true, attributeFilter: ['open']}); } else { - dialog.addEventListener('DOMAttrModified', this.maybeHideModal); + // IE10 and below support. Note that DOMNodeRemoved etc fire _before_ removal. They also + // seem to fire even if the element was removed as part of a parent removal. Use the removed + // events to force downgrade (useful if removed/immediately added). + var removed = false; + var cb = function() { + removed ? this.downgradeModal() : this.maybeHideModal(); + removed = false; + }.bind(this); + var timeout; + var delayModel = function(ev) { + if (ev.target !== dialog) { return; } // not for a child element + var cand = 'DOMNodeRemoved'; + removed |= (ev.type.substr(0, cand.length) === cand); + window.clearTimeout(timeout); + timeout = window.setTimeout(cb, 0); + }; + ['DOMAttrModified', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument'].forEach(function(name) { + dialog.addEventListener(name, delayModel); + }); } // Note that the DOM is observed inside DialogManager while any dialog // is being displayed as a modal, to catch modal removal from the DOM. @@ -94,7 +153,7 @@ this.backdrop_ = document.createElement('div'); this.backdrop_.className = 'backdrop'; - this.backdropClick_ = this.backdropClick_.bind(this); + this.backdrop_.addEventListener('click', this.backdropClick_.bind(this)); } dialogPolyfillInfo.prototype = { @@ -109,26 +168,28 @@ * longer open or is no longer part of the DOM. */ maybeHideModal: function() { - if (!this.openAsModal_) { return; } - if (this.dialog_.hasAttribute('open') && - document.body.contains(this.dialog_)) { return; } + if (this.dialog_.hasAttribute('open') && document.body.contains(this.dialog_)) { return; } + this.downgradeModal(); + }, + /** + * Remove this dialog from the modal top layer, leaving it as a non-modal. + */ + downgradeModal: function() { + if (!this.openAsModal_) { return; } this.openAsModal_ = false; this.dialog_.style.zIndex = ''; - // This won't match the native exactly because if the user set - // top on a centered polyfill dialog, that top gets thrown away when the - // dialog is closed. Not sure it's possible to polyfill this perfectly. + // This won't match the native exactly because if the user set top on a centered + // polyfill dialog, that top gets thrown away when the dialog is closed. Not sure it's + // possible to polyfill this perfectly. if (this.replacedStyleTop_) { this.dialog_.style.top = ''; this.replacedStyleTop_ = false; } - // Optimistically clear the modal part of this . - this.backdrop_.removeEventListener('click', this.backdropClick_); - if (this.backdrop_.parentElement) { - this.backdrop_.parentElement.removeChild(this.backdrop_); - } + // Clear the backdrop and remove from the manager. + this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_); dialogPolyfill.dm.removeDialog(this); }, @@ -151,6 +212,19 @@ * @param {!Event} e to redirect */ backdropClick_: function(e) { + if (!this.dialog_.hasAttribute('tabindex')) { + // Clicking on the backdrop should move the implicit cursor, even if dialog cannot be + // focused. Create a fake thing to focus on. If the backdrop was _before_ the dialog, this + // would not be needed - clicks would move the implicit cursor there. + var fake = document.createElement('div'); + this.dialog_.insertBefore(fake, this.dialog_.firstChild); + fake.tabIndex = -1; + fake.focus(); + this.dialog_.removeChild(fake); + } else { + this.dialog_.focus(); + } + var redirectedEvent = document.createEvent('MouseEvents'); redirectedEvent.initMouseEvent(e.type, e.bubbles, e.cancelable, window, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, @@ -166,6 +240,9 @@ focus_: function() { // Find element with `autofocus` attribute, or fall back to the first form/tabindex control. var target = this.dialog_.querySelector('[autofocus]:not([disabled])'); + if (!target && this.dialog_.tabIndex >= 0) { + target = this.dialog_; + } if (!target) { // Note that this is 'any focusable area'. This list is probably not exhaustive, but the // alternative involves stepping through and trying to focus everything. @@ -184,12 +261,15 @@ /** * Sets the zIndex for the backdrop and dialog. * - * @param {number} backdropZ * @param {number} dialogZ + * @param {number} backdropZ */ - updateZIndex: function(backdropZ, dialogZ) { - this.backdrop_.style.zIndex = backdropZ; + updateZIndex: function(dialogZ, backdropZ) { + if (dialogZ < backdropZ) { + throw new Error('dialogZ should never be < backdropZ'); + } this.dialog_.style.zIndex = dialogZ; + this.backdrop_.style.zIndex = backdropZ; }, /** @@ -215,7 +295,14 @@ if (!dialogPolyfill.dm.pushDialog(this)) { throw new Error('Failed to execute \'showModal\' on dialog: There are too many open modal dialogs.'); } - this.show(); + + if (createsStackingContext(this.dialog_.parentElement)) { + console.warn('A dialog is being shown inside a stacking context. ' + + 'This may cause it to be unusable. For more information, see this link: ' + + 'https://github.com/GoogleChrome/dialog-polyfill/#stacking-context'); + } + + this.setOpen(true); this.openAsModal_ = true; // Optionally center vertically, relative to the current viewport. @@ -227,9 +314,10 @@ } // Insert backdrop. - this.backdrop_.addEventListener('click', this.backdropClick_); - this.dialog_.parentNode.insertBefore(this.backdrop_, - this.dialog_.nextSibling); + this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling); + + // Focus on whatever inside the dialog. + this.focus_(); }, /** @@ -275,8 +363,7 @@ try { cssRules = styleSheet.cssRules; } catch (e) {} - if (!cssRules) - continue; + if (!cssRules) { continue; } for (var j = 0; j < cssRules.length; ++j) { var rule = cssRules[j]; var selectedNodes = null; @@ -284,12 +371,14 @@ try { selectedNodes = document.querySelectorAll(rule.selectorText); } catch(e) {} - if (!selectedNodes || !inNodeList(selectedNodes, element)) + if (!selectedNodes || !inNodeList(selectedNodes, element)) { continue; + } var cssTop = rule.style.getPropertyValue('top'); var cssBottom = rule.style.getPropertyValue('bottom'); - if ((cssTop && cssTop != 'auto') || (cssBottom && cssBottom != 'auto')) + if ((cssTop && cssTop !== 'auto') || (cssBottom && cssBottom !== 'auto')) { return true; + } } } return false; @@ -297,7 +386,7 @@ dialogPolyfill.needsCentering = function(dialog) { var computedStyle = window.getComputedStyle(dialog); - if (computedStyle.position != 'absolute') { + if (computedStyle.position !== 'absolute') { return false; } @@ -305,9 +394,10 @@ // WebKit/Blink, checking computedStyle.top == 'auto' is sufficient, but // Firefox returns the used value. So we do this crazy thing instead: check // the inline style and then go through CSS rules. - if ((dialog.style.top != 'auto' && dialog.style.top != '') || - (dialog.style.bottom != 'auto' && dialog.style.bottom != '')) + if ((dialog.style.top !== 'auto' && dialog.style.top !== '') || + (dialog.style.bottom !== 'auto' && dialog.style.bottom !== '')) { return false; + } return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog); }; @@ -315,23 +405,21 @@ * @param {!Element} element to force upgrade */ dialogPolyfill.forceRegisterDialog = function(element) { - if (element.showModal) { + if (window.HTMLDialogElement || element.showModal) { console.warn('This browser already supports , the polyfill ' + 'may not work correctly', element); } - if (element.nodeName.toUpperCase() != 'DIALOG') { + if (element.localName !== 'dialog') { throw new Error('Failed to register dialog: The element is not a dialog.'); } new dialogPolyfillInfo(/** @type {!HTMLDialogElement} */ (element)); }; /** - * @param {!Element} element to upgrade + * @param {!Element} element to upgrade, if necessary */ dialogPolyfill.registerDialog = function(element) { - if (element.showModal) { - console.warn('Can\'t upgrade : already supported', element); - } else { + if (!element.showModal) { dialogPolyfill.forceRegisterDialog(element); } }; @@ -343,6 +431,8 @@ /** @type {!Array} */ this.pendingDialogStack = []; + var checkDOM = this.checkDOM_.bind(this); + // The overlay is used to simulate how a modal dialog blocks the document. // The blocking dialog is positioned on top of the overlay, and the rest of // the dialogs on the pending dialog stack are positioned below it. In the @@ -351,26 +441,35 @@ this.overlay = document.createElement('div'); this.overlay.className = '_dialog_overlay'; this.overlay.addEventListener('click', function(e) { + this.forwardTab_ = undefined; e.stopPropagation(); - }); + checkDOM([]); // sanity-check DOM + }.bind(this)); this.handleKey_ = this.handleKey_.bind(this); this.handleFocus_ = this.handleFocus_.bind(this); - this.handleRemove_ = this.handleRemove_.bind(this); this.zIndexLow_ = 100000; this.zIndexHigh_ = 100000 + 150; - }; - /** - * @return {Element} the top HTML dialog element, if any - */ - dialogPolyfill.DialogManager.prototype.topDialogElement = function() { - if (this.pendingDialogStack.length) { - var t = this.pendingDialogStack[this.pendingDialogStack.length - 1]; - return t.dialog; + this.forwardTab_ = undefined; + + if ('MutationObserver' in window) { + this.mo_ = new MutationObserver(function(records) { + var removed = []; + records.forEach(function(rec) { + for (var i = 0, c; c = rec.removedNodes[i]; ++i) { + if (!(c instanceof Element)) { + continue; + } else if (c.localName === 'dialog') { + removed.push(c); + } + removed = removed.concat(c.querySelectorAll('dialog')); + } + }); + removed.length && checkDOM(removed); + }); } - return null; }; /** @@ -378,10 +477,9 @@ * handlers. */ dialogPolyfill.DialogManager.prototype.blockDocument = function() { - document.body.appendChild(this.overlay); - document.body.addEventListener('focus', this.handleFocus_, true); + document.documentElement.addEventListener('focus', this.handleFocus_, true); document.addEventListener('keydown', this.handleKey_); - document.addEventListener('DOMNodeRemoved', this.handleRemove_); + this.mo_ && this.mo_.observe(document, {childList: true, subtree: true}); }; /** @@ -389,63 +487,111 @@ * dialogs are visible. */ dialogPolyfill.DialogManager.prototype.unblockDocument = function() { - document.body.removeChild(this.overlay); - document.body.removeEventListener('focus', this.handleFocus_, true); + document.documentElement.removeEventListener('focus', this.handleFocus_, true); document.removeEventListener('keydown', this.handleKey_); - document.removeEventListener('DOMNodeRemoved', this.handleRemove_); + this.mo_ && this.mo_.disconnect(); }; + /** + * Updates the stacking of all known dialogs. + */ dialogPolyfill.DialogManager.prototype.updateStacking = function() { - var zIndex = this.zIndexLow_; + var zIndex = this.zIndexHigh_; - for (var i = 0; i < this.pendingDialogStack.length; i++) { - if (i == this.pendingDialogStack.length - 1) { - this.overlay.style.zIndex = zIndex++; + for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) { + dpi.updateZIndex(--zIndex, --zIndex); + if (i === 0) { + this.overlay.style.zIndex = --zIndex; } - this.pendingDialogStack[i].updateZIndex(zIndex++, zIndex++); } + + // Make the overlay a sibling of the dialog itself. + var last = this.pendingDialogStack[0]; + if (last) { + var p = last.dialog.parentNode || document.body; + p.appendChild(this.overlay); + } else if (this.overlay.parentNode) { + this.overlay.parentNode.removeChild(this.overlay); + } + }; + + /** + * @param {Element} candidate to check if contained or is the top-most modal dialog + * @return {boolean} whether candidate is contained in top dialog + */ + dialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function(candidate) { + while (candidate = findNearestDialog(candidate)) { + for (var i = 0, dpi; dpi = this.pendingDialogStack[i]; ++i) { + if (dpi.dialog === candidate) { + return i === 0; // only valid if top-most + } + } + candidate = candidate.parentElement; + } + return false; }; dialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) { - var candidate = findNearestDialog(/** @type {Element} */ (event.target)); - if (candidate != this.topDialogElement()) { - event.preventDefault(); - event.stopPropagation(); - safeBlur(/** @type {Element} */ (event.target)); - // TODO: Focus on the browser chrome (aka document) or the dialog itself - // depending on the tab direction. - return false; + if (this.containedByTopDialog_(event.target)) { return; } + + if (document.activeElement === document.documentElement) { return; } + + event.preventDefault(); + event.stopPropagation(); + safeBlur(/** @type {Element} */ (event.target)); + + if (this.forwardTab_ === undefined) { return; } // move focus only from a tab key + + var dpi = this.pendingDialogStack[0]; + var dialog = dpi.dialog; + var position = dialog.compareDocumentPosition(event.target); + if (position & Node.DOCUMENT_POSITION_PRECEDING) { + if (this.forwardTab_) { + // forward + dpi.focus_(); + } else if (event.target !== document.documentElement) { + // backwards if we're not already focused on + document.documentElement.focus(); + } } + + return false; }; dialogPolyfill.DialogManager.prototype.handleKey_ = function(event) { - if (event.keyCode == 27) { + this.forwardTab_ = undefined; + if (event.keyCode === 27) { event.preventDefault(); event.stopPropagation(); var cancelEvent = new supportCustomEvent('cancel', { bubbles: false, cancelable: true }); - var dialog = this.topDialogElement(); - if (dialog.dispatchEvent(cancelEvent)) { - dialog.close(); + var dpi = this.pendingDialogStack[0]; + if (dpi && dpi.dialog.dispatchEvent(cancelEvent)) { + dpi.dialog.close(); } + } else if (event.keyCode === 9) { + this.forwardTab_ = !event.shiftKey; } }; - dialogPolyfill.DialogManager.prototype.handleRemove_ = function(event) { - if (event.target.nodeName.toUpperCase() != 'DIALOG') { return; } - - var dialog = /** @type {HTMLDialogElement} */ (event.target); - if (!dialog.open) { return; } - - // Find a dialogPolyfillInfo which matches the removed . - this.pendingDialogStack.some(function(dpi) { - if (dpi.dialog == dialog) { - // This call will clear the dialogPolyfillInfo on this DialogManager - // as a side effect. + /** + * Finds and downgrades any known modal dialogs that are no longer displayed. Dialogs that are + * removed and immediately readded don't stay modal, they become normal. + * + * @param {!Array} removed that have definitely been removed + */ + dialogPolyfill.DialogManager.prototype.checkDOM_ = function(removed) { + // This operates on a clone because it may cause it to change. Each change also calls + // updateStacking, which only actually needs to happen once. But who removes many modal dialogs + // at a time?! + var clone = this.pendingDialogStack.slice(); + clone.forEach(function(dpi) { + if (removed.indexOf(dpi.dialog) !== -1) { + dpi.downgradeModal(); + } else { dpi.maybeHideModal(); - return true; } }); }; @@ -459,8 +605,7 @@ if (this.pendingDialogStack.length >= allowed) { return false; } - this.pendingDialogStack.push(dpi); - if (this.pendingDialogStack.length == 1) { + if (this.pendingDialogStack.unshift(dpi) === 1) { this.blockDocument(); } this.updateStacking(); @@ -468,59 +613,124 @@ }; /** - * @param {dialogPolyfillInfo} dpi + * @param {!dialogPolyfillInfo} dpi */ dialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) { var index = this.pendingDialogStack.indexOf(dpi); - if (index == -1) { return; } + if (index === -1) { return; } this.pendingDialogStack.splice(index, 1); - this.updateStacking(); - if (this.pendingDialogStack.length == 0) { + if (this.pendingDialogStack.length === 0) { this.unblockDocument(); } + this.updateStacking(); }; dialogPolyfill.dm = new dialogPolyfill.DialogManager(); + dialogPolyfill.formSubmitter = null; + dialogPolyfill.useValue = null; /** - * Global form 'dialog' method handler. Closes a dialog correctly on submit - * and possibly sets its return value. + * Installs global handlers, such as click listers and native method overrides. These are needed + * even if a no dialog is registered, as they deal with
. */ - document.addEventListener('submit', function(ev) { - var target = ev.target; - if (!target || !target.hasAttribute('method')) { return; } - if (target.getAttribute('method').toLowerCase() != 'dialog') { return; } - ev.preventDefault(); + if (window.HTMLDialogElement === undefined) { - var dialog = findNearestDialog(/** @type {Element} */ (ev.target)); - if (!dialog) { return; } - - // FIXME: The original event doesn't contain the element used to submit the - // form (if any). Look in some possible places. - var returnValue; - var cands = [document.activeElement, ev.explicitOriginalTarget]; - var els = ['BUTTON', 'INPUT']; - cands.some(function(cand) { - if (cand && cand.form == ev.target && els.indexOf(cand.nodeName.toUpperCase()) != -1) { - returnValue = cand.value; - return true; + /** + * If HTMLFormElement translates method="DIALOG" into 'get', then replace the descriptor with + * one that returns the correct value. + */ + var testForm = document.createElement('form'); + testForm.setAttribute('method', 'dialog'); + if (testForm.method !== 'dialog') { + var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, 'method'); + if (methodDescriptor) { + // nb. Some older iOS and older PhantomJS fail to return the descriptor. Don't do anything + // and don't bother to update the element. + var realGet = methodDescriptor.get; + methodDescriptor.get = function() { + if (isFormMethodDialog(this)) { + return 'dialog'; + } + return realGet.call(this); + }; + var realSet = methodDescriptor.set; + methodDescriptor.set = function(v) { + if (typeof v === 'string' && v.toLowerCase() === 'dialog') { + return this.setAttribute('method', v); + } + return realSet.call(this, v); + }; + Object.defineProperty(HTMLFormElement.prototype, 'method', methodDescriptor); } - }); - dialog.close(returnValue); - }, true); + } - dialogPolyfill['forceRegisterDialog'] = dialogPolyfill.forceRegisterDialog; - dialogPolyfill['registerDialog'] = dialogPolyfill.registerDialog; + /** + * Global 'click' handler, to capture the or