{"version":3,"file":"Control.Geocoder.min.js","sources":["../src/util.js","../src/geocoders/arcgis.js","../src/geocoders/bing.js","../src/geocoders/google.js","../src/geocoders/here.js","../src/geocoders/latlng.js","../src/geocoders/mapbox.js","../src/geocoders/mapquest.js","../src/geocoders/neutrino.js","../src/geocoders/nominatim.js","../src/geocoders/open-location-code.js","../src/geocoders/opencage.js","../src/geocoders/pelias.js","../src/geocoders/photon.js","../src/geocoders/what3words.js","../src/control.js","../src/index.js"],"sourcesContent":["import L from 'leaflet';\nvar lastCallbackId = 0;\n\n// Adapted from handlebars.js\n// https://github.com/wycats/handlebars.js/\nvar badChars = /[&<>\"'`]/g;\nvar possible = /[&<>\"'`]/;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nexport function htmlEscape(string) {\n if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nexport function jsonp(url, params, callback, context, jsonpParam) {\n var callbackId = '_l_geocoder_' + lastCallbackId++;\n params[jsonpParam || 'callback'] = callbackId;\n window[callbackId] = L.Util.bind(callback, context);\n var script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = url + getParamString(params);\n script.id = callbackId;\n document.getElementsByTagName('head')[0].appendChild(script);\n}\n\nexport function getJSON(url, params, callback) {\n var xmlHttp = new XMLHttpRequest();\n xmlHttp.onreadystatechange = function() {\n if (xmlHttp.readyState !== 4) {\n return;\n }\n var message;\n if (xmlHttp.status !== 200 && xmlHttp.status !== 304) {\n message = '';\n } else if (typeof xmlHttp.response === 'string') {\n // IE doesn't parse JSON responses even with responseType: 'json'.\n try {\n message = JSON.parse(xmlHttp.response);\n } catch (e) {\n // Not a JSON response\n message = xmlHttp.response;\n }\n } else {\n message = xmlHttp.response;\n }\n callback(message);\n };\n xmlHttp.open('GET', url + getParamString(params), true);\n xmlHttp.responseType = 'json';\n xmlHttp.setRequestHeader('Accept', 'application/json');\n xmlHttp.send(null);\n}\n\nexport function template(str, data) {\n return str.replace(/\\{ *([\\w_]+) *\\}/g, function(str, key) {\n var value = data[key];\n if (value === undefined) {\n value = '';\n } else if (typeof value === 'function') {\n value = value(data);\n }\n return htmlEscape(value);\n });\n}\n\nexport function getParamString(obj, existingUrl, uppercase) {\n var params = [];\n for (var i in obj) {\n var key = encodeURIComponent(uppercase ? i.toUpperCase() : i);\n var value = obj[i];\n if (!L.Util.isArray(value)) {\n params.push(key + '=' + encodeURIComponent(value));\n } else {\n for (var j = 0; j < value.length; j++) {\n params.push(key + '=' + encodeURIComponent(value[j]));\n }\n }\n }\n return (!existingUrl || existingUrl.indexOf('?') === -1 ? '?' : '&') + params.join('&');\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var ArcGis = L.Class.extend({\n options: {\n service_url: 'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer'\n },\n\n initialize: function(accessToken, options) {\n L.setOptions(this, options);\n this._accessToken = accessToken;\n },\n\n geocode: function(query, cb, context) {\n var params = {\n SingleLine: query,\n outFields: 'Addr_Type',\n forStorage: false,\n maxLocations: 10,\n f: 'json'\n };\n\n if (this._key && this._key.length) {\n params.token = this._key;\n }\n\n getJSON(\n this.options.service_url + '/findAddressCandidates',\n L.extend(params, this.options.geocodingQueryParams),\n function(data) {\n var results = [],\n loc,\n latLng,\n latLngBounds;\n\n if (data.candidates && data.candidates.length) {\n for (var i = 0; i <= data.candidates.length - 1; i++) {\n loc = data.candidates[i];\n latLng = L.latLng(loc.location.y, loc.location.x);\n latLngBounds = L.latLngBounds(\n L.latLng(loc.extent.ymax, loc.extent.xmax),\n L.latLng(loc.extent.ymin, loc.extent.xmin)\n );\n results[i] = {\n name: loc.address,\n bbox: latLngBounds,\n center: latLng\n };\n }\n }\n\n cb.call(context, results);\n }\n );\n },\n\n suggest: function(query, cb, context) {\n return this.geocode(query, cb, context);\n },\n\n reverse: function(location, scale, cb, context) {\n var params = {\n location: encodeURIComponent(location.lng) + ',' + encodeURIComponent(location.lat),\n distance: 100,\n f: 'json'\n };\n\n getJSON(this.options.service_url + '/reverseGeocode', params, function(data) {\n var result = [],\n loc;\n\n if (data && !data.error) {\n loc = L.latLng(data.location.y, data.location.x);\n result.push({\n name: data.address.Match_addr,\n center: loc,\n bounds: L.latLngBounds(loc, loc)\n });\n }\n\n cb.call(context, result);\n });\n }\n});\n\nexport function arcgis(accessToken, options) {\n return new ArcGis(accessToken, options);\n}\n","import L from 'leaflet';\nimport { jsonp } from '../util';\n\nexport var Bing = L.Class.extend({\n initialize: function(key) {\n this.key = key;\n },\n\n geocode: function(query, cb, context) {\n jsonp(\n 'https://dev.virtualearth.net/REST/v1/Locations',\n {\n query: query,\n key: this.key\n },\n function(data) {\n var results = [];\n if (data.resourceSets.length > 0) {\n for (var i = data.resourceSets[0].resources.length - 1; i >= 0; i--) {\n var resource = data.resourceSets[0].resources[i],\n bbox = resource.bbox;\n results[i] = {\n name: resource.name,\n bbox: L.latLngBounds([bbox[0], bbox[1]], [bbox[2], bbox[3]]),\n center: L.latLng(resource.point.coordinates)\n };\n }\n }\n cb.call(context, results);\n },\n this,\n 'jsonp'\n );\n },\n\n reverse: function(location, scale, cb, context) {\n jsonp(\n '//dev.virtualearth.net/REST/v1/Locations/' + location.lat + ',' + location.lng,\n {\n key: this.key\n },\n function(data) {\n var results = [];\n for (var i = data.resourceSets[0].resources.length - 1; i >= 0; i--) {\n var resource = data.resourceSets[0].resources[i],\n bbox = resource.bbox;\n results[i] = {\n name: resource.name,\n bbox: L.latLngBounds([bbox[0], bbox[1]], [bbox[2], bbox[3]]),\n center: L.latLng(resource.point.coordinates)\n };\n }\n cb.call(context, results);\n },\n this,\n 'jsonp'\n );\n }\n});\n\nexport function bing(key) {\n return new Bing(key);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var Google = L.Class.extend({\n options: {\n serviceUrl: 'https://maps.googleapis.com/maps/api/geocode/json',\n geocodingQueryParams: {},\n reverseQueryParams: {}\n },\n\n initialize: function(key, options) {\n this._key = key;\n L.setOptions(this, options);\n // Backwards compatibility\n this.options.serviceUrl = this.options.service_url || this.options.serviceUrl;\n },\n\n geocode: function(query, cb, context) {\n var params = {\n address: query\n };\n\n if (this._key && this._key.length) {\n params.key = this._key;\n }\n\n params = L.Util.extend(params, this.options.geocodingQueryParams);\n\n getJSON(this.options.serviceUrl, params, function(data) {\n var results = [],\n loc,\n latLng,\n latLngBounds;\n if (data.results && data.results.length) {\n for (var i = 0; i <= data.results.length - 1; i++) {\n loc = data.results[i];\n latLng = L.latLng(loc.geometry.location);\n latLngBounds = L.latLngBounds(\n L.latLng(loc.geometry.viewport.northeast),\n L.latLng(loc.geometry.viewport.southwest)\n );\n results[i] = {\n name: loc.formatted_address,\n bbox: latLngBounds,\n center: latLng,\n properties: loc.address_components\n };\n }\n }\n\n cb.call(context, results);\n });\n },\n\n reverse: function(location, scale, cb, context) {\n var params = {\n latlng: encodeURIComponent(location.lat) + ',' + encodeURIComponent(location.lng)\n };\n params = L.Util.extend(params, this.options.reverseQueryParams);\n if (this._key && this._key.length) {\n params.key = this._key;\n }\n\n getJSON(this.options.serviceUrl, params, function(data) {\n var results = [],\n loc,\n latLng,\n latLngBounds;\n if (data.results && data.results.length) {\n for (var i = 0; i <= data.results.length - 1; i++) {\n loc = data.results[i];\n latLng = L.latLng(loc.geometry.location);\n latLngBounds = L.latLngBounds(\n L.latLng(loc.geometry.viewport.northeast),\n L.latLng(loc.geometry.viewport.southwest)\n );\n results[i] = {\n name: loc.formatted_address,\n bbox: latLngBounds,\n center: latLng,\n properties: loc.address_components\n };\n }\n }\n\n cb.call(context, results);\n });\n }\n});\n\nexport function google(key, options) {\n return new Google(key, options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\nexport var HERE = L.Class.extend({\n options: {\n geocodeUrl: 'https://geocoder.api.here.com/6.2/geocode.json',\n reverseGeocodeUrl: 'https://reverse.geocoder.api.here.com/6.2/reversegeocode.json',\n app_id: '',\n app_code: '',\n geocodingQueryParams: {},\n reverseQueryParams: {},\n reverseGeocodeProxRadius: null\n },\n initialize: function(options) {\n L.setOptions(this, options);\n },\n geocode: function(query, cb, context) {\n var params = {\n searchtext: query,\n gen: 9,\n app_id: this.options.app_id,\n app_code: this.options.app_code,\n jsonattributes: 1\n };\n params = L.Util.extend(params, this.options.geocodingQueryParams);\n this.getJSON(this.options.geocodeUrl, params, cb, context);\n },\n reverse: function(location, scale, cb, context) {\n var _proxRadius = this.options.reverseGeocodeProxRadius\n ? this.options.reverseGeocodeProxRadius\n : null;\n var proxRadius = _proxRadius ? ',' + encodeURIComponent(_proxRadius) : '';\n var params = {\n prox: encodeURIComponent(location.lat) + ',' + encodeURIComponent(location.lng) + proxRadius,\n mode: 'retrieveAddresses',\n app_id: this.options.app_id,\n app_code: this.options.app_code,\n gen: 9,\n jsonattributes: 1\n };\n params = L.Util.extend(params, this.options.reverseQueryParams);\n this.getJSON(this.options.reverseGeocodeUrl, params, cb, context);\n },\n getJSON: function(url, params, cb, context) {\n getJSON(url, params, function(data) {\n var results = [],\n loc,\n latLng,\n latLngBounds;\n if (data.response.view && data.response.view.length) {\n for (var i = 0; i <= data.response.view[0].result.length - 1; i++) {\n loc = data.response.view[0].result[i].location;\n latLng = L.latLng(loc.displayPosition.latitude, loc.displayPosition.longitude);\n latLngBounds = L.latLngBounds(\n L.latLng(loc.mapView.topLeft.latitude, loc.mapView.topLeft.longitude),\n L.latLng(loc.mapView.bottomRight.latitude, loc.mapView.bottomRight.longitude)\n );\n results[i] = {\n name: loc.address.label,\n properties: loc.address,\n bbox: latLngBounds,\n center: latLng\n };\n }\n }\n cb.call(context, results);\n });\n }\n});\nexport function here(options) {\n return new HERE(options);\n}\n","import L from 'leaflet';\n\nexport var LatLng = L.Class.extend({\n options: {\n // the next geocoder to use\n next: undefined,\n sizeInMeters: 10000\n },\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n },\n\n geocode: function(query, cb, context) {\n var match;\n var center;\n // regex from https://github.com/openstreetmap/openstreetmap-website/blob/master/app/controllers/geocoder_controller.rb\n if ((match = query.match(/^([NS])\\s*(\\d{1,3}(?:\\.\\d*)?)\\W*([EW])\\s*(\\d{1,3}(?:\\.\\d*)?)$/))) {\n // [NSEW] decimal degrees\n center = L.latLng(\n (/N/i.test(match[1]) ? 1 : -1) * parseFloat(match[2]),\n (/E/i.test(match[3]) ? 1 : -1) * parseFloat(match[4])\n );\n } else if (\n (match = query.match(/^(\\d{1,3}(?:\\.\\d*)?)\\s*([NS])\\W*(\\d{1,3}(?:\\.\\d*)?)\\s*([EW])$/))\n ) {\n // decimal degrees [NSEW]\n center = L.latLng(\n (/N/i.test(match[2]) ? 1 : -1) * parseFloat(match[1]),\n (/E/i.test(match[4]) ? 1 : -1) * parseFloat(match[3])\n );\n } else if (\n (match = query.match(\n /^([NS])\\s*(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?\\W*([EW])\\s*(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?$/\n ))\n ) {\n // [NSEW] degrees, decimal minutes\n center = L.latLng(\n (/N/i.test(match[1]) ? 1 : -1) * (parseFloat(match[2]) + parseFloat(match[3] / 60)),\n (/E/i.test(match[4]) ? 1 : -1) * (parseFloat(match[5]) + parseFloat(match[6] / 60))\n );\n } else if (\n (match = query.match(\n /^(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?\\s*([NS])\\W*(\\d{1,3})°?\\s*(\\d{1,3}(?:\\.\\d*)?)?['′]?\\s*([EW])$/\n ))\n ) {\n // degrees, decimal minutes [NSEW]\n center = L.latLng(\n (/N/i.test(match[3]) ? 1 : -1) * (parseFloat(match[1]) + parseFloat(match[2] / 60)),\n (/E/i.test(match[6]) ? 1 : -1) * (parseFloat(match[4]) + parseFloat(match[5] / 60))\n );\n } else if (\n (match = query.match(\n /^([NS])\\s*(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]?\\W*([EW])\\s*(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]?$/\n ))\n ) {\n // [NSEW] degrees, minutes, decimal seconds\n center = L.latLng(\n (/N/i.test(match[1]) ? 1 : -1) *\n (parseFloat(match[2]) + parseFloat(match[3] / 60 + parseFloat(match[4] / 3600))),\n (/E/i.test(match[5]) ? 1 : -1) *\n (parseFloat(match[6]) + parseFloat(match[7] / 60) + parseFloat(match[8] / 3600))\n );\n } else if (\n (match = query.match(\n /^(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]\\s*([NS])\\W*(\\d{1,3})°?\\s*(\\d{1,2})['′]?\\s*(\\d{1,3}(?:\\.\\d*)?)?[\"″]?\\s*([EW])$/\n ))\n ) {\n // degrees, minutes, decimal seconds [NSEW]\n center = L.latLng(\n (/N/i.test(match[4]) ? 1 : -1) *\n (parseFloat(match[1]) + parseFloat(match[2] / 60 + parseFloat(match[3] / 3600))),\n (/E/i.test(match[8]) ? 1 : -1) *\n (parseFloat(match[5]) + parseFloat(match[6] / 60) + parseFloat(match[7] / 3600))\n );\n } else if (\n (match = query.match(/^\\s*([+-]?\\d+(?:\\.\\d*)?)\\s*[\\s,]\\s*([+-]?\\d+(?:\\.\\d*)?)\\s*$/))\n ) {\n center = L.latLng(parseFloat(match[1]), parseFloat(match[2]));\n }\n if (center) {\n var results = [\n {\n name: query,\n center: center,\n bbox: center.toBounds(this.options.sizeInMeters)\n }\n ];\n cb.call(context, results);\n } else if (this.options.next) {\n this.options.next.geocode(query, cb, context);\n }\n }\n});\n\nexport function latLng(options) {\n return new LatLng(options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var Mapbox = L.Class.extend({\n options: {\n serviceUrl: 'https://api.mapbox.com/geocoding/v5/mapbox.places/',\n geocodingQueryParams: {},\n reverseQueryParams: {}\n },\n\n initialize: function(accessToken, options) {\n L.setOptions(this, options);\n this.options.geocodingQueryParams.access_token = accessToken;\n this.options.reverseQueryParams.access_token = accessToken;\n },\n\n geocode: function(query, cb, context) {\n var params = this.options.geocodingQueryParams;\n if (\n params.proximity !== undefined &&\n params.proximity.lat !== undefined &&\n params.proximity.lng !== undefined\n ) {\n params.proximity = params.proximity.lng + ',' + params.proximity.lat;\n }\n getJSON(this.options.serviceUrl + encodeURIComponent(query) + '.json', params, function(data) {\n var results = [],\n loc,\n latLng,\n latLngBounds;\n if (data.features && data.features.length) {\n for (var i = 0; i <= data.features.length - 1; i++) {\n loc = data.features[i];\n latLng = L.latLng(loc.center.reverse());\n if (loc.bbox) {\n latLngBounds = L.latLngBounds(\n L.latLng(loc.bbox.slice(0, 2).reverse()),\n L.latLng(loc.bbox.slice(2, 4).reverse())\n );\n } else {\n latLngBounds = L.latLngBounds(latLng, latLng);\n }\n\n var properties = {\n text: loc.text,\n address: loc.address\n };\n\n for (var j = 0; j < (loc.context || []).length; j++) {\n var id = loc.context[j].id.split('.')[0];\n properties[id] = loc.context[j].text;\n\n // Get country code when available\n if (loc.context[j].short_code) {\n properties['countryShortCode'] = loc.context[j].short_code\n }\n }\n\n results[i] = {\n name: loc.place_name,\n bbox: latLngBounds,\n center: latLng,\n properties: properties\n };\n }\n }\n\n cb.call(context, results);\n });\n },\n\n suggest: function(query, cb, context) {\n return this.geocode(query, cb, context);\n },\n\n reverse: function(location, scale, cb, context) {\n getJSON(\n this.options.serviceUrl +\n encodeURIComponent(location.lng) +\n ',' +\n encodeURIComponent(location.lat) +\n '.json',\n this.options.reverseQueryParams,\n function(data) {\n var results = [],\n loc,\n latLng,\n latLngBounds;\n if (data.features && data.features.length) {\n for (var i = 0; i <= data.features.length - 1; i++) {\n loc = data.features[i];\n latLng = L.latLng(loc.center.reverse());\n if (loc.bbox) {\n latLngBounds = L.latLngBounds(\n L.latLng(loc.bbox.slice(0, 2).reverse()),\n L.latLng(loc.bbox.slice(2, 4).reverse())\n );\n } else {\n latLngBounds = L.latLngBounds(latLng, latLng);\n }\n results[i] = {\n name: loc.place_name,\n bbox: latLngBounds,\n center: latLng\n };\n }\n }\n\n cb.call(context, results);\n }\n );\n }\n});\n\nexport function mapbox(accessToken, options) {\n return new Mapbox(accessToken, options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var MapQuest = L.Class.extend({\n options: {\n serviceUrl: 'https://www.mapquestapi.com/geocoding/v1'\n },\n\n initialize: function(key, options) {\n // MapQuest seems to provide URI encoded API keys,\n // so to avoid encoding them twice, we decode them here\n this._key = decodeURIComponent(key);\n\n L.Util.setOptions(this, options);\n },\n\n _formatName: function() {\n var r = [],\n i;\n for (i = 0; i < arguments.length; i++) {\n if (arguments[i]) {\n r.push(arguments[i]);\n }\n }\n\n return r.join(', ');\n },\n\n geocode: function(query, cb, context) {\n getJSON(\n this.options.serviceUrl + '/address',\n {\n key: this._key,\n location: query,\n limit: 5,\n outFormat: 'json'\n },\n L.bind(function(data) {\n var results = [],\n loc,\n latLng;\n if (data.results && data.results[0].locations) {\n for (var i = data.results[0].locations.length - 1; i >= 0; i--) {\n loc = data.results[0].locations[i];\n latLng = L.latLng(loc.latLng);\n results[i] = {\n name: this._formatName(loc.street, loc.adminArea4, loc.adminArea3, loc.adminArea1),\n bbox: L.latLngBounds(latLng, latLng),\n center: latLng\n };\n }\n }\n\n cb.call(context, results);\n }, this)\n );\n },\n\n reverse: function(location, scale, cb, context) {\n getJSON(\n this.options.serviceUrl + '/reverse',\n {\n key: this._key,\n location: location.lat + ',' + location.lng,\n outputFormat: 'json'\n },\n L.bind(function(data) {\n var results = [],\n loc,\n latLng;\n if (data.results && data.results[0].locations) {\n for (var i = data.results[0].locations.length - 1; i >= 0; i--) {\n loc = data.results[0].locations[i];\n latLng = L.latLng(loc.latLng);\n results[i] = {\n name: this._formatName(loc.street, loc.adminArea4, loc.adminArea3, loc.adminArea1),\n bbox: L.latLngBounds(latLng, latLng),\n center: latLng\n };\n }\n }\n\n cb.call(context, results);\n }, this)\n );\n }\n});\n\nexport function mapQuest(key, options) {\n return new MapQuest(key, options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var Neutrino = L.Class.extend({\n options: {\n userId: '',\n apiKey: '',\n serviceUrl: 'https://neutrinoapi.com/'\n },\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n },\n\n // https://www.neutrinoapi.com/api/geocode-address/\n geocode: function(query, cb, context) {\n getJSON(\n this.options.serviceUrl + 'geocode-address',\n {\n apiKey: this.options.apiKey,\n userId: this.options.userId,\n //get three words and make a dot based string\n address: query.split(/\\s+/).join('.')\n },\n function(data) {\n var results = [],\n latLng,\n latLngBounds;\n if (data.locations) {\n data.geometry = data.locations[0];\n latLng = L.latLng(data.geometry['latitude'], data.geometry['longitude']);\n latLngBounds = L.latLngBounds(latLng, latLng);\n results[0] = {\n name: data.geometry.address,\n bbox: latLngBounds,\n center: latLng\n };\n }\n\n cb.call(context, results);\n }\n );\n },\n\n suggest: function(query, cb, context) {\n return this.geocode(query, cb, context);\n },\n\n // https://www.neutrinoapi.com/api/geocode-reverse/\n reverse: function(location, scale, cb, context) {\n getJSON(\n this.options.serviceUrl + 'geocode-reverse',\n {\n apiKey: this.options.apiKey,\n userId: this.options.userId,\n latitude: location.lat,\n longitude: location.lng\n },\n function(data) {\n var results = [],\n latLng,\n latLngBounds;\n if (data.status.status == 200 && data.found) {\n latLng = L.latLng(location.lat, location.lng);\n latLngBounds = L.latLngBounds(latLng, latLng);\n results[0] = {\n name: data.address,\n bbox: latLngBounds,\n center: latLng\n };\n }\n cb.call(context, results);\n }\n );\n }\n});\n\nexport function neutrino(accessToken) {\n return new Neutrino(accessToken);\n}\n","import L from 'leaflet';\nimport { template, getJSON } from '../util';\n\nexport var Nominatim = L.Class.extend({\n options: {\n serviceUrl: 'https://nominatim.openstreetmap.org/',\n geocodingQueryParams: {},\n reverseQueryParams: {},\n htmlTemplate: function(r) {\n var a = r.address,\n className,\n parts = [];\n if (a.road || a.building) {\n parts.push('{building} {road} {house_number}');\n }\n\n if (a.city || a.town || a.village || a.hamlet) {\n className = parts.length > 0 ? 'leaflet-control-geocoder-address-detail' : '';\n parts.push(\n '{postcode} {city} {town} {village} {hamlet}'\n );\n }\n\n if (a.state || a.country) {\n className = parts.length > 0 ? 'leaflet-control-geocoder-address-context' : '';\n parts.push('{state} {country}');\n }\n\n return template(parts.join('
'), a, true);\n }\n },\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n },\n\n geocode: function(query, cb, context) {\n getJSON(\n this.options.serviceUrl + 'search',\n L.extend(\n {\n q: query,\n limit: 5,\n format: 'json',\n addressdetails: 1\n },\n this.options.geocodingQueryParams\n ),\n L.bind(function(data) {\n var results = [];\n for (var i = data.length - 1; i >= 0; i--) {\n var bbox = data[i].boundingbox;\n for (var j = 0; j < 4; j++) bbox[j] = parseFloat(bbox[j]);\n results[i] = {\n icon: data[i].icon,\n name: data[i].display_name,\n html: this.options.htmlTemplate ? this.options.htmlTemplate(data[i]) : undefined,\n bbox: L.latLngBounds([bbox[0], bbox[2]], [bbox[1], bbox[3]]),\n center: L.latLng(data[i].lat, data[i].lon),\n properties: data[i]\n };\n }\n cb.call(context, results);\n }, this)\n );\n },\n\n reverse: function(location, scale, cb, context) {\n getJSON(\n this.options.serviceUrl + 'reverse',\n L.extend(\n {\n lat: location.lat,\n lon: location.lng,\n zoom: Math.round(Math.log(scale / 256) / Math.log(2)),\n addressdetails: 1,\n format: 'json'\n },\n this.options.reverseQueryParams\n ),\n L.bind(function(data) {\n var result = [],\n loc;\n\n if (data && data.lat && data.lon) {\n loc = L.latLng(data.lat, data.lon);\n result.push({\n name: data.display_name,\n html: this.options.htmlTemplate ? this.options.htmlTemplate(data) : undefined,\n center: loc,\n bounds: L.latLngBounds(loc, loc),\n properties: data\n });\n }\n\n cb.call(context, result);\n }, this)\n );\n }\n});\n\nexport function nominatim(options) {\n return new Nominatim(options);\n}\n","import L from 'leaflet';\n\nexport var OpenLocationCode = L.Class.extend({\n options: {\n OpenLocationCode: undefined,\n codeLength: undefined\n },\n\n initialize: function(options) {\n L.setOptions(this, options);\n },\n\n geocode: function(query, cb, context) {\n try {\n var decoded = this.options.OpenLocationCode.decode(query);\n var result = {\n name: query,\n center: L.latLng(decoded.latitudeCenter, decoded.longitudeCenter),\n bbox: L.latLngBounds(\n L.latLng(decoded.latitudeLo, decoded.longitudeLo),\n L.latLng(decoded.latitudeHi, decoded.longitudeHi)\n )\n };\n cb.call(context, [result]);\n } catch (e) {\n console.warn(e); // eslint-disable-line no-console\n cb.call(context, []);\n }\n },\n reverse: function(location, scale, cb, context) {\n try {\n var code = this.options.OpenLocationCode.encode(\n location.lat,\n location.lng,\n this.options.codeLength\n );\n var result = {\n name: code,\n center: L.latLng(location.lat, location.lng),\n bbox: L.latLngBounds(\n L.latLng(location.lat, location.lng),\n L.latLng(location.lat, location.lng)\n )\n };\n cb.call(context, [result]);\n } catch (e) {\n console.warn(e); // eslint-disable-line no-console\n cb.call(context, []);\n }\n }\n});\n\nexport function openLocationCode(options) {\n return new OpenLocationCode(options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var OpenCage = L.Class.extend({\n options: {\n serviceUrl: 'https://api.opencagedata.com/geocode/v1/json',\n geocodingQueryParams: {},\n reverseQueryParams: {}\n },\n\n initialize: function(apiKey, options) {\n L.setOptions(this, options);\n this._accessToken = apiKey;\n },\n\n geocode: function(query, cb, context) {\n var params = {\n key: this._accessToken,\n q: query\n };\n params = L.extend(params, this.options.geocodingQueryParams);\n getJSON(this.options.serviceUrl, params, function(data) {\n var results = [],\n latLng,\n latLngBounds,\n loc;\n if (data.results && data.results.length) {\n for (var i = 0; i < data.results.length; i++) {\n loc = data.results[i];\n latLng = L.latLng(loc.geometry);\n if (loc.annotations && loc.annotations.bounds) {\n latLngBounds = L.latLngBounds(\n L.latLng(loc.annotations.bounds.northeast),\n L.latLng(loc.annotations.bounds.southwest)\n );\n } else {\n latLngBounds = L.latLngBounds(latLng, latLng);\n }\n results.push({\n name: loc.formatted,\n bbox: latLngBounds,\n center: latLng\n });\n }\n }\n cb.call(context, results);\n });\n },\n\n suggest: function(query, cb, context) {\n return this.geocode(query, cb, context);\n },\n\n reverse: function(location, scale, cb, context) {\n var params = {\n key: this._accessToken,\n q: [location.lat, location.lng].join(',')\n };\n params = L.extend(params, this.options.reverseQueryParams);\n getJSON(this.options.serviceUrl, params, function(data) {\n var results = [],\n latLng,\n latLngBounds,\n loc;\n if (data.results && data.results.length) {\n for (var i = 0; i < data.results.length; i++) {\n loc = data.results[i];\n latLng = L.latLng(loc.geometry);\n if (loc.annotations && loc.annotations.bounds) {\n latLngBounds = L.latLngBounds(\n L.latLng(loc.annotations.bounds.northeast),\n L.latLng(loc.annotations.bounds.southwest)\n );\n } else {\n latLngBounds = L.latLngBounds(latLng, latLng);\n }\n results.push({\n name: loc.formatted,\n bbox: latLngBounds,\n center: latLng\n });\n }\n }\n cb.call(context, results);\n });\n }\n});\n\nexport function opencage(apiKey, options) {\n return new OpenCage(apiKey, options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var Pelias = L.Class.extend({\n options: {\n serviceUrl: 'https://api.geocode.earth/v1',\n geocodingQueryParams: {},\n reverseQueryParams: {}\n },\n\n initialize: function(apiKey, options) {\n L.Util.setOptions(this, options);\n this._apiKey = apiKey;\n this._lastSuggest = 0;\n },\n\n geocode: function(query, cb, context) {\n var _this = this;\n getJSON(\n this.options.serviceUrl + '/search',\n L.extend(\n {\n api_key: this._apiKey,\n text: query\n },\n this.options.geocodingQueryParams\n ),\n function(data) {\n cb.call(context, _this._parseResults(data, 'bbox'));\n }\n );\n },\n\n suggest: function(query, cb, context) {\n var _this = this;\n getJSON(\n this.options.serviceUrl + '/autocomplete',\n L.extend(\n {\n api_key: this._apiKey,\n text: query\n },\n this.options.geocodingQueryParams\n ),\n L.bind(function(data) {\n if (data.geocoding.timestamp > this._lastSuggest) {\n this._lastSuggest = data.geocoding.timestamp;\n cb.call(context, _this._parseResults(data, 'bbox'));\n }\n }, this)\n );\n },\n\n reverse: function(location, scale, cb, context) {\n var _this = this;\n getJSON(\n this.options.serviceUrl + '/reverse',\n L.extend(\n {\n api_key: this._apiKey,\n 'point.lat': location.lat,\n 'point.lon': location.lng\n },\n this.options.reverseQueryParams\n ),\n function(data) {\n cb.call(context, _this._parseResults(data, 'bounds'));\n }\n );\n },\n\n _parseResults: function(data, bboxname) {\n var results = [];\n L.geoJson(data, {\n pointToLayer: function(feature, latlng) {\n return L.circleMarker(latlng);\n },\n onEachFeature: function(feature, layer) {\n var result = {},\n bbox,\n center;\n\n if (layer.getBounds) {\n bbox = layer.getBounds();\n center = bbox.getCenter();\n } else if (layer.feature.bbox) {\n center = layer.getLatLng();\n bbox = L.latLngBounds(\n L.GeoJSON.coordsToLatLng(layer.feature.bbox.slice(0, 2)),\n L.GeoJSON.coordsToLatLng(layer.feature.bbox.slice(2, 4))\n );\n } else {\n center = layer.getLatLng();\n bbox = L.latLngBounds(center, center);\n }\n\n result.name = layer.feature.properties.label;\n result.center = center;\n result[bboxname] = bbox;\n result.properties = layer.feature.properties;\n results.push(result);\n }\n });\n return results;\n }\n});\n\nexport function pelias(apiKey, options) {\n return new Pelias(apiKey, options);\n}\nexport var GeocodeEarth = Pelias;\nexport var geocodeEarth = pelias;\n\nexport var Mapzen = Pelias; // r.i.p.\nexport var mapzen = pelias;\n\nexport var Openrouteservice = Mapzen.extend({\n options: {\n serviceUrl: 'https://api.openrouteservice.org/geocode'\n }\n});\nexport function openrouteservice(apiKey, options) {\n return new Openrouteservice(apiKey, options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var Photon = L.Class.extend({\n options: {\n serviceUrl: 'https://photon.komoot.de/api/',\n reverseUrl: 'https://photon.komoot.de/reverse/',\n nameProperties: ['name', 'street', 'suburb', 'hamlet', 'town', 'city', 'state', 'country']\n },\n\n initialize: function(options) {\n L.setOptions(this, options);\n },\n\n geocode: function(query, cb, context) {\n var params = L.extend(\n {\n q: query\n },\n this.options.geocodingQueryParams\n );\n\n getJSON(\n this.options.serviceUrl,\n params,\n L.bind(function(data) {\n cb.call(context, this._decodeFeatures(data));\n }, this)\n );\n },\n\n suggest: function(query, cb, context) {\n return this.geocode(query, cb, context);\n },\n\n reverse: function(latLng, scale, cb, context) {\n var params = L.extend(\n {\n lat: latLng.lat,\n lon: latLng.lng\n },\n this.options.reverseQueryParams\n );\n\n getJSON(\n this.options.reverseUrl,\n params,\n L.bind(function(data) {\n cb.call(context, this._decodeFeatures(data));\n }, this)\n );\n },\n\n _decodeFeatures: function(data) {\n var results = [],\n i,\n f,\n c,\n latLng,\n extent,\n bbox;\n\n if (data && data.features) {\n for (i = 0; i < data.features.length; i++) {\n f = data.features[i];\n c = f.geometry.coordinates;\n latLng = L.latLng(c[1], c[0]);\n extent = f.properties.extent;\n\n if (extent) {\n bbox = L.latLngBounds([extent[1], extent[0]], [extent[3], extent[2]]);\n } else {\n bbox = L.latLngBounds(latLng, latLng);\n }\n\n results.push({\n name: this._decodeFeatureName(f),\n html: this.options.htmlTemplate ? this.options.htmlTemplate(f) : undefined,\n center: latLng,\n bbox: bbox,\n properties: f.properties\n });\n }\n }\n\n return results;\n },\n\n _decodeFeatureName: function(f) {\n return (this.options.nameProperties || [])\n .map(function(p) {\n return f.properties[p];\n })\n .filter(function(v) {\n return !!v;\n })\n .join(', ');\n }\n});\n\nexport function photon(options) {\n return new Photon(options);\n}\n","import L from 'leaflet';\nimport { getJSON } from '../util';\n\nexport var What3Words = L.Class.extend({\n options: {\n serviceUrl: 'https://api.what3words.com/v2/'\n },\n\n initialize: function(accessToken) {\n this._accessToken = accessToken;\n },\n\n geocode: function(query, cb, context) {\n //get three words and make a dot based string\n getJSON(\n this.options.serviceUrl + 'forward',\n {\n key: this._accessToken,\n addr: query.split(/\\s+/).join('.')\n },\n function(data) {\n var results = [],\n latLng,\n latLngBounds;\n if (data.geometry) {\n latLng = L.latLng(data.geometry['lat'], data.geometry['lng']);\n latLngBounds = L.latLngBounds(latLng, latLng);\n results[0] = {\n name: data.words,\n bbox: latLngBounds,\n center: latLng\n };\n }\n\n cb.call(context, results);\n }\n );\n },\n\n suggest: function(query, cb, context) {\n return this.geocode(query, cb, context);\n },\n\n reverse: function(location, scale, cb, context) {\n getJSON(\n this.options.serviceUrl + 'reverse',\n {\n key: this._accessToken,\n coords: [location.lat, location.lng].join(',')\n },\n function(data) {\n var results = [],\n latLng,\n latLngBounds;\n if (data.status.status == 200) {\n latLng = L.latLng(data.geometry['lat'], data.geometry['lng']);\n latLngBounds = L.latLngBounds(latLng, latLng);\n results[0] = {\n name: data.words,\n bbox: latLngBounds,\n center: latLng\n };\n }\n cb.call(context, results);\n }\n );\n }\n});\n\nexport function what3words(accessToken) {\n return new What3Words(accessToken);\n}\n","import L from 'leaflet';\nimport { Nominatim } from './geocoders/index';\n\nexport var Geocoder = L.Control.extend({\n options: {\n showUniqueResult: true,\n showResultIcons: false,\n collapsed: true,\n expand: 'touch', // options: touch, click, anythingelse\n position: 'topright',\n placeholder: 'Search...',\n errorMessage: 'Nothing found.',\n iconLabel: 'Initiate a new search',\n queryMinLength: 1,\n suggestMinLength: 3,\n suggestTimeout: 250,\n defaultMarkGeocode: true\n },\n\n includes: L.Evented.prototype || L.Mixin.Events,\n\n initialize: function(options) {\n L.Util.setOptions(this, options);\n if (!this.options.geocoder) {\n this.options.geocoder = new Nominatim();\n }\n\n this._requestCount = 0;\n },\n\n addThrobberClass: function() {\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-throbber');\n },\n\n removeThrobberClass: function() {\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-throbber');\n },\n\n onAdd: function(map) {\n var className = 'leaflet-control-geocoder',\n container = L.DomUtil.create('div', className + ' leaflet-bar'),\n icon = L.DomUtil.create('button', className + '-icon', container),\n form = (this._form = L.DomUtil.create('div', className + '-form', container)),\n input;\n\n this._map = map;\n this._container = container;\n\n icon.innerHTML = ' ';\n icon.type = 'button';\n icon.setAttribute('aria-label', this.options.iconLabel);\n\n input = this._input = L.DomUtil.create('input', '', form);\n input.type = 'text';\n input.value = this.options.query || '';\n input.placeholder = this.options.placeholder;\n L.DomEvent.disableClickPropagation(input);\n\n this._errorElement = L.DomUtil.create('div', className + '-form-no-error', container);\n this._errorElement.innerHTML = this.options.errorMessage;\n\n this._alts = L.DomUtil.create(\n 'ul',\n className + '-alternatives leaflet-control-geocoder-alternatives-minimized',\n container\n );\n L.DomEvent.disableClickPropagation(this._alts);\n\n L.DomEvent.addListener(input, 'keydown', this._keydown, this);\n if (this.options.geocoder.suggest) {\n L.DomEvent.addListener(input, 'input', this._change, this);\n }\n L.DomEvent.addListener(\n input,\n 'blur',\n function() {\n if (this.options.collapsed && !this._preventBlurCollapse) {\n this._collapse();\n }\n this._preventBlurCollapse = false;\n },\n this\n );\n\n if (this.options.collapsed) {\n if (this.options.expand === 'click') {\n L.DomEvent.addListener(\n container,\n 'click',\n function(e) {\n if (e.button === 0 && e.detail !== 2) {\n this._toggle();\n }\n },\n this\n );\n } else if (this.options.expand === 'touch') {\n L.DomEvent.addListener(\n container,\n L.Browser.touch ? 'touchstart mousedown' : 'mousedown',\n function(e) {\n this._toggle();\n e.preventDefault(); // mobile: clicking focuses the icon, so UI expands and immediately collapses\n e.stopPropagation();\n },\n this\n );\n } else {\n L.DomEvent.addListener(container, 'mouseover', this._expand, this);\n L.DomEvent.addListener(container, 'mouseout', this._collapse, this);\n this._map.on('movestart', this._collapse, this);\n }\n } else {\n this._expand();\n if (L.Browser.touch) {\n L.DomEvent.addListener(\n container,\n 'touchstart',\n function() {\n this._geocode();\n },\n this\n );\n } else {\n L.DomEvent.addListener(\n container,\n 'click',\n function() {\n this._geocode();\n },\n this\n );\n }\n }\n\n if (this.options.defaultMarkGeocode) {\n this.on('markgeocode', this.markGeocode, this);\n }\n\n this.on('startgeocode', this.addThrobberClass, this);\n this.on('finishgeocode', this.removeThrobberClass, this);\n this.on('startsuggest', this.addThrobberClass, this);\n this.on('finishsuggest', this.removeThrobberClass, this);\n\n L.DomEvent.disableClickPropagation(container);\n\n return container;\n },\n\n setQuery: function(string) {\n this._input.value = string;\n return this;\n },\n\n _geocodeResult: function(results, suggest) {\n if (!suggest && this.options.showUniqueResult && results.length === 1) {\n this._geocodeResultSelected(results[0]);\n } else if (results.length > 0) {\n this._alts.innerHTML = '';\n this._results = results;\n L.DomUtil.removeClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-open');\n for (var i = 0; i < results.length; i++) {\n this._alts.appendChild(this._createAlt(results[i], i));\n }\n } else {\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-options-error');\n L.DomUtil.addClass(this._errorElement, 'leaflet-control-geocoder-error');\n }\n },\n\n markGeocode: function(result) {\n result = result.geocode || result;\n\n this._map.fitBounds(result.bbox);\n\n if (this._geocodeMarker) {\n this._map.removeLayer(this._geocodeMarker);\n }\n\n this._geocodeMarker = new L.Marker(result.center)\n .bindPopup(result.html || result.name)\n .addTo(this._map)\n .openPopup();\n\n return this;\n },\n\n _geocode: function(suggest) {\n var value = this._input.value;\n if (!suggest && value.length < this.options.queryMinLength) {\n return;\n }\n\n var requestCount = ++this._requestCount,\n mode = suggest ? 'suggest' : 'geocode',\n eventData = { input: value };\n\n this._lastGeocode = value;\n if (!suggest) {\n this._clearResults();\n }\n\n this.fire('start' + mode, eventData);\n this.options.geocoder[mode](\n value,\n function(results) {\n if (requestCount === this._requestCount) {\n eventData.results = results;\n this.fire('finish' + mode, eventData);\n this._geocodeResult(results, suggest);\n }\n },\n this\n );\n },\n\n _geocodeResultSelected: function(result) {\n this.fire('markgeocode', { geocode: result });\n },\n\n _toggle: function() {\n if (L.DomUtil.hasClass(this._container, 'leaflet-control-geocoder-expanded')) {\n this._collapse();\n } else {\n this._expand();\n }\n },\n\n _expand: function() {\n L.DomUtil.addClass(this._container, 'leaflet-control-geocoder-expanded');\n this._input.select();\n this.fire('expand');\n },\n\n _collapse: function() {\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-expanded');\n L.DomUtil.addClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');\n L.DomUtil.removeClass(this._errorElement, 'leaflet-control-geocoder-error');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-open');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-error');\n this._input.blur(); // mobile: keyboard shouldn't stay expanded\n this.fire('collapse');\n },\n\n _clearResults: function() {\n L.DomUtil.addClass(this._alts, 'leaflet-control-geocoder-alternatives-minimized');\n this._selection = null;\n L.DomUtil.removeClass(this._errorElement, 'leaflet-control-geocoder-error');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-open');\n L.DomUtil.removeClass(this._container, 'leaflet-control-geocoder-options-error');\n },\n\n _createAlt: function(result, index) {\n var li = L.DomUtil.create('li', ''),\n a = L.DomUtil.create('a', '', li),\n icon = this.options.showResultIcons && result.icon ? L.DomUtil.create('img', '', a) : null,\n text = result.html ? undefined : document.createTextNode(result.name),\n mouseDownHandler = function mouseDownHandler(e) {\n // In some browsers, a click will fire on the map if the control is\n // collapsed directly after mousedown. To work around this, we\n // wait until the click is completed, and _then_ collapse the\n // control. Messy, but this is the workaround I could come up with\n // for #142.\n this._preventBlurCollapse = true;\n L.DomEvent.stop(e);\n this._geocodeResultSelected(result);\n L.DomEvent.on(\n li,\n 'click touchend',\n function() {\n if (this.options.collapsed) {\n this._collapse();\n } else {\n this._clearResults();\n }\n },\n this\n );\n };\n\n if (icon) {\n icon.src = result.icon;\n }\n\n li.setAttribute('data-result-index', index);\n\n if (result.html) {\n a.innerHTML = a.innerHTML + result.html;\n } else {\n a.appendChild(text);\n }\n\n // Use mousedown and not click, since click will fire _after_ blur,\n // causing the control to have collapsed and removed the items\n // before the click can fire.\n L.DomEvent.addListener(li, 'mousedown touchstart', mouseDownHandler, this);\n\n return li;\n },\n\n _keydown: function(e) {\n var _this = this,\n select = function select(dir) {\n if (_this._selection) {\n L.DomUtil.removeClass(_this._selection, 'leaflet-control-geocoder-selected');\n _this._selection = _this._selection[dir > 0 ? 'nextSibling' : 'previousSibling'];\n }\n if (!_this._selection) {\n _this._selection = _this._alts[dir > 0 ? 'firstChild' : 'lastChild'];\n }\n\n if (_this._selection) {\n L.DomUtil.addClass(_this._selection, 'leaflet-control-geocoder-selected');\n }\n };\n\n switch (e.keyCode) {\n // Escape\n case 27:\n if (this.options.collapsed) {\n this._collapse();\n } else {\n this._clearResults();\n }\n break;\n // Up\n case 38:\n select(-1);\n break;\n // Up\n case 40:\n select(1);\n break;\n // Enter\n case 13:\n if (this._selection) {\n var index = parseInt(this._selection.getAttribute('data-result-index'), 10);\n this._geocodeResultSelected(this._results[index]);\n this._clearResults();\n } else {\n this._geocode();\n }\n break;\n default:\n return;\n }\n\n L.DomEvent.preventDefault(e);\n },\n _change: function() {\n var v = this._input.value;\n if (v !== this._lastGeocode) {\n clearTimeout(this._suggestTimeout);\n if (v.length >= this.options.suggestMinLength) {\n this._suggestTimeout = setTimeout(\n L.bind(function() {\n this._geocode(true);\n }, this),\n this.options.suggestTimeout\n );\n } else {\n this._clearResults();\n }\n }\n }\n});\n\nexport function geocoder(options) {\n return new Geocoder(options);\n}\n","import L from 'leaflet';\nimport { Geocoder, geocoder } from './control';\nimport * as geocoders from './geocoders/index';\n\nL.Util.extend(Geocoder, geocoders);\nexport default Geocoder;\n\nL.Util.extend(L.Control, {\n Geocoder: Geocoder,\n geocoder: geocoder\n});\n"],"names":["lastCallbackId","badChars","possible","escape","&","<",">","\"","'","`","escapeChar","chr","jsonp","url","params","callback","context","jsonpParam","callbackId","window","L","Util","bind","script","document","createElement","type","src","getParamString","id","getElementsByTagName","appendChild","getJSON","xmlHttp","XMLHttpRequest","onreadystatechange","readyState","message","status","response","JSON","parse","e","open","responseType","setRequestHeader","send","template","str","data","replace","key","string","value","undefined","test","obj","existingUrl","uppercase","i","encodeURIComponent","toUpperCase","isArray","j","length","push","indexOf","join","ArcGis","Class","extend","options","service_url","initialize","accessToken","setOptions","this","_accessToken","geocode","query","cb","SingleLine","outFields","forStorage","maxLocations","f","_key","token","geocodingQueryParams","loc","latLng","latLngBounds","results","candidates","location","y","x","extent","ymax","xmax","ymin","xmin","name","address","bbox","center","call","suggest","reverse","scale","lng","lat","distance","result","error","Match_addr","bounds","Bing","resourceSets","resources","resource","point","coordinates","Google","serviceUrl","reverseQueryParams","geometry","viewport","northeast","southwest","formatted_address","properties","address_components","latlng","HERE","geocodeUrl","reverseGeocodeUrl","app_id","app_code","reverseGeocodeProxRadius","searchtext","gen","jsonattributes","_proxRadius","proxRadius","prox","mode","view","displayPosition","latitude","longitude","mapView","topLeft","bottomRight","label","LatLng","next","sizeInMeters","match","parseFloat","toBounds","Mapbox","access_token","proximity","features","slice","text","split","short_code","place_name","MapQuest","decodeURIComponent","_formatName","r","arguments","limit","outFormat","locations","street","adminArea4","adminArea3","adminArea1","outputFormat","Neutrino","userId","apiKey","found","Nominatim","htmlTemplate","className","a","parts","road","building","city","town","village","hamlet","state","country","q","format","addressdetails","boundingbox","icon","display_name","html","lon","zoom","Math","round","log","OpenLocationCode","codeLength","decoded","decode","latitudeCenter","longitudeCenter","latitudeLo","longitudeLo","latitudeHi","longitudeHi","console","warn","encode","OpenCage","annotations","formatted","Pelias","_apiKey","_lastSuggest","_this","api_key","_parseResults","geocoding","timestamp","point.lat","point.lon","bboxname","geoJson","pointToLayer","feature","circleMarker","onEachFeature","layer","getBounds","getCenter","getLatLng","GeoJSON","coordsToLatLng","pelias","GeocodeEarth","geocodeEarth","Mapzen","mapzen","Openrouteservice","Photon","reverseUrl","nameProperties","_decodeFeatures","c","_decodeFeatureName","map","p","filter","v","What3Words","addr","words","coords","Geocoder","Control","showUniqueResult","showResultIcons","collapsed","expand","position","placeholder","errorMessage","iconLabel","queryMinLength","suggestMinLength","suggestTimeout","defaultMarkGeocode","includes","Evented","prototype","Mixin","Events","geocoder","_requestCount","addThrobberClass","DomUtil","addClass","_container","removeThrobberClass","removeClass","onAdd","input","container","create","form","_form","_map","innerHTML","setAttribute","_input","DomEvent","disableClickPropagation","_errorElement","_alts","addListener","_keydown","_change","_preventBlurCollapse","_collapse","button","detail","_toggle","Browser","touch","preventDefault","stopPropagation","_expand","on","_geocode","markGeocode","setQuery","_geocodeResult","_geocodeResultSelected","_results","_createAlt","fitBounds","_geocodeMarker","removeLayer","Marker","bindPopup","addTo","openPopup","requestCount","eventData","_lastGeocode","_clearResults","fire","hasClass","select","blur","_selection","index","li","createTextNode","stop","dir","keyCode","parseInt","getAttribute","clearTimeout","_suggestTimeout","setTimeout","geocoders"],"mappings":"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"}