+ endpoint.setValue = function (value) {
+ if (endpoint.geocodeRequest) endpoint.geocodeRequest.abort();
+ delete endpoint.geocodeRequest;
+ input.removeClass("is-invalid");
+
+ var coordinatesMatch = value.match(/^\s*([+-]?\d+(?:\.\d*)?)(?:\s+|\s*[/,]\s*)([+-]?\d+(?:\.\d*)?)\s*$/);
+ var latlng = coordinatesMatch && L.latLng(coordinatesMatch[1], coordinatesMatch[2]);
+
+ if (latlng && endpoint.cachedReverseGeocode && endpoint.cachedReverseGeocode.latlng.equals(latlng)) {
+ setLatLng(latlng);
+ if (endpoint.cachedReverseGeocode.notFound) {
+ endpoint.value = value;
+ input.addClass("is-invalid");
+ } else {
+ endpoint.value = endpoint.cachedReverseGeocode.value;
+ }
+ input.val(endpoint.value);
+ changeCallback();
+ return;
+ }
+