/**! * The MIT License * * Copyright (c) the ui-leaflet Team, http://angular-ui.github.io/ui-leaflet * * Original Copyright (c) https://github.com/angular-ui/ui-leaflet * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * ui-leaflet * https://github.com/angular-ui/ui-leaflet * * @authors https://github.com/angular-ui/ui-leaflet/graphs/contributors */ /*! * ui-leaflet 3.0.0 2017-10-05 * ui-leaflet - An AngularJS directive to easily interact with Leaflet maps * git: https://github.com/angular-ui/ui-leaflet */ !function(e){"use strict";e.module("ui-leaflet",["nemLogging"]).directive("leaflet",["$q","leafletData","leafletMapDefaults","leafletHelpers","leafletMapEvents",function(e,t,r,n,a){return{restrict:"EA",replace:!0,scope:{center:"=",lfCenter:"=",defaults:"=",maxbounds:"=",bounds:"=",markers:"=",legend:"=",geojson:"=",paths:"=",tiles:"=",layers:"=",controls:"=",decorations:"=",eventBroadcast:"=",watchOptions:"=",id:"@"},transclude:!0,template:'
',controller:["$scope",function(t){this._leafletMap=e.defer(),this.getMap=function(){return this._leafletMap.promise},this.getLeafletScope=function(){return t}}],link:function(e,o,i,l){function s(){isNaN(i.width)?o.css("width",i.width):o.css("width",i.width+"px")}function c(){isNaN(i.height)?o.css("height",i.height):o.css("height",i.height+"px")}var u=n.isDefined,f=r.setDefaults(e.defaults,i.id),d=a.getAvailableMapEvents(),p=a.addEvents;e.mapId=i.id,t.setDirectiveControls({},i.id);var g=new L.Map(o[0],r.getMapCreationDefaults(i.id));if(l._leafletMap.resolve(g),u(i.width)&&(s(),e.$watch(function(){return o[0].getAttribute("width")},function(){s(),g.invalidateSize()})),u(i.height)&&(c(),e.$watch(function(){return o[0].getAttribute("height")},function(){c(),g.invalidateSize()})),u(i.center)||u(i.lfCenter)||g.setView([f.center.lat,f.center.lng],f.center.zoom),!u(i.tiles)&&!u(i.layers)){var y=L.tileLayer(f.tileLayer,f.tileLayerOptions);y.addTo(g),t.setTiles(y,i.id)}if(u(g.zoomControl)&&u(f.zoomControlPosition)&&g.zoomControl.setPosition(f.zoomControlPosition),u(g.zoomControl)&&!1===f.zoomControl&&g.zoomControl.remove(),u(g.zoomsliderControl)&&u(f.zoomsliderControl)&&!1===f.zoomsliderControl&&g.zoomsliderControl.remove(),!u(i.eventBroadcast)){p(g,i.id,d,"eventName",e,"broadcast")}g.whenReady(function(){t.setMap(g,i.id)}),e.$on("$destroy",function(){r.reset(),g.remove(),t.unresolveMap(i.id)}),e.$on("invalidateSize",function(){g.invalidateSize()})}}}]),e.module("ui-leaflet").factory("eventManager",[function(){var e=function(){this.listeners={}};return e.prototype={addEventListener:function(e,t,r){for(var n=[],a=arguments.length,o=0;o3?n.splice(3,n.length-1):[],void 0!==this.listeners[e]?this.listeners[e].push({scope:r,callback:t,args:n}):this.listeners[e]=[{scope:r,callback:t,args:n}]},removeEventListener:function(e,t,r){if(void 0!==this.listeners[e]){for(var n=this.listeners[e].length,a=[],o=0;o0;for(var a=0;a2?n.splice(2,n.length-1):[],n=[r].concat(n),void 0!==this.listeners[e])for(var i=this.listeners[e].length,l=0;l=0&&t<=c},f=function(e){return e},d=function(e){return function(t){return null===t?void 0:t[e]}},p=function(e,t,r){if(void 0===t)return e;switch(null===r?3:r){case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,a){return e.call(t,r,n,a)};case 4:return function(r,n,a,o){return e.call(t,r,n,a,o)}}return function(){return e.apply(t,arguments)}};r=function(e,t){return function(r){var n=arguments.length;if(n<2||null===r)return r;for(var a=1;a0)for(var i=0;i0&&t(r)},function(e){n.shift(),o.d.reject(e),n.length>0&&t(r)})},l=function(e,t,r,n){if(e.innerHTML="",t.error)e.innerHTML+='
'+t.error.message+"
";else if("arcgis"===r)for(var a=0;a'+o.layerName+"";for(var i=0;i
'+l.label+"
"}}else"image"===r&&(e.innerHTML='')};return{getOnAddLegend:function(e,t,r,n){return function(){var a=L.DomUtil.create("div",t);return L.Browser.touch?L.DomEvent.on(a,"click",L.DomEvent.stopPropagation):(L.DomEvent.disableClickPropagation(a),L.DomEvent.on(a,"mousewheel",L.DomEvent.stopPropagation)),l(a,e,r,n),a}},getOnAddArrayLegend:function(e,t){return function(){for(var r=L.DomUtil.create("div",t),n=0;n
'+e.labels[n]+"
";return L.Browser.touch?L.DomEvent.on(r,"click",L.DomEvent.stopPropagation):(L.DomEvent.disableClickPropagation(r),L.DomEvent.on(r,"mousewheel",L.DomEvent.stopPropagation)),r}},updateLegend:l,addLegendURL:function(e,r){var n=t.defer();return o(a[e])||(a[e]=[]),a[e].push({c:r,d:n}),1===a[e].length&&i(e),n.promise}}}]),e.module("ui-leaflet").factory("leafletMapDefaults",["$q","leafletHelpers",function(t,r){function n(){return{keyboard:!0,dragging:!0,worldCopyJump:!1,doubleClickZoom:!0,scrollWheelZoom:!0,tap:!0,touchZoom:!0,zoomControl:!0,zoomsliderControl:!1,zoomControlPosition:"topleft",attributionControl:!0,controls:{layers:{visible:!0,position:"topright",collapsed:!0}},nominatim:{server:" http://nominatim.openstreetmap.org/search"},crs:L.CRS.EPSG3857,tileLayer:"//{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",tileLayerOptions:{attribution:'© OpenStreetMap contributors'},path:{weight:10,opacity:1,color:"#0000ff"},center:{lat:0,lng:0,zoom:1},trackResize:!0}}var a=r.isDefined,o=r.isObject,i=r.obtainEffectiveMapId,l={};return{reset:function(){l={}},getDefaults:function(e){var t=i(l,e);return l[t]},getMapCreationDefaults:function(e){var t=i(l,e),r=l[t],n={maxZoom:r.maxZoom,keyboard:r.keyboard,dragging:r.dragging,zoomControl:r.zoomControl,doubleClickZoom:r.doubleClickZoom,scrollWheelZoom:r.scrollWheelZoom,tap:r.tap,touchZoom:r.touchZoom,attributionControl:r.attributionControl,worldCopyJump:r.worldCopyJump,crs:r.crs,trackResize:r.trackResize};if(a(r.minZoom)&&(n.minZoom=r.minZoom),a(r.zoomAnimation)&&(n.zoomAnimation=r.zoomAnimation),a(r.fadeAnimation)&&(n.fadeAnimation=r.fadeAnimation),a(r.markerZoomAnimation)&&(n.markerZoomAnimation=r.markerZoomAnimation),a(r.zoomDelta)&&(n.zoomDelta=r.zoomDelta),a(r.zoomSnap)&&(n.zoomSnap=r.zoomSnap),a(r.wheelPxPerZoomLevel)&&(n.wheelPxPerZoomLevel=r.wheelPxPerZoomLevel),a(r.boxZoom)&&(n.boxZoom=r.boxZoom),r.map)for(var o in r.map)n[o]=r.map[o];return n},setDefaults:function(t,r){var s=n();a(t)&&(s.doubleClickZoom=a(t.doubleClickZoom)?t.doubleClickZoom:s.doubleClickZoom,s.scrollWheelZoom=a(t.scrollWheelZoom)?t.scrollWheelZoom:s.doubleClickZoom,s.tap=a(t.tap)?t.tap:s.tap,s.touchZoom=a(t.touchZoom)?t.touchZoom:s.doubleClickZoom,s.zoomControl=a(t.zoomControl)?t.zoomControl:s.zoomControl,s.zoomsliderControl=a(t.zoomsliderControl)?t.zoomsliderControl:s.zoomsliderControl,s.attributionControl=a(t.attributionControl)?t.attributionControl:s.attributionControl,s.tileLayer=a(t.tileLayer)?t.tileLayer:s.tileLayer,s.zoomControlPosition=a(t.zoomControlPosition)?t.zoomControlPosition:s.zoomControlPosition,s.keyboard=a(t.keyboard)?t.keyboard:s.keyboard,s.dragging=a(t.dragging)?t.dragging:s.dragging,s.trackResize=a(t.trackResize)?t.trackResize:s.trackResize,a(t.controls)&&e.extend(s.controls,t.controls),o(t.crs)?s.crs=t.crs:a(L.CRS[t.crs])&&(s.crs=L.CRS[t.crs]),a(t.center)&&e.copy(t.center,s.center),a(t.tileLayerOptions)&&e.copy(t.tileLayerOptions,s.tileLayerOptions),a(t.maxZoom)&&(s.maxZoom=t.maxZoom),a(t.minZoom)&&(s.minZoom=t.minZoom),a(t.zoomAnimation)&&(s.zoomAnimation=t.zoomAnimation),a(t.fadeAnimation)&&(s.fadeAnimation=t.fadeAnimation),a(t.markerZoomAnimation)&&(s.markerZoomAnimation=t.markerZoomAnimation),a(t.worldCopyJump)&&(s.worldCopyJump=t.worldCopyJump),a(t.map)&&(s.map=t.map),a(t.path)&&(s.path=t.path),a(t.zoomDelta)&&(s.zoomDelta=t.zoomDelta),a(t.zoomSnap)&&(s.zoomSnap=t.zoomSnap),a(t.wheelPxPerZoomLevel)&&(s.wheelPxPerZoomLevel=t.wheelPxPerZoomLevel),a(t.boxZoom)&&(s.boxZoom=t.boxZoom));var c=i(l,r);return l[c]=s,s}}}]),e.module("ui-leaflet").service("leafletMarkersHelpers",["$rootScope","$timeout","leafletHelpers","leafletLogger","$compile","leafletGeoJsonHelpers","leafletWatchHelpers",function(t,r,n,a,o,i,l){var s=n.isDefined,c=n.defaultTo,u=n.MarkerClusterPlugin,f=n.AwesomeMarkersPlugin,d=n.VectorMarkersPlugin,p=n.MakiMarkersPlugin,g=n.ExtraMarkersPlugin,y=n.DomMarkersPlugin,v=n.safeApply,m=n,h=n.isString,b=n.isNumber,k=n.isObject,w={},C=i,D=n.errorHeader,A=l.maybeWatch,O=a,M=function(e){var t="";return["_icon","_latlng","_leaflet_id","_map","_shadow"].forEach(function(r){t+=r+": "+c(e[r],"undefined")+" \n"}),"[leafletMarker] : \n"+t},P=function(t){return e.element(w[t]._map._container).parent().length>0},E=function(r){if(s(r)&&s(r.type)&&"awesomeMarker"===r.type)return f.isLoaded()||O.error(D+" The AwesomeMarkers Plugin is not loaded."),new L.AwesomeMarkers.icon(r);if(s(r)&&s(r.type)&&"vectorMarker"===r.type)return d.isLoaded()||O.error(D+" The VectorMarkers Plugin is not loaded."),new L.VectorMarkers.icon(r);if(s(r)&&s(r.type)&&"makiMarker"===r.type)return p.isLoaded()||O.error(D+"The MakiMarkers Plugin is not loaded."),new L.MakiMarkers.icon(r);if(s(r)&&s(r.type)&&"extraMarker"===r.type)return g.isLoaded()||O.error(D+"The ExtraMarkers Plugin is not loaded."),new L.ExtraMarkers.icon(r);if(s(r)&&s(r.type)&&"div"===r.type)return new L.divIcon(r);if(s(r)&&s(r.type)&&"dom"===r.type){y.isLoaded()||O.error(D+"The DomMarkers Plugin is not loaded.");var n=e.isFunction(r.getMarkerScope)?r.getMarkerScope().$new():t,a=o(r.template)(n),i=e.copy(r);return i.ngElement=a,i.element=a[0],e.isFunction(r.getMarkerScope)&&(i.scope=n),new L.DomMarkers.icon(i)}if(s(r)&&s(r.type)&&"icon"===r.type)return r.icon;return s(r)&&s(r.iconUrl)?new L.Icon(r):new L.Icon.Default({iconUrl:"data:image/png;base64,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",shadowUrl:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAAC5ElEQVRYw+2YW4/TMBCF45S0S1luXZCABy5CgLQgwf//S4BYBLTdJLax0fFqmB07nnQfEGqkIydpVH85M+NLjPe++dcPc4Q8Qh4hj5D/AaQJx6H/4TMwB0PeBNwU7EGQAmAtsNfAzoZkgIa0ZgLMa4Aj6CxIAsjhjOCoL5z7Glg1JAOkaicgvQBXuncwJAWjksLtBTWZe04CnYRktUGdilALppZBOgHGZcBzL6OClABvMSVIzyBjazOgrvACf1ydC5mguqAVg6RhdkSWQFj2uxfaq/BrIZOLEWgZdALIDvcMcZLD8ZbLC9de4yR1sYMi4G20S4Q/PWeJYxTOZn5zJXANZHIxAd4JWhPIloTJZhzMQduM89WQ3MUVAE/RnhAXpTycqys3NZALOBbB7kFrgLesQl2h45Fcj8L1tTSohUwuxhy8H/Qg6K7gIs+3kkaigQCOcyEXCHN07wyQazhrmIulvKMQAwMcmLNqyCVyMAI+BuxSMeTk3OPikLY2J1uE+VHQk6ANrhds+tNARqBeaGc72cK550FP4WhXmFmcMGhTwAR1ifOe3EvPqIegFmF+C8gVy0OfAaWQPMR7gF1OQKqGoBjq90HPMP01BUjPOqGFksC4emE48tWQAH0YmvOgF3DST6xieJgHAWxPAHMuNhrImIdvoNOKNWIOcE+UXE0pYAnkX6uhWsgVXDxHdTfCmrEEmMB2zMFimLVOtiiajxiGWrbU52EeCdyOwPEQD8LqyPH9Ti2kgYMf4OhSKB7qYILbBv3CuVTJ11Y80oaseiMWOONc/Y7kJYe0xL2f0BaiFTxknHO5HaMGMublKwxFGzYdWsBF174H/QDknhTHmHHN39iWFnkZx8lPyM8WHfYELmlLKtgWNmFNzQcC1b47gJ4hL19i7o65dhH0Negbca8vONZoP7doIeOC9zXm8RjuL0Gf4d4OYaU5ljo3GYiqzrWQHfJxA6ALhDpVKv9qYeZA8eM3EhfPSCmpuD0AAAAASUVORK5CYII=",imagePath:" ",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]})},H=function(e){s(w[e])&&delete w[e]},S=function(e){e.options.icon.options.ngElement&&e.options.icon.options.ngElement.remove(),e.options.icon.options.scope&&e.options.icon.options.scope.$destroy()},x=function(e,t,r){if(e.closePopup(),e.options.icon&&e.options.icon.options&&"dom"===e.options.icon.options.type&&S(e),s(r)&&s(r.overlays))for(var n in r.overlays)if((r.overlays[n]instanceof L.LayerGroup||r.overlays[n]instanceof L.FeatureGroup)&&r.overlays[n].hasLayer(e))return void r.overlays[n].removeLayer(e);if(s(w))for(var a in w)w[a].hasLayer(e)&&w[a].removeLayer(e);t.hasLayer(e)&&t.removeLayer(e)},B=function(e,t){var r=e._popup._container.offsetHeight,n=new L.Point(e._popup._containerLeft,-r-e._popup._containerBottom);null!==t.layerPointToContainerPoint(n)&&e._popup._adjustPan()},T=function(e,t){o(e._popup._contentNode)(t)},z=function e(t,n,a){(t._popup._contentNode.innerText||t._popup._contentNode.textContent).length<1&&r(function(){e(t,n,a)});var o=t._popup._contentNode.offsetWidth;return t._popup._updateLayout(),t._popup._updatePosition(),t._popup.options.autoPan&&B(t,a),o},F=function(n,a,o){var i=e.isFunction(a.getMessageScope)?a.getMessageScope():t;if(!s(a.compileMessage)||a.compileMessage){if(!s(n._popup)||!s(n._popup._contentNode))return O.error(D+"Popup is invalid or does not have any content."),!1;r(function(){T(n,i),z(n,a,o)})}},I=function(r,n){var a=e.isFunction(n.getMessageScope)?n.getMessageScope():t,i=e.isFunction(n.getLabelScope)?n.getLabelScope():a,l=!s(n.compileMessage)||n.compileMessage;s(n.label)&&(s(n.label.options)&&!0===n.label.options.noHide&&r.showLabel(),l&&s(r.label)&&o(r.label._container)(i))},j=function(t,r,n,a,o,i,l){if(s(r)){if(!C.validateCoords(t))return O.warn("There are problems with lat-lng data, please verify your marker model"),void x(n,l,i);var c=t===r;if(s(t.iconAngle)&&r.iconAngle!==t.iconAngle&&n.setIconAngle(t.iconAngle),h(t.layer)||h(r.layer)&&(s(i.overlays[r.layer])&&i.overlays[r.layer].hasLayer(n)&&(i.overlays[r.layer].removeLayer(n),n.closePopup()),l.hasLayer(n)||l.addLayer(n)),(b(t.opacity)||b(parseFloat(t.opacity)))&&t.opacity!==r.opacity&&n.setOpacity(t.opacity),h(t.layer)&&r.layer!==t.layer){if(h(r.layer)&&s(i.overlays[r.layer])&&i.overlays[r.layer].hasLayer(n)&&i.overlays[r.layer].removeLayer(n),n.closePopup(),l.hasLayer(n)&&l.removeLayer(n),!s(i.overlays[t.layer]))return void O.error(D+"You must use a name of an existing layer");var u=i.overlays[t.layer];if(!(u instanceof L.LayerGroup||u instanceof L.FeatureGroup))return void O.error(D+'A marker can only be added to a layer of type "group" or "featureGroup"');u.addLayer(n),l.hasLayer(n)&&!0===t.focus&&n.openPopup()}if(!0!==t.draggable&&!0===r.draggable&&s(n.dragging)&&n.dragging.disable(),!0===t.draggable&&!0!==r.draggable&&(n.dragging?n.dragging.enable():L.Handler.MarkerDrag&&(n.dragging=new L.Handler.MarkerDrag(n),n.options.draggable=!0,n.dragging.enable())),k(t.icon)||k(r.icon)&&("dom"===r.icon.type&&S(n),n.setIcon(E()),n.closePopup(),n.unbindPopup(),h(t.message)&&n.bindPopup(t.message,t.popupOptions)),k(t.icon)&&k(r.icon)&&!e.equals(t.icon,r.icon)){var f=!1;n.dragging&&(f=n.dragging.enabled()),"dom"===r.icon.type&&S(n),n.setIcon(E(t.icon)),f&&n.dragging.enable(),n.closePopup(),n.unbindPopup(),h(t.message)&&(n.bindPopup(t.message,t.popupOptions),l.hasLayer(n)&&!0===t.focus&&n.openPopup())}!h(t.message)&&h(r.message)&&(n.closePopup(),n.unbindPopup()),s(t.label)&&s(t.label.message)?"label"in r&&"message"in r.label&&!e.equals(t.label.message,r.label.message)?n.setTooltipContent(t.label.message):!e.isFunction(n.getLabel)||e.isFunction(n.getLabel)&&!s(n.getLabel())?(n.bindTooltip(t.label.message,t.label.options),I(n,t)):I(n,t):"label"in t&&!("message"in t.label)||e.isFunction(n.unbindTooltip)&&n.unbindTooltip(),h(t.message)&&!h(r.message)&&n.bindPopup(t.message,t.popupOptions),h(t.message)&&h(r.message)&&t.message!==r.message&&n.setPopupContent(t.message);var d=!1;!0!==t.focus&&!0===r.focus&&(n.closePopup(),d=!0),(!0===t.focus&&(!s(r.focus)||!1===r.focus)||c&&!0===t.focus)&&(n.openPopup(),d=!0),r.zIndexOffset!==t.zIndexOffset&&n.setZIndexOffset(t.zIndexOffset);var p=n.getLatLng();h(t.layer)&&m.MarkerClusterPlugin.is(i.overlays[t.layer])?d?t.lat===r.lat&&t.lng===r.lng||(i.overlays[t.layer].removeLayer(n),n.setLatLng([t.lat,t.lng]),i.overlays[t.layer].addLayer(n)):p.lat!==t.lat||p.lng!==t.lng?(i.overlays[t.layer].removeLayer(n),n.setLatLng([t.lat,t.lng]),i.overlays[t.layer].addLayer(n)):t.lat!==r.lat||t.lng!==r.lng?(i.overlays[t.layer].removeLayer(n),n.setLatLng([t.lat,t.lng]),i.overlays[t.layer].addLayer(n)):k(t.icon)&&k(r.icon)&&!e.equals(t.icon,r.icon)&&(i.overlays[t.layer].removeLayer(n),i.overlays[t.layer].addLayer(n)):p.lat===t.lat&&p.lng===t.lng||n.setLatLng([t.lat,t.lng])}};return{resetMarkerGroup:H,resetMarkerGroups:function(){w={}},resetUnusedMarkerGroups:function(){for(var e in w)P(e)||H(e)},deleteMarker:x,manageOpenPopup:F,manageOpenLabel:I,createMarker:function(e){if(s(e)&&C.validateCoords(e)){var t=C.getCoords(e);if(s(t)){var r={icon:E(e.icon),title:s(e.title)?e.title:"",draggable:!!s(e.draggable)&&e.draggable,interactive:!s(e.interactive)||e.interactive,riseOnHover:!!s(e.riseOnHover)&&e.riseOnHover,zIndexOffset:s(e.zIndexOffset)?e.zIndexOffset:0,iconAngle:s(e.iconAngle)?e.iconAngle:0};for(var n in e)e.hasOwnProperty(n)&&!r.hasOwnProperty(n)&&(r[n]=e[n]);var a=new L.marker(t,r);return h(e.message)||a.unbindPopup(),a}O.error(D+"Unable to get coordinates from markerData.")}else O.error(D+"The marker definition is not valid.")},addMarkerToGroup:function(e,t,r,n){h(t)?u.isLoaded()?(s(w[t])||(w[t]=new L.MarkerClusterGroup(r),n.addLayer(w[t])),w[t].addLayer(e)):O.error(D+"The MarkerCluster plugin is not loaded."):O.error(D+"The marker group you have specified is invalid.")},listenMarkerEvents:function(e,t,r,n,a){e.on("popupopen",function(){v(r,function(){(s(e._popup)||s(e._popup._contentNode))&&(t.focus=!0,F(e,t,a))})}),e.on("popupclose",function(){v(r,function(){t.focus=!1})}),e.on("add",function(){v(r,function(){"label"in t&&I(e,t)})})},updateMarker:j,addMarkerWatcher:function(e,t,r,n,a,o){var i=m.getObjectArrayPath("markers."+t);A(r,i,o,function(t,r,o){if(!s(t))return x(e,a,n),void o();j(t,r,e,0,0,n,a)})},string:M,log:function(e,t){(t?console:O).debug(M(e))},getModelFromModels:function(e,t,r){if(s(e)){if(t)return r?e[r][t]:e[t];O.error(D+"marker id missing in getMarker")}},getLayerModels:function(e,t){if(s(e))return t?e[t]:e}}}]),e.module("ui-leaflet").factory("leafletPathsHelpers",["$rootScope","leafletLogger","leafletHelpers",function(e,t,r){function n(e){var t=e.filter(function(e){return u(e)});return t.length>0||0===e.length?t.map(function(e){return a(e)}):o(e)}function a(e){return s(e)?new L.LatLng(e[0],e[1]):new L.LatLng(e.lat,e.lng)}function o(e){return e.map(function(e){return n(e)})}function i(e,t){for(var r={},n=0;n0&&a(e[0].boundingbox)?l.resolve(e[0]):l.reject("[Nominatim] Invalid address")}),l.promise}}}]),e.module("ui-leaflet").directive("bounds",["leafletLogger","$timeout","$http","leafletHelpers","nominatimService","leafletBoundsHelpers",function(t,r,n,a,o,i){var l=t;return{restrict:"A",scope:!1,replace:!1,require:["leaflet"],link:function(t,n,s,c){var u=a.isDefined,f=i.createLeafletBounds,d=c[0].getLeafletScope(),p=c[0],g=a.errorHeader+" [Bounds] ",y=function(e){return 0===e._southWest.lat&&0===e._southWest.lng&&0===e._northEast.lat&&0===e._northEast.lng};p.getMap().then(function(n){d.$on("boundsChanged",function(t){var a=t.currentScope,o=n.getBounds();if(!y(o)&&!a.settingBoundsFromScope){a.settingBoundsFromLeaflet=!0;var i={northEast:{lat:o._northEast.lat,lng:o._northEast.lng},southWest:{lat:o._southWest.lat,lng:o._southWest.lng},options:o.options};e.equals(a.bounds,i)||(a.bounds=i),r(function(){a.settingBoundsFromLeaflet=!1})}});var a;d.$watch("bounds",function(e){if(l.debug("Bounds",e),!t.settingBoundsFromLeaflet){if(u(e.address)&&e.address!==a)return t.settingBoundsFromScope=!0,o.query(e.address,s.id).then(function(e){var t=e.boundingbox,r=[[t[0],t[2]],[t[1],t[3]]];n.fitBounds(r)},function(e){l.error(g+" "+e+".")}),a=e.address,void r(function(){t.settingBoundsFromScope=!1});var i=f(e);i&&!n.getBounds().equals(i)&&(t.settingBoundsFromScope=!0,n.fitBounds(i,e.options),r(function(){t.settingBoundsFromScope=!1}))}},!0)})}}}]);var t=["center","lfCenter"],r={};t.forEach(function(t){r[t]=["leafletLogger","$q","$location","$timeout","leafletMapDefaults","leafletHelpers","leafletBoundsHelpers","leafletMapEvents",function(r,n,a,o,i,l,s,c){var u,f=l.isDefined,d=l.isNumber,p=l.isSameCenterOnMap,g=l.safeApply,y=l.isValidCenter,v=s.isValidBounds,m=l.isUndefinedOrEmpty,h=l.errorHeader,b=r,L=function(e,t){return f(e)&&v(e)&&m(t)};return{restrict:"A",scope:!1,replace:!1,require:"leaflet",controller:function(){u=n.defer(),this.getCenter=function(){return u.promise}},link:function(r,n,l,v){var m=v.getLeafletScope(),k=m[t];v.getMap().then(function(r){var n=i.getDefaults(l.id);if(-1!==l[t].search("-"))return b.error(h+' The "center" variable can\'t use a "-" on its key name: "'+l[t]+'".'),void r.setView([n.center.lat,n.center.lng],n.center.zoom);if(L(m.bounds,k))r.fitBounds(s.createLeafletBounds(m.bounds),m.bounds.options),k=r.getCenter(),g(m,function(n){e.extend(n[t],{lat:r.getCenter().lat,lng:r.getCenter().lng,zoom:r.getZoom(),autoDiscover:!1})}),g(m,function(e){var t=r.getBounds();e.bounds={northEast:{lat:t._northEast.lat,lng:t._northEast.lng},southWest:{lat:t._southWest.lat,lng:t._southWest.lng}}});else{if(!f(k))return b.error(h+' The "center" property is not defined in the main scope'),void r.setView([n.center.lat,n.center.lng],n.center.zoom);f(k.lat)&&f(k.lng)||f(k.autoDiscover)||e.copy(n.center,k)}var v,w;if("yes"===l.urlHashCenter){var C=function(){var e,t=a.search(),r=l.urlHashParam?l.urlHashParam:"c";if(f(t[r])){var n=t[r].split(":");3===n.length&&(e={lat:parseFloat(n[0]),lng:parseFloat(n[1]),zoom:parseInt(n[2],10)})}return e};v=C(),m.$on("$locationChangeSuccess",function(n){var a=n.currentScope,o=C();f(o)&&!p(o,r)&&e.extend(a[t],{lat:o.lat,lng:o.lng,zoom:o.zoom})})}m.$watch(t,function(t){if(!m.settingCenterFromLeaflet){if(f(v)&&(e.copy(v,t),v=void 0),y(t)||!0===t.autoDiscover)return!0===t.autoDiscover?(d(t.zoom)||r.setView([n.center.lat,n.center.lng],n.center.zoom),void(d(t.zoom)&&t.zoom>n.center.zoom?r.locate({setView:!0,maxZoom:t.zoom}):f(n.maxZoom)?r.locate({setView:!0,maxZoom:n.maxZoom}):r.locate({setView:!0}))):void(w&&p(t,r)||(m.settingCenterFromScope=!0,r.setView([t.lat,t.lng],t.zoom),c.notifyCenterChangedToBounds(m,r),o(function(){m.settingCenterFromScope=!1})));b.warn(h+" invalid 'center'")}},!0),r.whenReady(function(){w=!0}),r.on("moveend",function(){u.resolve(),c.notifyCenterUrlHashChanged(m,r,l,a.search()),p(k,r)||m.settingCenterFromScope||(m.settingCenterFromLeaflet=!0,g(m,function(n){m.settingCenterFromScope||e.extend(n[t],{lat:r.getCenter().lat,lng:r.getCenter().lng,zoom:r.getZoom(),autoDiscover:!1}),c.notifyCenterChangedToBounds(m,r),o(function(){m.settingCenterFromLeaflet=!1})}))}),!0===k.autoDiscover&&r.on("locationerror",function(){b.warn(h+" The Geolocation API is unauthorized on this page."),y(k)?(r.setView([k.lat,k.lng],k.zoom),c.notifyCenterChangedToBounds(m,r)):(r.setView([n.center.lat,n.center.lng],n.center.zoom),c.notifyCenterChangedToBounds(m,r))})})}}}]}),t.forEach(function(t){e.module("ui-leaflet").directive(t,r[t])}),e.module("ui-leaflet").directive("controls",["leafletLogger","leafletHelpers","leafletControlHelpers",function(e,t,r){var n=e;return{restrict:"A",scope:!1,replace:!1,require:"?^leaflet",link:function(e,a,o,i){if(i){var l=r.createControl,s=r.isValidControlType,c=i.getLeafletScope(),u=t.isDefined,f=t.isArray,d={},p=t.errorHeader+" [Controls] ";e.$on("$destroy",function(){r.destroyMapLayersControl(e.mapId)}),i.getMap().then(function(e){c.$watchCollection("controls",function(t){for(var r in d)u(t[r])||(e.hasControl(d[r])&&e.removeControl(d[r]),delete d[r]);for(var a in t){var o,i=u(t[a].type)?t[a].type:a;if(!s(i))return void n.error(p+" Invalid control type: "+i+".");if("custom"!==i)o=l(i,t[a]),e.addControl(o),d[a]=o;else{var c=t[a];if(f(c))for(var g=0;g=0?a.each(f.map.enable,function(e){-1===t.indexOf(e)&&-1!==d.indexOf(e)&&t.push(e)}):o.warn("[AngularJS - Leaflet] event-broadcast.map.enable must be an object check your model.")):o.warn("[AngularJS - Leaflet] event-broadcast.map must be an object check your model."):t=d,p(e,i.id,t,"eventName",u,r)})}}}]),e.module("ui-leaflet").directive("geojson",["$timeout","leafletLogger","leafletData","leafletHelpers","leafletWatchHelpers","leafletDirectiveControlsHelpers","leafletIterators","leafletGeoJsonEvents",function(t,r,n,a,o,i,l,s){var c=o.maybeWatch,u=a.watchOptions,f=i.extend,d=a,p=l,g={changeFromDirective:!1};return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(t,r,o,i){var l=a.isDefined,y=i.getLeafletScope(),v={},m=!1;i.getMap().then(function(t){var r;r=y.watchOptions&&y.watchOptions.geojson?y.watchOptions.geojson:u;var a=function(t,r){return e.isFunction(t.onEachFeature)?t.onEachFeature:function(e,n){l(e.properties)&&l(e.properties.description)&&n.bindTooltip(e.properties.description),s.bindEvents(o.id,n,null,e,y,r,{resetStyleOnMouseout:t.resetStyleOnMouseout,mapId:o.id})}},i=d.isDefined(o.geojsonNested)&&d.isTruthy(o.geojsonNested),h=function(){if(v){var e=function(e){l(e)&&t.hasLayer(e)&&t.removeLayer(e)};i?p.each(v,function(t){e(t)}):e(v)}},b=function(e,r){if(l(e)&&l(e.data)){var i=a(e,r);l(e.options)||d.modelChangeInDirective(g,"changeFromDirective",function(){e.options={style:e.style,filter:e.filter,onEachFeature:i,pointToLayer:e.pointToLayer}});var s=L.geoJson(e.data,e.options);r&&d.isString(r)?v[r]=s:v=s,s.addTo(t),m||(m=!0,n.setGeoJSON(v,o.id))}else n.setGeoJSON(void 0,o.id)},k=function(e){if(h(),i){if(!e||!Object.keys(e).length)return;p.each(e,function(e,t){b(e,t)})}else b(e)};f(o.id,"geojson",k,h),c(y,"geojson",r,function(e){g.changeFromDirective||k(e)})})}}}]),e.module("ui-leaflet").directive("layercontrol",["$filter","leafletLogger","leafletData","leafletHelpers",function(t,r,n,a){var o=r;return{restrict:"E",scope:{icons:"=?",autoHideOpacity:"=?",showGroups:"=?",title:"@",baseTitle:"@",overlaysTitle:"@"},replace:!0,transclude:!1,require:"^leaflet",controller:["$scope","$element","$sce",function(t,r,i){o.debug("[Angular Directive - Layers] layers",t,r);var l=a.safeApply,s=a.isDefined;e.extend(t,{baselayer:"",oldGroup:"",layerProperties:{},groupProperties:{},rangeIsSupported:a.rangeIsSupported(),changeBaseLayer:function(e,r){a.safeApply(t,function(r){r.baselayer=e,n.getMap().then(function(a){n.getLayers().then(function(n){if(!a.hasLayer(n.baselayers[e])){for(var o in r.layers.baselayers)r.layers.baselayers[o].icon=r.icons.unradio,a.hasLayer(n.baselayers[o])&&a.removeLayer(n.baselayers[o]);a.addLayer(n.baselayers[e]),r.layers.baselayers[e].icon=t.icons.radio}})})}),r.preventDefault()},moveLayer:function(e,r,n){var a=Object.keys(t.layers.baselayers).length;if(r>=1+a&&r<=t.overlaysArray.length+a){var o;for(var i in t.layers.overlays)if(t.layers.overlays[i].index===r){o=t.layers.overlays[i];break}o&&l(t,function(){o.index=e.index,e.index=r})}n.stopPropagation(),n.preventDefault()},initIndex:function(e,r){var n=Object.keys(t.layers.baselayers).length;e.index=s(e.index)?e.index:r+n+1},initGroup:function(e){t.groupProperties[e]=t.groupProperties[e]?t.groupProperties[e]:{}},toggleOpacity:function(e,r){if(r.visible){if(t.autoHideOpacity&&!t.layerProperties[r.name].opacityControl)for(var n in t.layerProperties)t.layerProperties[n].opacityControl=!1;t.layerProperties[r.name].opacityControl=!t.layerProperties[r.name].opacityControl}e.stopPropagation(),e.preventDefault()},toggleLegend:function(e){t.layerProperties[e.name].showLegend=!t.layerProperties[e.name].showLegend},showLegend:function(e){return e.legend&&t.layerProperties[e.name].showLegend},unsafeHTML:function(e){return i.trustAsHtml(e)},getOpacityIcon:function(e){return e.visible&&t.layerProperties[e.name].opacityControl?t.icons.close:t.icons.open},getGroupIcon:function(e){return e.visible?t.icons.check:t.icons.uncheck},changeGroupVisibility:function(e){if(s(t.groupProperties[e])){var r=t.groupProperties[e].visible;for(var n in t.layers.overlays){var a=t.layers.overlays[n];a.group===e&&(a.visible=r)}}}});var c=r.get(0);L.Browser.touch?L.DomEvent.on(c,"click",L.DomEvent.stopPropagation):(L.DomEvent.disableClickPropagation(c),L.DomEvent.on(c,"mousewheel",L.DomEvent.stopPropagation))}],template:'

{{ title }}

{{ baseTitle }}
{{ overlaysTitle }}
Range is not supported in this browser
',link:function(t,r,o,i){var l=a.isDefined,s=i.getLeafletScope(),c=s.layers;t.$watch("icons",function(){var r={uncheck:"fa fa-square-o",check:"fa fa-check-square-o",radio:"fa fa-dot-circle-o",unradio:"fa fa-circle-o",up:"fa fa-angle-up",down:"fa fa-angle-down",open:"fa fa-angle-double-down",close:"fa fa-angle-double-up",toggleLegend:"fa fa-pencil-square-o"};l(t.icons)?(e.extend(r,t.icons),e.extend(t.icons,r)):t.icons=r}),o.order=!l(o.order)||"normal"!==o.order&&"reverse"!==o.order?"normal":o.order,t.order="normal"===o.order,t.orderNumber="normal"===o.order?-1:1,t.layers=c,i.getMap().then(function(e){s.$watch("layers.baselayers",function(r){var a={};n.getLayers().then(function(n){var o;for(o in r){var i=r[o];i.icon=t.icons[e.hasLayer(n.baselayers[o])?"radio":"unradio"],a[o]=i}t.baselayersArray=a})}),s.$watch("layers.overlays",function(e){var r=[],a={};n.getLayers().then(function(){var n;for(n in e){var o=e[n];o.icon=t.icons[o.visible?"check":"uncheck"],r.push(o),l(t.layerProperties[o.name])||(l(o.layerOptions.opacity)&&(o.layerOptions.opacity=1),t.layerProperties[o.name]={opacityControl:!1,showLegend:!0,layerOptions:o.layerOptions}),l(o.group)&&(l(t.groupProperties[o.group])||(t.groupProperties[o.group]={visible:!1}),a[o.group]=l(a[o.group])?a[o.group]:{count:0,visibles:0},a[o.group].count++,o.visible&&a[o.group].visibles++)}for(n in a)t.groupProperties[n].visible=a[n].visibles===a[n].count;t.overlaysArray=r})},!0)})}}}]),e.module("ui-leaflet").directive("layers",["leafletLogger","$q","leafletData","leafletHelpers","leafletLayerHelpers","leafletControlHelpers",function(t,r,n,a,o,i){return{restrict:"A",scope:!1,replace:!1,require:"leaflet",controller:["$scope",function(e){e._leafletLayers=r.defer(),this.getLayers=function(){return e._leafletLayers.promise}}],link:function(t,r,l,s){var c=a.isDefined,u={},f=s.getLeafletScope(),d=f.layers,p=o.createLayer,g=o.safeAddLayer,y=o.safeRemoveLayer,v=o.changeOpacityListener,m=i.updateLayersControl,h=!1;t.$on("$destroy",function(){i.destroyMapLayersControl(t.mapId)}),s.getMap().then(function(r){t._leafletLayers.resolve(u),n.setLayers(u,l.id),u.baselayers={},u.overlays={};var a=l.id,o=!1;for(var i in d.baselayers){var s=p(d.baselayers[i]);c(s)?(u.baselayers[i]=s,!0===d.baselayers[i].top&&(g(r,u.baselayers[i]),o=!0)):delete d.baselayers[i]}!o&&Object.keys(u.baselayers).length>0&&g(r,u.baselayers[Object.keys(d.baselayers)[0]]);for(i in d.overlays){d.overlays[i].type;var b=p(d.overlays[i]);c(b)?(u.overlays[i]=b,!0===d.overlays[i].visible&&g(r,u.overlays[i])):delete d.overlays[i]}f.$watch("layers.baselayers",function(t,n){if(e.equals(t,n))return h=m(r,a,h,t,d.overlays,u),!0;for(var o in u.baselayers)c(t[o])&&!t[o].doRefresh||(r.hasLayer(u.baselayers[o])&&r.removeLayer(u.baselayers[o]),delete u.baselayers[o],t[o]&&t[o].doRefresh&&(t[o].doRefresh=!1));for(var i in t)if(c(u.baselayers[i]))!0!==t[i].top||r.hasLayer(u.baselayers[i])?!1===t[i].top&&r.hasLayer(u.baselayers[i])&&r.removeLayer(u.baselayers[i]):g(r,u.baselayers[i]);else{var l=p(t[i]);c(l)&&(u.baselayers[i]=l,!0===t[i].top&&g(r,u.baselayers[i]))}var s=!1;for(var f in u.baselayers)if(r.hasLayer(u.baselayers[f])){s=!0;break}!s&&Object.keys(u.baselayers).length>0&&g(r,u.baselayers[Object.keys(u.baselayers)[0]]),h=m(r,a,h,t,d.overlays,u)},!0),f.$watch("layers.overlays",function(t,n){if(e.equals(t,n))return h=m(r,a,h,d.baselayers,t,u),!0;for(var o in u.overlays)if(!c(t[o])||t[o].doRefresh){if(r.hasLayer(u.overlays[o])){var i=c(t[o])?t[o].layerOptions:null;y(r,u.overlays[o],i)}delete u.overlays[o],t[o]&&t[o].doRefresh&&(t[o].doRefresh=!1)}for(var l in t){if(c(u.overlays[l])){t[l].visible&&!r.hasLayer(u.overlays[l])?g(r,u.overlays[l]):!1===t[l].visible&&r.hasLayer(u.overlays[l])&&y(r,u.overlays[l],t[l].layerOptions);var s=u.overlays[l];r.hasLayer(u.overlays[l])&&(t[l].layerOptions.opacity!==n[l].layerOptions.opacity&&(c(s.setOpacity)&&s.setOpacity(t[l].layerOptions.opacity),c(s.getLayers)&&c(s.eachLayer)&&s.eachLayer(v(t[l].layerOptions.opacity))),c(t[l].index)&&s.setZIndex&&t[l].index!==n[l].index&&s.setZIndex(t[l].index))}else{var f=p(t[l]);if(!c(f))continue;u.overlays[l]=f,!0===t[l].visible&&g(r,u.overlays[l]),c(t[l].index)&&u.overlays[l].setZIndex&&u.overlays[l].setZIndex(t[l].index)}t[l].visible&&r._loaded&&t[l].data&&"heatmap"===t[l].type&&(u.overlays[l].setData(t[l].data),u.overlays[l].update())}h=m(r,a,h,d.baselayers,t,u)},!0)})}}}]),e.module("ui-leaflet").directive("legend",["leafletLogger","$http","$timeout","leafletHelpers","leafletLegendHelpers",function(e,t,r,n,a){var o=e,i=n.errorHeader+" [Legend] ";return{restrict:"A",scope:!1,replace:!1,require:"leaflet",transclude:!1,link:function(e,t,r,l){var s,c,u,f,d=n.isArray,p=n.isString,g=n.isDefined,y=n.isFunction,v=l.getLeafletScope(),m=v.legend;v.$watch("legend",function(e){g(e)&&(s=e.legendClass?e.legendClass:"legend",c=e.position||"bottomright",f=e.type||"arcgis")},!0);var h=function(e,t,r){t&&t.layers&&t.layers.length>0&&(g(u)?a.updateLegend(u.getContainer(),t,f,r):((u=L.control({position:c})).onAdd=a.getOnAddLegend(t,s,f,r),u.addTo(e)),g(m.loadedData)&&y(m.loadedData)&&m.loadedData())};l.getMap().then(function(e){v.$watch("legend",function(t){g(t)?g(t.url)||"arcgis"!==f||d(t.colors)&&d(t.labels)&&t.colors.length===t.labels.length?g(t.url)?o.info(i+" loading legend service."):(g(u)&&(u.remove(),u=null),u=L.control({position:c}),"arcgis"===f&&(u.onAdd=a.getOnAddArrayLegend(t,s)),u.addTo(e)):o.warn(i+" legend.colors and legend.labels must be set."):g(u)&&(u.remove(),u=null)}),v.$watch("legend.url",function(t){if(g(t))if(d(t)||p(t))for(var n,l=p(t)?[t]:t,s=0;s0?n.layers=n.layers.concat(s.data.layers):n=s.data,r===l.length-1&&h(e,n,t)}}(s)).catch(function(e){o.warn(i+" legend.url not loaded.",e)});else o.warn(i+" legend.url must be an array or string.")}),v.$watch("legend.legendData",function(t){o.debug("legendData",t),!g(v.legend.url)&&g(t)&&h(e,t)},!0)})}}}]),e.module("ui-leaflet").directive("markers",["leafletLogger","$rootScope","$q","leafletData","leafletHelpers","leafletMapDefaults","leafletMarkersHelpers","leafletMarkerEvents","leafletIterators","leafletWatchHelpers","leafletDirectiveControlsHelpers",function(t,r,n,a,o,i,l,s,c,u,f){var d=o.isDefined,p=o.errorHeader,g=o,y=o.isString,v=l.addMarkerWatcher,m=l.updateMarker,h=l.listenMarkerEvents,b=l.addMarkerToGroup,k=l.createMarker,w=l.deleteMarker,C=l.getModelFromModels,D=l.getLayerModels,A=l.resetUnusedMarkerGroups,O=c,M=o.watchOptions,P=u.maybeWatch,E=f.extend,H=t,S={changeFromDirective:!1},x=function(e,t,r){if(Object.keys(e).length){if(r&&y(r)){if(!e[r]||!Object.keys(e[r]).length)return;return e[r][t]}return e[t]}},B=function(e,t,r,n){return n&&y(n)?(d(t[n])||(t[n]={}),t[n][r]=e):t[r]=e,e},T=function(e,t,r,n,a,o){if(!y(e))return H.error(p+" A layername must be a string"),!1;if(!d(t))return H.error(p+" You must add layers to the directive if the markers are going to use this functionality."),!1;if(!d(t.overlays)||!d(t.overlays[e]))return H.error(p+' A marker can only be added to a layer of type "group"'),!1;var i=t.overlays[e];return i instanceof L.LayerGroup||i instanceof L.FeatureGroup?(i.addLayer(n),null===a&&o.hasLayer(n)&&!0===r.focus&&n.openPopup(),!0):(H.error(p+' Adding a marker to an overlay needs a overlay of the type "group" or "featureGroup"'),!1)},z=function(e,t,r,n,a,o,i,l,c,u){O.each(t,function(t,f){if(!u[f])if(-1===f.search("-")){var y=g.getObjectDotPath(c?[c,f]:[f]),L=x(o,f,c);g.modelChangeInDirective(S,"changeFromDirective",function(){if(d(L)){var u=C(r,f,c);m(t,u,L,y,i,a,n)}else{var g=k(t),w=(t?t.layer:void 0)||c;if(!d(g))return void H.error(p+" Received invalid data on the marker "+f+".");if(d(t.message)&&(H.debug("Marker message",t.message),g.bindPopup(t.message,t.popupOptions)),d(t.group)){var D=d(t.groupOption)?t.groupOption:null;b(g,t.group,D,n)}if(d(t.label)&&d(t.label.message)&&g.bindTooltip(t.label.message,t.label.options),d(t)&&(d(t.layer)||d(c))){if(!T(w,a,t,g,l.individual.type,n))return}else d(t.group)||(n.addLayer(g),null===l.individual.type&&!0===t.focus&&g.openPopup());B(g,o,f,c),null!==l.individual.type&&v(g,y,i,a,n,l.individual),h(g,t,i,l.individual.type,n),s.bindEvents(e,g,y,t,i,w)}})}else H.error('The marker can\'t use a "-" on his key name: "'+f+'".')})},F=function(t,r,n,a,o){var i,l,s=!1,c=!1,u=d(r);for(var f in n)s||(H.debug(p+"[markers] destroy: "),s=!0),u&&(l=t[f],i=r[f],c=a&&e.equals(l,i)),d(t)&&Object.keys(t).length&&d(t[f])&&Object.keys(t[f]).length&&!c||o&&g.isFunction(o)&&o(l,i,f)},I=function(e,t,r,n,a){F(e,t,r,!1,function(e,t,o){H.debug(p+"[marker] is deleting marker: "+o),w(r[o],n,a),delete r[o]})},j=function(e,t,r){var n={};return F(e,t,r,!0,function(e,t,r){H.debug(p+"[marker] is already rendered, marker: "+r),n[r]=e}),n};return{restrict:"A",scope:!1,replace:!1,require:["leaflet","?layers"],link:function(e,t,r,o){var i=o[0],l=i.getLeafletScope();i.getMap().then(function(t){var i,s={};i=d(o[1])?o[1].getLayers:function(){var e=n.defer();return e.resolve(),e.promise};var c;c=l.watchOptions&&l.watchOptions.markers?l.watchOptions.markers:M;var u=d(r.markersNested)&&g.isTruthy(r.markersNested);i().then(function(n){var o=function(e,r){A(),u?O.each(e,function(e,a){var o=D(r,a);I(e,o,s[a],t,n)}):I(e,r,s,t,n)},i=function(e,a){o(e,a);var i=null;u?O.each(e,function(o,u){var f=D(a,u),d=D(e,u);i=j(d,f,s[u]),z(r.id,o,a,t,n,s,l,c,u,i)}):(i=j(e,a,s),z(r.id,e,a,t,n,s,l,c,void 0,i))};E(r.id,"markers",i,o),a.setMarkers(s,r.id),P(l,"markers",c,function(e,t){S.changeFromDirective||i(e,t)}),e.$on("$destroy",function(){I(l.markers,{},s,t,n)})})})}}}]),e.module("ui-leaflet").directive("maxbounds",["leafletLogger","leafletMapDefaults","leafletBoundsHelpers","leafletHelpers",function(e,t,r,n){return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(t,a,o,i){var l=i.getLeafletScope(),s=r.isValidBounds,c=n.isNumber;i.getMap().then(function(t){l.$watch("maxbounds",function(n){if(s(n)){var a=r.createLeafletBounds(n);c(n.pad)&&(a=a.pad(n.pad)),t.setMaxBounds(a),o.center||o.lfCenter||(e.debug("Fitting Bounds"),e.debug(a),t.fitBounds(a))}else t.setMaxBounds()})})}}}]),e.module("ui-leaflet").directive("paths",["leafletLogger","$q","leafletData","leafletMapDefaults","leafletHelpers","leafletPathsHelpers","leafletPathEvents","leafletWatchHelpers",function(e,t,r,n,a,o,i,l){var s=e;return{restrict:"A",scope:!1,replace:!1,require:["leaflet","?layers"],link:function(e,c,u,f){var d=f[0],p=a.isDefined,g=a.isString,y=d.getLeafletScope(),v=y.paths,m=o.createPath,h=i.bindPathEvents,b=o.setPathOptions,k=l.maybeWatch;d.getMap().then(function(e){var a,o=n.getDefaults(u.id);if(a=p(f[1])?f[1].getLayers:function(){var e=t.defer();return e.resolve(),e.promise},p(v)){var i,l={type:"watchCollection",individual:{type:"watchDeep"}};i=y.watchOptions&&y.watchOptions.paths?y.watchOptions.paths:l,a().then(function(t){var n={};r.setPaths(n,u.id);var a=function(r,n,a){k(y,'paths["'+n+'"]',a,function(n,a,o){if(!p(n)){if(p(a.layer))for(var i in t.overlays)t.overlays[i].removeLayer(r);return e.removeLayer(r),void o()}b(r,n.type,n)})},l=function(t){for(var r in n)p(t[r])||(e.removeLayer(n[r]),delete n[r])},c=function(r){l(r);for(var c in r)if(0!==c.search("\\$"))if(-1===c.search("-")){if(!p(n[c])){var f=r[c],d=m(c,r[c],o);if(p(d)&&p(f.message)&&d.bindPopup(f.message,f.popupOptions),p(f.label)&&p(f.label.message)&&d.bindTooltip(f.label.message,f.label.options),p(f)&&p(f.layer)){if(!g(f.layer)){s.error("[AngularJS - Leaflet] A layername must be a string");continue}if(!p(t)){s.error("[AngularJS - Leaflet] You must add layers to the directive if the markers are going to use this functionality.");continue}if(!p(t.overlays)||!p(t.overlays[f.layer])){s.error('[AngularJS - Leaflet] A path can only be added to a layer of type "group"');continue}var v=t.overlays[f.layer];if(!(v instanceof L.LayerGroup||v instanceof L.FeatureGroup)){s.error('[AngularJS - Leaflet] Adding a path to an overlay needs a overlay of the type "group" or "featureGroup"');continue}n[c]=d,v.addLayer(d),null!==i.individual.type?a(d,c,i.individual):b(d,f.type,f)}else p(d)&&(n[c]=d,e.addLayer(d),null!==i.individual.type?a(d,c,i.individual):b(d,f.type,f));h(u.id,d,c,f,y)}}else s.error('[AngularJS - Leaflet] The path name "'+c+'" is not valid. It must not include "-" and a number.')};k(y,"paths",i,function(e){c(e)})})}})}}}]),e.module("ui-leaflet").directive("tiles",["leafletLogger","leafletData","leafletMapDefaults","leafletHelpers",function(t,r,n,a){var o=t;return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(t,i,l,s){var c=a.isDefined,u=s.getLeafletScope(),f=u.tiles;c(f)&&c(f.url)?s.getMap().then(function(t){var a,o=n.getDefaults(l.id);u.$watch("tiles",function(n){var i=o.tileLayerOptions,s=o.tileLayer;if(c(n.url)||!c(a))return c(a)?c(n.url)&&c(n.options)&&!e.equals(n.options,i)?(t.removeLayer(a),i=o.tileLayerOptions,e.copy(n.options,i),s=n.url,(a=L.tileLayer(s,i)).addTo(t),void r.setTiles(a,l.id)):void(c(n.url)&&a.setUrl(n.url)):(c(n.options)&&e.copy(n.options,i),c(n.url)&&(s=n.url),(a=L.tileLayer(s,i)).addTo(t),void r.setTiles(a,l.id));t.removeLayer(a)},!0)}):o.warn("[AngularJS - Leaflet] The 'tiles' definition doesn't have the 'url' property.")}}}]),e.module("ui-leaflet").directive("watchOptions",["$log","$rootScope","$q","leafletData","leafletHelpers",function(t,r,n,a,o){var i=o.isDefined,l=o.errorHeader,s=o.isObject,c=t;return{restrict:"A",scope:!1,replace:!1,require:["leaflet"],link:function(t,r,n,a){var o=a[0].getLeafletScope(),u=function(e){return"watch"===e||"watchCollection"===e||"watchDeep"===e||null===e};i(o.watchOptions)&&s(o.watchOptions)&&e.forEach(["markers","geojson","paths"],function(e){i(o.watchOptions[e])&&(u(o.watchOptions[e].type)||c.error(l+" watchOptions."+e+".type is not a valid type."),i(o.watchOptions[e].individual)?u(o.watchOptions[e].individual.type)||c.error(l+" watchOptions."+e+".individual.type is not a valid type."):c.error(l+" watchOptions."+e+".type.individual must be defined."))})}}}]),e.module("ui-leaflet").factory("leafletEventsHelpersFactory",["$rootScope","$q","leafletLogger","leafletHelpers",function(t,r,n,a){var o=a.safeApply,i=a.isDefined,l=a.isObject,s=a.isArray,c=a.errorHeader,u=n,f=function(e,t){this.rootBroadcastName=e,u.debug("leafletEventsHelpersFactory: lObjectType: "+t+"rootBroadcastName: "+e),this.lObjectType=t};return f.prototype.getAvailableEvents=function(){return[]},f.prototype.genDispatchEvent=function(e,t,r,n,a,o,i,l,s){var c=this;return(e=e||"")&&(e="."+e),function(f){var d=c.rootBroadcastName+e+"."+t;u.debug(d),c.fire(n,d,r,f,f.target||a,i,o,l,s)}},f.prototype.fire=function(r,n,a,l,s,c,u,f,d){o(r,function(){var o={leafletEvent:l,leafletObject:s,modelName:u,model:c};i(f)&&e.extend(o,{layerName:f}),"emit"===a?r.$emit(n,o):t.$broadcast(n,o)})},f.prototype.bindEvents=function(e,t,r,n,a,o,f){var d=[],p="emit",g=this;if(i(a.eventBroadcast))if(l(a.eventBroadcast))if(i(a.eventBroadcast[g.lObjectType]))if(l(a.eventBroadcast[g.lObjectType])){if(i(a.eventBroadcast[this.lObjectType].logic)){var y=a.eventBroadcast[g.lObjectType].logic;"emit"!==y&&"broadcast"!==y?u.warn(c+"Available event propagation logic are: 'emit' or 'broadcast'."):p=y}var v=!1,m=!1;i(a.eventBroadcast[g.lObjectType].enable)&&s(a.eventBroadcast[g.lObjectType].enable)&&(v=!0),i(a.eventBroadcast[g.lObjectType].disable)&&s(a.eventBroadcast[g.lObjectType].disable)&&(m=!0),v&&m?u.warn(c+"can not enable and disable events at the same time"):v||m?v?a.eventBroadcast[this.lObjectType].enable.forEach(function(e){-1!==d.indexOf(e)?u.warn(c+"This event "+e+" is already enabled"):-1===g.getAvailableEvents().indexOf(e)?u.warn(c+"This event "+e+" does not exist"):d.push(e)}):(d=this.getAvailableEvents(),a.eventBroadcast[g.lObjectType].disable.forEach(function(e){var t=d.indexOf(e);-1===t?u.warn(c+"This event "+e+" does not exist or has been already disabled"):d.splice(t,1)})):u.warn(c+"must enable or disable events")}else u.warn(c+"event-broadcast."+[g.lObjectType]+" must be an object check your model.");else d=this.getAvailableEvents();else u.error(c+"event-broadcast must be an object check your model.");else d=this.getAvailableEvents();return d.forEach(function(i){t.on(i,g.genDispatchEvent(e,i,p,a,t,r,n,o,f))}),p},f}]).service("leafletEventsHelpers",["leafletEventsHelpersFactory",function(e){return new e}]),e.module("ui-leaflet").factory("leafletGeoJsonEvents",["$rootScope","$q","leafletLogger","leafletHelpers","leafletEventsHelpersFactory","leafletData",function(e,t,r,n,a,o){var i=n.safeApply,l=a,s=function(){l.call(this,"leafletDirectiveGeoJson","geojson")};return s.prototype=new l,s.prototype.genDispatchEvent=function(t,r,n,a,s,c,u,f,d){var p=l.prototype.genDispatchEvent.call(this,t,r,n,a,s,c,u,f),g=this;return function(t){"mouseout"===r&&(d.resetStyleOnMouseout&&o.getGeoJSON(d.mapId).then(function(e){(f?e[f]:e).resetStyle(t.target)}),i(a,function(){e.$broadcast(g.rootBroadcastName+".mouseout",t)})),p(t)}},s.prototype.getAvailableEvents=function(){return["click","dblclick","mouseover","mouseout"]},new s}]),e.module("ui-leaflet").factory("leafletLabelEvents",["$rootScope","$q","leafletLogger","leafletHelpers","leafletEventsHelpersFactory",function(e,t,r,n,a){var o=n,i=a,l=function(){i.call(this,"leafletDirectiveLabel","markers")};return l.prototype=new i,l.prototype.genDispatchEvent=function(e,t,r,n,a,o,l,s){var c=o.replace("markers.","");return i.prototype.genDispatchEvent.call(this,e,t,r,n,a,c,l,s)},l.prototype.getAvailableEvents=function(){return["click","dblclick","mousedown","mouseover","mouseout","contextmenu"]},l.prototype.genEvents=function(e,t,r,n,a,i,l,s){var c=this,u=this.getAvailableEvents(),f=o.getObjectArrayPath("markers."+i);u.forEach(function(t){a.label.on(t,c.genDispatchEvent(e,t,r,n,a.label,f,l,s))})},l.prototype.bindEvents=function(e,t,r,n,a,o){},new l}]),e.module("ui-leaflet").factory("leafletMapEvents",["$rootScope","$q","leafletLogger","leafletHelpers","leafletEventsHelpers","leafletIterators",function(e,t,r,n,a,o){var i=n.isDefined,l=a.fire,s=function(e,t,n,a){return a&&(a+="."),function(o){var i="leafletDirectiveMap."+a+t;r.debug(i),l(e,i,n,o,o.target,e)}};return{getAvailableMapEvents:function(){return["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","contextmenu","focus","blur","preclick","load","unload","viewreset","movestart","move","moveend","dragstart","drag","dragend","zoomstart","zoomanim","zoomend","zoomlevelschange","resize","autopanstart","layeradd","layerremove","baselayerchange","overlayadd","overlayremove","locationfound","locationerror","popupopen","popupclose","draw:created","draw:edited","draw:deleted","draw:drawstart","draw:drawstop","draw:editstart","draw:editstop","draw:deletestart","draw:deletestop"]},genDispatchMapEvent:s,notifyCenterChangedToBounds:function(e){e.$broadcast("boundsChanged")},notifyCenterUrlHashChanged:function(e,t,r,n){if(i(r.urlHashCenter)){var a=t.getCenter(),o=a.lat.toFixed(4)+":"+a.lng.toFixed(4)+":"+t.getZoom();i(n.c)&&n.c===o||e.$emit("centerUrlHash",o)}},addEvents:function(e,t,r,n,a,i){o.each(r,function(r){var o={};o[n]=r,t||(t=e._container.id||""),e.on(r,s(a,r,i,t),o)})}}}]),e.module("ui-leaflet").factory("leafletMarkerEvents",["$rootScope","$q","leafletLogger","leafletHelpers","leafletEventsHelpersFactory","leafletLabelEvents",function(e,t,r,n,a,o){var i=n.safeApply,l=n.isDefined,s=o,c=a,u=function(){c.call(this,"leafletDirectiveMarker","markers")};return u.prototype=new c,u.prototype.genDispatchEvent=function(t,r,n,a,o,l,s,u){var f=c.prototype.genDispatchEvent.call(this,t,r,n,a,o,l,s,u);return function(t){"click"===r?i(a,function(){e.$broadcast("leafletDirectiveMarkersClick",l)}):"dragend"===r&&(i(a,function(){s.lat=o.getLatLng().lat,s.lng=o.getLatLng().lng}),s.message&&!0===s.focus&&o.openPopup()),f(t)}},u.prototype.getAvailableEvents=function(){return["click","dblclick","mousedown","mouseover","mouseout","contextmenu","dragstart","drag","dragend","move","remove","popupopen","popupclose","touchend","touchstart","touchmove","touchcancel","touchleave"]},u.prototype.bindEvents=function(e,t,r,n,a,o){var i=c.prototype.bindEvents.call(this,e,t,r,n,a,o);l(t.label)&&s.genEvents(e,r,i,a,t,n,o)},new u}]);var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};e.module("ui-leaflet").factory("leafletPathEvents",["$rootScope","$q","leafletLogger","leafletHelpers","leafletLabelEvents","leafletEventsHelpers",function(e,t,r,a,o,i){var l=a.isDefined,s=a.isObject,c=a.errorHeader,u=o,f=i.fire,d=r,p=function(e,t,r,n,a,o,i,l){return(e=e||"")&&(e="."+e),function(s){var c="leafletDirectivePath"+e+"."+t;d.debug(c),f(n,c,r,s,s.target||a,i,o,l)}},g=function(){return["click","dblclick","mousedown","mouseover","mouseout","contextmenu","add","remove","popupopen","popupclose"]};return{getAvailablePathEvents:g,bindPathEvents:function(e,t,r,a,o){var i,f,y=[],v="broadcast";if(l(o.eventBroadcast))if(s(o.eventBroadcast))if(l(o.eventBroadcast.path))if(s(o.eventBroadcast.paths))d.warn(c+"event-broadcast.path must be an object check your model.");else{void 0!==o.eventBroadcast.path.logic&&null!==o.eventBroadcast.path.logic&&("emit"!==o.eventBroadcast.path.logic&&"broadcast"!==o.eventBroadcast.path.logic?d.warn(c+"Available event propagation logic are: 'emit' or 'broadcast'."):"emit"===o.eventBroadcast.path.logic&&(v="emit"));var m=!1,h=!1;if(void 0!==o.eventBroadcast.path.enable&&null!==o.eventBroadcast.path.enable&&"object"===n(o.eventBroadcast.path.enable)&&(m=!0),void 0!==o.eventBroadcast.path.disable&&null!==o.eventBroadcast.path.disable&&"object"===n(o.eventBroadcast.path.disable)&&(h=!0),m&&h)d.warn(c+"can not enable and disable events at the same time");else if(m||h)if(m)for(i=0;i