diff --git a/web/src/lib/components/shared-components/change-location.svelte b/web/src/lib/components/shared-components/change-location.svelte index 0102e34977..57fcf9c98d 100644 --- a/web/src/lib/components/shared-components/change-location.svelte +++ b/web/src/lib/components/shared-components/change-location.svelte @@ -86,6 +86,27 @@ return; } + // Try to parse coordinate pair from search input in the format `LATITUDE, LONGITUDE` as floats + const coordinateParts = searchWord.split(',').map((part) => part.trim()); + if (coordinateParts.length === 2) { + const coordinateLat = Number.parseFloat(coordinateParts[0]); + const coordinateLng = Number.parseFloat(coordinateParts[1]); + + if ( + !Number.isNaN(coordinateLat) && + !Number.isNaN(coordinateLng) && + coordinateLat >= -90 && + coordinateLat <= 90 && + coordinateLng >= -180 && + coordinateLng <= 180 + ) { + places = []; + showLoadingSpinner = false; + handleUseSuggested(coordinateLat, coordinateLng); + return; + } + } + searchPlaces({ name: searchWord }) .then((searchResult) => { // skip result when a newer search is happening