2015-01-10 12:55:48 +01:00
/ *
2016-10-05 09:05:28 +02:00
Leaflet 1.0 . 1 + ffcfcc1 , a JS library for interactive maps . http : //leafletjs.com
( c ) 2010 - 2016 Vladimir Agafonkin , ( c ) 2010 - 2011 CloudMade
2015-01-10 12:55:48 +01:00
* /
2016-10-05 09:05:28 +02:00
! function ( t , e , i ) { function n ( ) { var e = t . L ; o . noConflict = function ( ) { return t . L = e , this } , t . L = o } var o = { version : "1.0.1+ffcfcc1" } ; "object" == typeof module && "object" == typeof module . exports ? module . exports = o : "function" == typeof define && define . amd && define ( o ) , "undefined" != typeof t && n ( ) , o . Util = { extend : function ( t ) { var e , i , n , o ; for ( i = 1 , n = arguments . length ; i < n ; i ++ ) { o = arguments [ i ] ; for ( e in o ) t [ e ] = o [ e ] } return t } , create : Object . create || function ( ) { function t ( ) { } return function ( e ) { return t . prototype = e , new t } } ( ) , bind : function ( t , e ) { var i = Array . prototype . slice ; if ( t . bind ) return t . bind . apply ( t , i . call ( arguments , 1 ) ) ; var n = i . call ( arguments , 2 ) ; return function ( ) { return t . apply ( e , n . length ? n . concat ( i . call ( arguments ) ) : arguments ) } } , stamp : function ( t ) { return t . _leaflet _id = t . _leaflet _id || ++ o . Util . lastId , t . _leaflet _id } , lastId : 0 , throttle : function ( t , e , i ) { var n , o , s , r ; return r = function ( ) { n = ! 1 , o && ( s . apply ( i , o ) , o = ! 1 ) } , s = function ( ) { n ? o = arguments : ( t . apply ( i , arguments ) , setTimeout ( r , e ) , n = ! 0 ) } } , wrapNum : function ( t , e , i ) { var n = e [ 1 ] , o = e [ 0 ] , s = n - o ; return t === n && i ? t : ( ( t - o ) % s + s ) % s + o } , 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 ) { t . hasOwnProperty ( "options" ) || ( t . options = t . options ? o . Util . create ( t . options ) : { } ) ; for ( var i in e ) t . options [ i ] = e [ i ] ; return 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 && e . indexOf ( "?" ) !== - 1 ? "&" : "?" ) + n . join ( "&" ) } , template : function ( t , e ) { return t . replace ( o . Util . templateRe , 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 } ) } , templateRe : /\{ *([\w_\-]+) *\}/g , isArray : Array . isArray || function ( t ) { return "[object Array]" === Object . prototype . toString . call ( t ) } , indexOf : function ( t , e ) { for ( var i = 0 ; i < t . length ; i ++ ) if ( t [ i ] === e ) return i ; return - 1 } , emptyImageUrl : "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" } , function ( ) { function e ( e ) { return t [ "webkit" + e ] || t [ "moz" + e ] || t [ "ms" + e ] } function i ( e ) { var i = + new Date , o = Math . max ( 0 , 16 - ( i - n ) ) ; return n = i + o , t . setTimeout ( e , o ) } var n = 0 , s = t . requestAnimationFrame || e ( "RequestAnimationFrame" ) || i , r = t . cancelAnimationFrame || e ( "CancelAnimationFrame" ) || e ( "CancelRequestAnimationFrame" ) || function ( e ) { t . clearTimeout ( e ) } ; o . Util . requestAnimFrame = function ( e , n , r ) { return r && s === i ? void e . call ( n ) : s . call ( t , o . bind ( e , n ) ) } , o . Util . cancelAnimFrame = function ( e ) { e && r . call ( t , e ) } } ( ) , o . extend = o . Util . extend , o . bind = o . Util . bind , o . stamp = o . Util . stamp , o . setOptions = o . Util . setOptions , o . Class = function ( ) { } , o . Class . extend = function ( t ) { var e = function ( ) { this . initialize && this . initialize . apply ( this , arguments ) , this . callInitHooks ( ) } , i = e . _ _super _ _ = this . prototype , n = o . Util . create ( i ) ; n . constructor = e , e . prototype = n ; for ( var s in this ) this . hasOwnProperty ( s ) && "prototype" !== s && ( e [ s ] = this [ s ] ) ; return t . statics && ( o . extend ( e , t . statics ) , delete t . statics ) , t . includes && ( o . Util . extend . apply ( null , [ n ] . concat ( t . includes ) ) , delete t . includes ) , n . options && ( t . options = o . Util . extend ( o . Util . create ( n . options ) , t . options ) ) , o . extend ( n , t ) , n . _initHooks = [ ] , n . callInitHooks = function ( ) { if ( ! this . _initHooksCalled ) { i . callInitHooks && i . callInitHooks . call ( this ) , this . _initHooksCalled = ! 0 ; for ( var t = 0 , e = n . _initHooks . length ; t < e ; t ++ ) n . _initHooks [ t ] . call ( this ) } } , e } , o . Class . include = function ( t ) { return o . extend ( this . prototype , t ) , this } , o . Class . mergeOptions = function ( t ) { return o . extend ( this . prototype . options , t ) , this } , o . Class . addInitHook = function ( t ) { var e = Array . prototype . slice . call ( arguments , 1 ) , i = "function" == typeof t ? t : function ( ) { this [ t ] . apply ( this , e ) } ; return this . prototype . _initHooks = this . prototype . _initHooks || [ ] , this . prototype . _initHooks . push ( i ) , this } , o . Evented = o . Class . extend ( { on : function ( t , e , i ) { if ( "object" == typeof t ) for ( var n in t ) this . _on ( n , t [ n ] , e ) ; else { t = o . Util . splitWords ( t ) ; for ( var s = 0 , r = t . length ; s < r ; s ++ ) this . _on ( t [ s ] , e , i ) } return this } , off : function ( t , e , i ) { if ( t ) if ( "object" == typeof t ) for ( var n in t ) this . _off ( n , t [ n ] , e ) ; else { t = o . Util . splitWords ( t ) ; for ( var s = 0 , r = t .
} for ( var h = 0 ; h < i . length ; h ++ ) if ( i [ h ] . fire ( e , r , ! 0 ) , r . originalEvent . _stopped || i [ h ] . options . nonBubblingEvents && o . Util . indexOf ( i [ h ] . options . nonBubblingEvents , e ) !== - 1 ) return } } , _draggableMoved : function ( t ) { return t = t . dragging && t . dragging . enabled ( ) ? t : this , t . dragging && t . dragging . moved ( ) || this . boxZoom && this . boxZoom . moved ( ) } , _clearHandlers : function ( ) { for ( var t = 0 , e = this . _handlers . length ; t < e ; t ++ ) this . _handlers [ t ] . disable ( ) } , whenReady : function ( t , e ) { return this . _loaded ? t . call ( e || this , { target : this } ) : this . on ( "load" , t , e ) , this } , _getMapPanePos : function ( ) { return o . DomUtil . getPosition ( this . _mapPane ) || new o . Point ( 0 , 0 ) } , _moved : function ( ) { var t = this . _getMapPanePos ( ) ; return t && ! t . equals ( [ 0 , 0 ] ) } , _getTopLeftPoint : function ( t , e ) { var n = t && e !== i ? this . _getNewPixelOrigin ( t , e ) : this . getPixelOrigin ( ) ; return n . subtract ( this . _getMapPanePos ( ) ) } , _getNewPixelOrigin : function ( t , e ) { var i = this . getSize ( ) . _divideBy ( 2 ) ; return this . project ( t , e ) . _subtract ( i ) . _add ( this . _getMapPanePos ( ) ) . _round ( ) } , _latLngToNewLayerPoint : function ( t , e , i ) { var n = this . _getNewPixelOrigin ( i , e ) ; 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 ) , r = new o . Bounds ( n . subtract ( s ) , n . add ( s ) ) , a = this . _getBoundsOffset ( r , i , e ) ; return a . round ( ) . equals ( [ 0 , 0 ] ) ? t : this . unproject ( n . add ( a ) , 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 = o . bounds ( this . project ( e . getNorthEast ( ) , i ) , this . project ( e . getSouthWest ( ) , i ) ) , s = n . min . subtract ( t . min ) , r = n . max . subtract ( t . max ) , a = this . _rebound ( s . x , - r . x ) , h = this . _rebound ( s . y , - r . y ) ; return new o . Point ( a , h ) } , _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 ( ) , n = o . Browser . any3d ? this . options . zoomSnap : 1 ; return n && ( t = Math . round ( t / n ) * n ) , Math . max ( e , Math . min ( i , t ) ) } } ) , o . map = function ( t , e ) { return new o . Map ( t , e ) } , o . Layer = o . Evented . extend ( { options : { pane : "overlayPane" , nonBubblingEvents : [ ] } , 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 [ o . stamp ( t ) ] = this , this } , removeInteractiveTarget : function ( t ) { return delete this . _map . _targets [ o . stamp ( t ) ] , this } , _layerAdd : function ( t ) { var e = t . target ; if ( e . hasLayer ( this ) ) { if ( this . _map = e , this . _zoomAnimated = e . _zoomAnimated , this . getEvents ) { var i = this . getEvents ( ) ; e . on ( i , this ) , this . once ( "remove" , function ( ) { e . off ( i , this ) } , this ) } this . onAdd ( e ) , this . getAttribution && this . _map . attributionControl && this . _map . attributionControl . addAttribution ( this . getAttribution ( ) ) , this . fire ( "add" ) , e . fire ( "layeradd" , { layer : this } ) } } } ) , o . Map . include ( { addLayer : function ( t ) { var e = o . stamp ( t ) ; return this . _layers [ e ] ? this : ( this . _layers [ e ] = t , t . _mapToAdd = this , t . beforeAdd && t . beforeAdd ( this ) , this . whenReady ( t . _layerAdd , t ) , this ) } , removeLayer : function ( t ) { var e = o . stamp ( t ) ; return this . _layers [ e ] ? ( this . _loaded && t . onRemove ( this ) , t . getAttribution && this . attributionControl && this . attributionControl . removeAttribution ( t . getAttribution ( ) ) , delete this . _layers [ e ] , this . _loaded && ( this . fire ( "layerremove" , { layer : t } ) , t . fire ( "remove" ) ) , t . _map = t . _mapToAdd = null , this ) : this } , hasLayer : function ( t ) { return ! ! t && o . stamp ( t ) in this . _layers } , eachLayer : function ( t , e ) { for ( var i in this . _layers ) t . call ( e , this . _layers [ i ] ) ; return this } , _addLayers : function ( t ) { t = t ? o . Util . isArray ( t ) ? t : [ t ] : [ ] ; for ( var e = 0 , i = t . length ; e < i ; e ++ ) this . addLayer ( t [ e ] ) } , _addZoomLimit : function ( t ) { ! isNaN ( t . options . maxZoom ) && isNaN ( t . options . minZoom ) || ( this . _zoomBoundLayers [ o . stamp ( t ) ] = t , this . _updateZoomLevels ( ) ) } , _removeZoomLimit : function ( t ) { var e = o . stamp ( t ) ; this . _zoomBoundLayer
r . x + n + l . x > u . x && ( c = r . x + n - u . x + l . x ) , r . x - c - h . x < 0 && ( c = r . x - h . x ) , r . y + i + l . y > u . y && ( d = r . y + i - u . y + l . y ) , r . y - d - h . y < 0 && ( d = r . y - h . y ) , ( c || d ) && t . fire ( "autopanstart" ) . panBy ( [ c , d ] ) } } , _onCloseButtonClick : function ( t ) { this . _close ( ) , o . DomEvent . stop ( t ) } , _getAnchor : function ( ) { return o . point ( this . _source && this . _source . _getPopupAnchor ? this . _source . _getPopupAnchor ( ) : [ 0 , 0 ] ) } } ) , o . popup = function ( t , e ) { return new o . Popup ( t , e ) } , o . Map . mergeOptions ( { closePopupOnClick : ! 0 } ) , o . Map . include ( { openPopup : function ( t , e , i ) { return t instanceof o . Popup || ( t = new o . Popup ( i ) . setContent ( t ) ) , e && t . setLatLng ( e ) , 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 } } ) , o . Layer . include ( { bindPopup : function ( t , e ) { return t instanceof o . Popup ? ( o . setOptions ( t , e ) , this . _popup = t , t . _source = this ) : ( this . _popup && ! e || ( this . _popup = new o . Popup ( e , this ) ) , this . _popup . setContent ( t ) ) , this . _popupHandlersAdded || ( this . on ( { click : this . _openPopup , remove : this . closePopup , move : this . _movePopup } ) , this . _popupHandlersAdded = ! 0 ) , this } , unbindPopup : function ( ) { return this . _popup && ( this . off ( { click : this . _openPopup , remove : this . closePopup , move : this . _movePopup } ) , this . _popupHandlersAdded = ! 1 , this . _popup = null ) , this } , openPopup : function ( t , e ) { if ( t instanceof o . Layer || ( e = t , t = this ) , t instanceof o . FeatureGroup ) for ( var i in this . _layers ) { t = this . _layers [ i ] ; break } return e || ( e = t . getCenter ? t . getCenter ( ) : t . getLatLng ( ) ) , this . _popup && this . _map && ( this . _popup . _source = t , this . _popup . update ( ) , this . _map . openPopup ( this . _popup , e ) ) , 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 . isOpen ( ) } , setPopupContent : function ( t ) { return this . _popup && this . _popup . setContent ( t ) , this } , getPopup : function ( ) { return this . _popup } , _openPopup : function ( t ) { var e = t . layer || t . target ; if ( this . _popup && this . _map ) return o . DomEvent . stop ( t ) , e instanceof o . Path ? void this . openPopup ( t . layer || t . target , t . latlng ) : void ( this . _map . hasLayer ( this . _popup ) && this . _popup . _source === e ? this . closePopup ( ) : this . openPopup ( e , t . latlng ) ) } , _movePopup : function ( t ) { this . _popup . setLatLng ( t . latlng ) } } ) , o . Marker . include ( { _getPopupAnchor : function ( ) { return this . options . icon . options . popupAnchor || [ 0 , 0 ] } } ) , o . Tooltip = o . DivOverlay . extend ( { options : { pane : "tooltipPane" , offset : [ 0 , 0 ] , direction : "auto" , permanent : ! 1 , sticky : ! 1 , interactive : ! 1 , opacity : . 9 } , onAdd : function ( t ) { o . DivOverlay . 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 ) { o . DivOverlay . prototype . onRemove . call ( this , t ) , t . fire ( "tooltipclose" , { tooltip : this } ) , this . _source && this . _source . fire ( "tooltipclose" , { tooltip : this } , ! 0 ) } , getEvents : function ( ) { var t = o . DivOverlay . prototype . getEvents . call ( this ) ; return o . Browser . touch && ! this . options . permanent && ( t . preclick = this . _close ) , t } , _close : function ( ) { this . _map && this . _map . closeTooltip ( this ) } , _initLayout : function ( ) { var t = "leaflet-tooltip" , e = t + " " + ( this . options . className || "" ) + " leaflet-zoom-" + ( this . _zoomAnimated ? "animated" : "hide" ) ; this . _contentNode = this . _container = o . DomUtil . create ( "div" , e ) } , _updateLayout : function ( ) { } , _adjustPan : function ( ) { } , _setPosition : function ( t ) { var e = this . _map , i = this . _container , n = e . latLngToContainerPoint ( e . getCenter ( ) ) , s = e . layerPointToContainerPoint ( t ) , r = this . options . direction , a = i . offsetWidth , h = i . offsetHeight , l = o . point ( this . options . offset ) , u = this . _getAnchor ( ) ; "top" === r ? t = t . add ( o . point ( - a / 2 + l . x , - h + l . y + u . y ) ) : "bottom" === r ? t = t . subtract ( o . point ( a / 2 - l . x , - l . y ) ) : "center" === r ? t = t . subtract ( o . point ( a / 2 + l . x , h / 2 - u . y + l . y ) ) : "right" === r || "auto" === r && s . x < n . x ? ( r = "right" , t = t . add ( [ l . x + u . x , u . y - h / 2 + l . y ] ) ) : ( r = "left" , t = t . subtract ( o . point ( a + u . x - l . x , h / 2 - u . y - l . y ) ) ) , o . DomUtil . removeClass ( i , "leaflet-tooltip-right" ) , o . DomUtil . removeClass ( i , "leaflet-tooltip-left" ) , o . DomUtil . removeClass ( i , "leaflet-tooltip-top" ) , o . DomUtil . removeClass ( i , "leaflet-tooltip-bottom" ) , o . DomUtil . addCl
} var r = this . options ; if ( r . filter && ! r . filter ( t ) ) return this ; var a = o . GeoJSON . geometryToLayer ( t , r ) ; return a ? ( a . feature = o . GeoJSON . asFeature ( t ) , a . defaultOptions = a . options , this . resetStyle ( a ) , r . onEachFeature && r . onEachFeature ( t , a ) , this . addLayer ( a ) ) : this } , resetStyle : function ( t ) { return t . options = o . Util . extend ( { } , t . defaultOptions ) , this . _setLayerStyle ( t , this . options . style ) , this } , setStyle : function ( t ) { return 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 ) { var i , n , s , r , a = "Feature" === t . type ? t . geometry : t , h = a ? a . coordinates : null , l = [ ] , u = e && e . pointToLayer , c = e && e . coordsToLatLng || this . coordsToLatLng ; if ( ! h && ! a ) return null ; switch ( a . type ) { case "Point" : return i = c ( h ) , u ? u ( t , i ) : new o . Marker ( i ) ; case "MultiPoint" : for ( s = 0 , r = h . length ; s < r ; s ++ ) i = c ( h [ s ] ) , l . push ( u ? u ( t , i ) : new o . Marker ( i ) ) ; return new o . FeatureGroup ( l ) ; case "LineString" : case "MultiLineString" : return n = this . coordsToLatLngs ( h , "LineString" === a . type ? 0 : 1 , c ) , new o . Polyline ( n , e ) ; case "Polygon" : case "MultiPolygon" : return n = this . coordsToLatLngs ( h , "Polygon" === a . type ? 1 : 2 , c ) , new o . Polygon ( n , e ) ; case "GeometryCollection" : for ( s = 0 , r = a . geometries . length ; s < r ; s ++ ) { var d = this . geometryToLayer ( { geometry : a . geometries [ s ] , type : "Feature" , properties : t . properties } , e ) ; d && l . push ( d ) } return new o . FeatureGroup ( l ) ; 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 ) { for ( var n , o = [ ] , s = 0 , r = t . length ; s < r ; s ++ ) n = e ? this . coordsToLatLngs ( t [ s ] , e - 1 , i ) : ( i || this . coordsToLatLng ) ( t [ s ] ) , o . push ( n ) ; return o } , latLngToCoords : function ( t ) { return t . alt !== i ? [ t . lng , t . lat , t . alt ] : [ t . lng , t . lat ] } , latLngsToCoords : function ( t , e , i ) { for ( var n = [ ] , s = 0 , r = t . length ; s < r ; s ++ ) n . push ( e ? o . GeoJSON . latLngsToCoords ( t [ s ] , e - 1 , i ) : o . GeoJSON . latLngToCoords ( t [ s ] ) ) ; return ! e && i && n . push ( n [ 0 ] ) , n } , 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 r = { toGeoJSON : function ( ) { return o . GeoJSON . getFeature ( this , { type : "Point" , coordinates : o . GeoJSON . latLngToCoords ( this . getLatLng ( ) ) } ) } } ; o . Marker . include ( r ) , o . Circle . include ( r ) , o . CircleMarker . include ( r ) , o . Polyline . prototype . toGeoJSON = function ( ) { var t = ! o . Polyline . _flat ( this . _latlngs ) , e = o . GeoJSON . latLngsToCoords ( this . _latlngs , t ? 1 : 0 ) ; return o . GeoJSON . getFeature ( this , { type : ( t ? "Multi" : "" ) + "LineString" , coordinates : e } ) } , o . Polygon . prototype . toGeoJSON = function ( ) { var t = ! o . Polyline . _flat ( this . _latlngs ) , e = t && ! o . Polyline . _flat ( this . _latlngs [ 0 ] ) , i = o . GeoJSON . latLngsToCoords ( this . _latlngs , e ? 2 : t ? 1 : 0 , ! 0 ) ; return t || ( i = [ i ] ) , o . GeoJSON . getFeature ( this , { type : ( e ? "Multi" : "" ) + "Polygon" , coordinates : i } ) } , o . LayerGroup . include ( { toMultiPoint : function ( ) { var t = [ ] ; return this . eachLayer ( function ( e ) { t . push ( e . toGeoJSON ( ) . geometry . coordinates ) } ) , o . GeoJSON . getFeature ( this , { type : "MultiPoint" , coordinates : t } ) } , toGeoJSON : function ( ) { var t = this . feature && this . feature . geometry && this . feature . geometry . type ; if ( "MultiPoint" === t ) return this . toMultiPoint ( ) ; var e = "GeometryCollection" === t , i = [ ] ; return this . eachLayer ( function ( t ) { if ( t . toGeoJSON ) { var n = t . toGeoJSON ( ) ; i . push ( e ? n . geometry : o . GeoJSON . asFeature ( n ) ) } } ) , e ? o . GeoJSON . getFeature ( this , { geometries : i , type : "GeometryCollection" } ) : { type : "FeatureCollection" , features : i } } } ) , o . geoJSON = function ( t , e ) { return new o . GeoJSON ( t , e ) } , o . geoJson = o . geoJSON ; var a = "_leaflet_events" ; o . DomEvent = { on : function ( t , e , i , n ) { if ( "object" == typeof e ) for ( var s in e ) this . _on ( t , s , e [ s ] , i ) ; else { e = o . Util . splitWords ( e ) ; for ( var r = 0 , a = e . length ; r < a ; r ++ ) this . _on ( t , e [ r ] , i , n ) } return this } , off : function ( t , e , i , n ) { if ( "object" == typeof e ) for ( var s in e ) this . _off ( t , s , e [ s ] , i ) ; else { e = o . Util . splitWords ( e ) ; for ( var r = 0 , a = e . length ; r < a ; r ++ ) this . _off ( t , e [ r ] , i , n ) } return this } , _on : function ( e , i , n , s ) { var r = i + o . stamp ( n ) + ( s ? "_" + o . stamp ( s ) : "" ) ; if ( e [ a ] && e [ a ] [ r ] ) return this ; var h = function ( i ) { return n . call ( s || e , i || t . event ) } , l = h ; return o . Browser . pointer && 0 === i . indexOf ( "touch" ) ? this . addPointerListener ( e , i , h , r ) : o . Browser . touch && "dblclick" ==
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 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 ( " | " ) } } } ) , o . Map . mergeOptions ( { attributionControl : ! 0 } ) , o . Map . addInitHook ( function ( ) { this . options . 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 } , onAdd : function ( t ) { var e = "leaflet-control-scale" , i = o . DomUtil . create ( "div" , e ) , n = this . options ; return this . _addScales ( n , e + "-line" , 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 , i ) ) , t . imperial && ( this . _iScale = o . DomUtil . create ( "div" , e , i ) ) } , _update : function ( ) { var t = this . _map , e = t . getSize ( ) . y / 2 , i = t . distance ( t . containerPointToLatLng ( [ 0 , e ] ) , t . containerPointToLatLng ( [ this . options . maxWidth , e ] ) ) ; this . _updateScales ( i ) } , _updateScales : function ( t ) { this . options . metric && t && this . _updateMetric ( t ) , this . options . imperial && t && this . _updateImperial ( t ) } , _updateMetric : function ( t ) { var e = this . _getRoundNum ( t ) , i = e < 1e3 ? e + " m" : e / 1e3 + " km" ; this . _updateScale ( this . _mScale , i , e / t ) } , _updateImperial : function ( t ) { var e , i , n , o = 3.2808399 * t ; o > 5280 ? ( e = o / 5280 , i = this . _getRoundNum ( e ) , this . _updateScale ( this . _iScale , i + " mi" , i / e ) ) : ( n = this . _getRoundNum ( o ) , this . _updateScale ( this . _iScale , n + " ft" , n / o ) ) } , _updateScale : function ( t , e , i ) { t . style . width = Math . round ( this . options . maxWidth * i ) + "px" , t . innerHTML = e } , _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 , hideSingleBase : ! 1 } , 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 ( ) , this . _map = t , t . on ( "zoomend" , this . _checkDisabledLayers , this ) , this . _container } , onRemove : function ( ) { this . _map . off ( "zoomend" , this . _checkDisabledLayers , this ) ; for ( var t = 0 ; t < this . _layers . length ; t ++ ) this . _layers [ t ] . layer . off ( "add remove" , this . _onLayerChange , this ) } , addBaseLayer : function ( t , e ) { return this . _addLayer ( t , e ) , this . _map ? this . _update ( ) : this } , addOverlay : function ( t , e ) { return this . _addLayer ( t , e , ! 0 ) , this . _map ? this . _update ( ) : this } , removeLayer : function ( t ) { t . off ( "add remove" , this . _onLayerChange , this ) ; var e = this . _getLayer ( o . stamp ( t ) ) ; return e && this . _layers . splice ( this . _layers . indexOf ( e ) , 1 ) , this . _map ? this . _update ( ) : this } , expand : function ( ) { o . DomUtil . addClass ( this . _container , "leaflet-control-layers-expanded" ) , this . _form . style . height = null ; var t = this . _map . getSize ( ) . y - ( this . _container . offsetTop + 50 ) ; return t < this . _form . clientHeight ? ( o . DomUtil . addClass ( this . _form , "leaflet-control-layers-scrollbar" ) , this . _form . style . height = t + "px" ) : o . DomUtil . removeClass ( this . _form , "leaflet-control-layers-scrollbar" ) , this . _checkDisabledLayers ( ) , this } , collapse : function ( ) { return o . DomUtil . removeClass ( this . _container , "leaflet-control-layers-expanded" ) , this } , _initLayout : function ( ) { var t = "leaflet-control-layers" , e = this . _container = o . DomUtil . create ( "div" , t ) ; e . setAttribute ( "aria-haspopup" , ! 0 ) , o . DomEvent . disableClickPropagation ( e ) , o . Browser . touch || o . DomEvent . disableScrollPropagation ( e ) ; var i = this . _form = o . DomUtil . create ( "form" , t + "-list" ) ; if ( this . options . collapsed ) { o . Browser . android || o . Dom