{"version":3,"file":"openmap.js","names":["app","component","restrict","bindings","lat","lng","label","radius","staticMap","onMarkerDrag","onMarkerDrop","controller","$element","$timeout","ctrl","this","_init","map","marker","circle","defaultLatLng","startDrag","markerPosition","endDrag","drop","latLng","getLatLng","$event","setLatLng","$onInit","L","children","center","zoom","calcViewVal","dragging","scrollWheelZoom","touchZoom","tileLayer","maxZoom","attribution","addTo","control","scale","draggable","autoPan","bindPopup","addEventListener","$onChanges","changes","useDefault","viewVal","setView","lon","remove","currentValue","$onDestroy","removeEventListener","template"],"sources":["angular/component/openmap.js"],"mappings":"CAAA,WACI,aA+JAA,IAAIC,UAAU,UAAW,CACrBC,SAAU,IACVC,SAAU,CACNC,IAAK,KACLC,IAAK,KACLC,MAAO,KACPC,OAAQ,KAERC,UAAW,KAEXC,aAAc,KACdC,aAAc,MAElBC,WAAY,CAAC,WAAY,WA1KZ,SAAUC,EAAUC,GACjC,IAAIC,EAAOC,KACPC,GAAQ,EAERC,EAAM,KACNC,EAAS,KACTC,EAAS,KAETC,EACK,SADLA,GAEM,QAFNA,EAGO,2BA6EX,SAASC,IACLC,GACJ,CAEA,SAASC,IACLD,GAAe,EACnB,CAEA,SAASA,EAAeE,GACpBV,EAAKW,OAASP,EAAOQ,YACfF,EAC+B,mBAAtBV,EAAKJ,cACZI,EAAKJ,aAAa,CAAEiB,OAAQ,CAAEvB,IAAKU,EAAKW,OAAOrB,IAAKC,IAAKS,EAAKW,OAAOpB,OAExC,mBAAtBS,EAAKL,cACZK,EAAKL,aAAa,CAAEkB,OAAQ,CAAEvB,IAAKU,EAAKW,OAAOrB,IAAKC,IAAKS,EAAKW,OAAOpB,OAEvEc,GAAQA,EAAOS,UAAU,CAACd,EAAKW,OAAOrB,IAAKU,EAAKW,OAAOpB,KACjE,CA5FAS,EAAKW,OAAS,CAAC,EAGfX,EAAKe,QA2FL,WACIf,EAAKW,OAAS,CACVrB,IAAKU,EAAKV,KAAOgB,EACjBf,IAAKS,EAAKT,KAAOe,GAErBN,EAAKR,MAAQQ,EAAKR,OAASc,EAE3BP,GAAS,WAELI,EAAMa,EAAEb,IAAIL,EAASmB,SAAS,kBAAkB,GAAI,CAChDC,OAAQ,CAAClB,EAAKW,OAAOrB,IAAKU,EAAKW,OAAOpB,KACtC4B,KAAMnB,EAAKoB,YAAYpB,EAAKP,QAC5B4B,UAAWrB,EAAKN,UAChB4B,iBAAkBtB,EAAKN,UACvB6B,WAAYvB,EAAKN,YAIrBsB,EAAEQ,UAAU,qDAAsD,CAC9DC,QAAS,GACTC,YAAa,wFACdC,MAAMxB,GAGTa,EAAEY,QAAQC,QAAQF,MAAMxB,IAGxBC,EAASY,EAAEZ,OACP,CAACJ,EAAKW,OAAOrB,IAAKU,EAAKW,OAAOpB,KAC9B,CACIuC,UAAyC,mBAAtB9B,EAAKL,cACU,mBAAtBK,EAAKJ,aACjBmC,SAAS,KAEVC,UAAUhC,EAAKR,OACtBY,EAAOuB,MAAMxB,GAEPH,EAAKP,SACPY,EAASW,EAAEX,OAAO,CAACL,EAAKW,OAAOrB,IAAKU,EAAKW,OAAOpB,KAAM,CAAEE,OAAQO,EAAKP,SAChEkC,MAAMxB,IAEfC,EAAO6B,iBAAiB,OAAQ1B,GAChCH,EAAO6B,iBAAiB,UAAWxB,EACvC,IAEAP,GAAQ,CACZ,EAxIAF,EAAKkC,WAuCL,SAAgBC,GACZ,GAAIjC,EAAO,CAGP,IAAIkC,EAA0B,OAAbpC,EAAKV,KAA6B,OAAbU,EAAKT,IACvC8C,EAAUrC,EAAKoB,YAAYpB,EAAKP,SAE/B0C,EAAQ7C,KAAO6C,EAAQ5C,MAAUY,IAElCH,EAAKW,OAAS,CACVrB,IAAK8C,EAAa9B,EAAoBN,EAAKV,IAC3CC,IAAK6C,EAAa9B,EAAoBN,EAAKT,KAG/CY,EAAImC,QAAQ,CAAEC,IAAKvC,EAAKW,OAAOpB,IAAKD,IAAKU,EAAKW,OAAOrB,KAAO+C,GAE5DjC,EAAOU,UAAU,CAACd,EAAKW,OAAOrB,IAAKU,EAAKW,OAAOpB,MACzCc,GAAQA,EAAOS,UAAU,CAACd,EAAKW,OAAOrB,IAAKU,EAAKW,OAAOpB,OAE7D4C,EAAQ1C,SACFY,GAAQA,EAAOmC,SACfL,EAAQ1C,OAAOgD,eACjBpC,EAASW,EAAEX,OAAO,CAACL,EAAKW,OAAOrB,IAAKU,EAAKW,OAAOpB,KAAM,CAAEE,OAAQO,EAAKP,SAChEkC,MAAMxB,IACfA,EAAImC,QAAQ,CAAEC,IAAKvC,EAAKW,OAAOpB,IAAKD,IAAKU,EAAKW,OAAOrB,KAAO+C,IAE5DF,EAAQ3C,OAAS2C,EAAQ3C,MAAMiD,cAC/BrC,EAAO4B,UAAUI,EAAa9B,EAAsBN,EAAKR,MACjE,CACJ,EAnEAQ,EAAK0C,WAGL,WACItC,EAAOuC,oBAAoB,OAAQpC,GACnCH,EAAOuC,oBAAoB,UAAWlC,GAEtCL,EAAS,KACTD,EAAM,IACV,EAGAH,EAAKoB,YAAc,SAAU3B,GACzB,OAAQA,GACJ,KAAK,IAAK,KAAK,KACX,OAAO,GAEX,KAAK,KACD,OAAO,GAEX,KAAK,KAYL,QACI,OAAO,GAVX,KAAK,MAGL,KAAK,MACD,OAAO,GAEX,KAAK,MACD,OAAO,EAMnB,CAoGJ,GAgBImD,SAAU,qCAEjB,CAhLD","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n var controller = function ($element, $timeout) {\r\n var ctrl = this;\r\n var _init = false;\r\n\r\n var map = null;\r\n var marker = null;\r\n var circle = null;\r\n\r\n var defaultLatLng = {\r\n lat: 52.184430,\r\n lng: -2.157050,\r\n label: 'Andrew Grant Head Office'\r\n };\r\n\r\n ctrl.latLng = {};\r\n\r\n //Built in methods (aliased below for minifcation).\r\n ctrl.$onInit = init;\r\n ctrl.$onChanges = change;\r\n ctrl.$onDestroy = destroy;\r\n\r\n //-\r\n function destroy() {\r\n marker.removeEventListener('drag', startDrag);\r\n marker.removeEventListener('dragend', endDrag);\r\n\r\n marker = null;\r\n map = null;\r\n }\r\n\r\n // Case numbers based upon the value of ctrl.radius passed to component.\r\n ctrl.calcViewVal = function (radius) {\r\n switch (radius) {\r\n case 805: case 1609: {\r\n return 14;\r\n }\r\n case 3219: {\r\n return 13;\r\n }\r\n case 8047: {\r\n return 12;\r\n }\r\n case 16093: {\r\n return 10;\r\n }\r\n case 24140: {\r\n return 10;\r\n }\r\n case 32187: {\r\n return 9;\r\n }\r\n default: {\r\n return 12;\r\n }\r\n }\r\n };\r\n\r\n function change(changes) {\r\n if (_init) {\r\n //console.log('changes', changes);\r\n \r\n var useDefault = ctrl.lat === null && ctrl.lng === null;\r\n var viewVal = ctrl.calcViewVal(ctrl.radius);\r\n\r\n if ((changes.lat || changes.lng) && !!map) {\r\n\r\n ctrl.latLng = {\r\n lat: useDefault ? defaultLatLng.lat : ctrl.lat,\r\n lng: useDefault ? defaultLatLng.lng : ctrl.lng\r\n };\r\n\r\n map.setView({ lon: ctrl.latLng.lng, lat: ctrl.latLng.lat }, viewVal); \r\n\r\n marker.setLatLng([ctrl.latLng.lat, ctrl.latLng.lng]);\r\n if (!!circle) circle.setLatLng([ctrl.latLng.lat, ctrl.latLng.lng]);\r\n }\r\n if (changes.radius) {\r\n if (!!circle) circle.remove();\r\n if (!!changes.radius.currentValue)\r\n circle = L.circle([ctrl.latLng.lat, ctrl.latLng.lng], { radius: ctrl.radius })\r\n .addTo(map);\r\n map.setView({ lon: ctrl.latLng.lng, lat: ctrl.latLng.lat }, viewVal);\r\n }\r\n if (changes.label && changes.label.currentValue)\r\n marker.bindPopup(useDefault ? defaultLatLng.label : ctrl.label);\r\n }\r\n }\r\n\r\n function startDrag() {\r\n markerPosition();\r\n }\r\n\r\n function endDrag() {\r\n markerPosition(true);\r\n }\r\n\r\n function markerPosition(drop) {\r\n ctrl.latLng = marker.getLatLng();\r\n if (!!drop) {\r\n if (typeof ctrl.onMarkerDrop === 'function')\r\n ctrl.onMarkerDrop({ $event: { lat: ctrl.latLng.lat, lng: ctrl.latLng.lng } });\r\n } else {\r\n if (typeof ctrl.onMarkerDrag === 'function')\r\n ctrl.onMarkerDrag({ $event: { lat: ctrl.latLng.lat, lng: ctrl.latLng.lng } });\r\n }\r\n if (!!circle) circle.setLatLng([ctrl.latLng.lat, ctrl.latLng.lng]);\r\n }\r\n\r\n function init() {\r\n ctrl.latLng = {\r\n lat: ctrl.lat || defaultLatLng.lat,\r\n lng: ctrl.lng || defaultLatLng.lng\r\n }\r\n ctrl.label = ctrl.label || defaultLatLng.label;\r\n\r\n $timeout(function () {\r\n // initialize Leaflet\r\n map = L.map($element.children('.map-container')[0], {\r\n center: [ctrl.latLng.lat, ctrl.latLng.lng],\r\n zoom: ctrl.calcViewVal(ctrl.radius), // 12 before\r\n dragging: !ctrl.staticMap,\r\n scrollWheelZoom: !ctrl.staticMap,\r\n touchZoom: !ctrl.staticMap,\r\n });\r\n\r\n // add the OpenStreetMap tiles\r\n L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {\r\n maxZoom: 19, // 19\r\n attribution: '© OpenStreetMap contributors'\r\n }).addTo(map);\r\n\r\n // show the scale bar on the lower left corner\r\n L.control.scale().addTo(map);\r\n\r\n // show a marker on the map\r\n marker = L.marker(\r\n [ctrl.latLng.lat, ctrl.latLng.lng],\r\n {\r\n draggable: (typeof ctrl.onMarkerDrag === 'function') ||\r\n (typeof ctrl.onMarkerDrop === 'function'),\r\n autoPan: true\r\n });\r\n marker.bindPopup(ctrl.label);\r\n marker.addTo(map);\r\n\r\n if (!!ctrl.radius)\r\n circle = L.circle([ctrl.latLng.lat, ctrl.latLng.lng], { radius: ctrl.radius })\r\n .addTo(map);\r\n\r\n marker.addEventListener('drag', startDrag);\r\n marker.addEventListener('dragend', endDrag);\r\n });\r\n\r\n _init = true;\r\n }\r\n };\r\n\r\n app.component('openmap', {\r\n restrict: 'E',\r\n bindings: {\r\n lat: ''\r\n });\r\n})();"]}