X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/6bc4b207315992645292c7b3bfc0cfbef87c152f..bb9a8958fb5bbe630da5c4bfd592a96b259df5b3:/app/assets/javascripts/index/directions-endpoint.js diff --git a/app/assets/javascripts/index/directions-endpoint.js b/app/assets/javascripts/index/directions-endpoint.js index 7fe4b4ea7..b475b9a05 100644 --- a/app/assets/javascripts/index/directions-endpoint.js +++ b/app/assets/javascripts/index/directions-endpoint.js @@ -36,6 +36,9 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch function markerDragListener(e) { var latlng = convertLatLngToZoomPrecision(e.target.getLatLng()); + if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort(); + delete endpoint.geocodeRequest; + setLatLng(latlng); setInputValueFromLatLng(latlng); endpoint.value = input.val(); @@ -52,12 +55,18 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch endpoint.setValue(value); } - endpoint.setValue = function (value, latlng) { + endpoint.setValue = function (value) { endpoint.value = value; removeLatLng(); input.removeClass("is-invalid"); input.val(value); + if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort(); + delete endpoint.geocodeRequest; + + var coordinatesMatch = value.match(/^\s*([+-]?\d+(?:\.\d*)?)(?:\s+|\s*[/,]\s*)([+-]?\d+(?:\.\d*)?)\s*$/); + var latlng = coordinatesMatch && L.latLng(coordinatesMatch[1], coordinatesMatch[2]); + if (latlng) { setLatLng(latlng); setInputValueFromLatLng(latlng); @@ -71,7 +80,6 @@ OSM.DirectionsEndpoint = function Endpoint(map, input, iconUrl, dragCallback, ch var viewbox = map.getBounds().toBBoxString(); // ,,, var geocodeUrl = OSM.NOMINATIM_URL + "search?q=" + encodeURIComponent(endpoint.value) + "&format=json&viewbox=" + viewbox; - if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort(); endpoint.geocodeRequest = $.getJSON(geocodeUrl, function (json) { delete endpoint.geocodeRequest; if (json.length === 0) {