Files
contao-leaflet-libraries/assets/control-geocoder/Control.Geocoder.min.js

1 line
13 KiB
JavaScript
Raw Normal View History

2015-01-20 13:04:31 +01:00
!function(e){var t;if("function"==typeof define&&define.amd)define(["leaflet"],e);else if("undefined"!=typeof module)t=require("leaflet"),module.exports=e(t);else{if("undefined"==typeof window.L)throw"Leaflet must be loaded first";e(window.L)}}(function(e){"use strict";return e.Control.Geocoder=e.Control.extend({options:{showResultIcons:!1,collapsed:!0,expand:"click",position:"topright",placeholder:"Search...",errorMessage:"Nothing found."},_callbackId:0,initialize:function(t){e.Util.setOptions(this,t),this.options.geocoder||(this.options.geocoder=new e.Control.Geocoder.Nominatim)},onAdd:function(t){var o,n="leaflet-control-geocoder",r=e.DomUtil.create("div",n),s=e.DomUtil.create("div","leaflet-control-geocoder-icon",r),i=this._form=e.DomUtil.create("form",n+"-form",r);return this._map=t,this._container=r,o=this._input=e.DomUtil.create("input"),o.type="text",o.placeholder=this.options.placeholder,e.DomEvent.addListener(o,"keydown",this._keydown,this),this._errorElement=document.createElement("div"),this._errorElement.className=n+"-form-no-error",this._errorElement.innerHTML=this.options.errorMessage,this._alts=e.DomUtil.create("ul",n+"-alternatives leaflet-control-geocoder-alternatives-minimized"),i.appendChild(o),i.appendChild(this._errorElement),r.appendChild(this._alts),e.DomEvent.addListener(i,"submit",this._geocode,this),this.options.collapsed?"click"===this.options.expand?e.DomEvent.addListener(s,"click",function(e){0===e.button&&2!==e.detail&&this._toggle()},this):(e.DomEvent.addListener(s,"mouseover",this._expand,this),e.DomEvent.addListener(s,"mouseout",this._collapse,this),this._map.on("movestart",this._collapse,this)):this._expand(),e.DomEvent.disableClickPropagation(r),r},_geocodeResult:function(t){if(e.DomUtil.removeClass(this._container,"leaflet-control-geocoder-throbber"),1===t.length)this._geocodeResultSelected(t[0]);else if(t.length>0){this._alts.innerHTML="",this._results=t,e.DomUtil.removeClass(this._alts,"leaflet-control-geocoder-alternatives-minimized");for(var o=0;o<t.length;o++)this._alts.appendChild(this._createAlt(t[o],o))}else e.DomUtil.addClass(this._errorElement,"leaflet-control-geocoder-error")},markGeocode:function(t){return this._map.fitBounds(t.bbox),this._geocodeMarker&&this._map.removeLayer(this._geocodeMarker),this._geocodeMarker=new e.Marker(t.center).bindPopup(t.html||t.name).addTo(this._map).openPopup(),this},_geocode:function(t){return e.DomEvent.preventDefault(t),e.DomUtil.addClass(this._container,"leaflet-control-geocoder-throbber"),this._clearResults(),this.options.geocoder.geocode(this._input.value,this._geocodeResult,this),!1},_geocodeResultSelected:function(e){this.options.collapsed?this._collapse():this._clearResults(),this.markGeocode(e)},_toggle:function(){this._container.className.indexOf("leaflet-control-geocoder-expanded")>=0?this._collapse():this._expand()},_expand:function(){e.DomUtil.addClass(this._container,"leaflet-control-geocoder-expanded"),this._input.select()},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-geocoder-expanded",""),e.DomUtil.addClass(this._alts,"leaflet-control-geocoder-alternatives-minimized"),e.DomUtil.removeClass(this._errorElement,"leaflet-control-geocoder-error")},_clearResults:function(){e.DomUtil.addClass(this._alts,"leaflet-control-geocoder-alternatives-minimized"),this._selection=null,e.DomUtil.removeClass(this._errorElement,"leaflet-control-geocoder-error")},_createAlt:function(t,o){var n=document.createElement("li"),r=e.DomUtil.create("a","",n),s=this.options.showResultIcons&&t.icon?e.DomUtil.create("img","",r):null,i=t.html?void 0:document.createTextNode(t.name);return s&&(s.src=t.icon),r.href="#",r.setAttribute("data-result-index",o),t.html?r.innerHTML=t.html:r.appendChild(i),e.DomEvent.addListener(n,"click",function(o){e.DomEvent.preventDefault(o),this._geocodeResultSelected(t)},this),n},_keydown:function(t){var o=this,n=function(t){o._selection&&(e.DomUtil.removeClass(o._selection.firstChild,"leaflet-control-geocoder-selected"),o._selection=o._selection[t>0?"nextSibling":"previousS