From: marc tobias Date: Thu, 8 Feb 2018 16:45:43 +0000 (+0100) Subject: parsing coordinates allows second with floats X-Git-Tag: v3.2.0~130^2 X-Git-Url: https://git.openstreetmap.org/nominatim.git/commitdiff_plain/5042be1b72f9f3ed86b1242be8c93fad4ef87857 parsing coordinates allows second with floats --- diff --git a/lib/lib.php b/lib/lib.php index b5c4df13..e283e836 100644 --- a/lib/lib.php +++ b/lib/lib.php @@ -530,11 +530,12 @@ function parseLatLon($sQuery) $sFound = $aData[0]; $fQueryLat = ($aData[1]=='N'?1:-1) * ($aData[2] + $aData[3]/60 + $aData[4]/3600); $fQueryLon = ($aData[5]=='E'?1:-1) * ($aData[6] + $aData[7]/60 + $aData[8]/3600); - } elseif (preg_match('/\\s*([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″" ]+([NS])[, ]+([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″" ]+([EW])\\s*/', $sQuery, $aData)) { - /* 1 2 3 4 5 6 7 8 + } elseif (preg_match('/\\s*([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+[0-9.]*)[″" ]+([NS])[, ]+([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+[0-9.]*)[″" ]+([EW])\\s*/', $sQuery, $aData)) { + /* 1 2 3 4 5 6 7 8 * degrees decimal seconds * 40 26 46 N 79 58 56 W * 40° 26′ 46″ N, 79° 58′ 56″ W + * 40° 26′ 46.78″ N, 79° 58′ 56.89″ W */ $sFound = $aData[0]; $fQueryLat = ($aData[4]=='N'?1:-1) * ($aData[1] + $aData[2]/60 + $aData[3]/3600); diff --git a/test/php/Nominatim/NominatimTest.php b/test/php/Nominatim/NominatimTest.php index 60770208..ed738c37 100644 --- a/test/php/Nominatim/NominatimTest.php +++ b/test/php/Nominatim/NominatimTest.php @@ -171,6 +171,8 @@ class NominatimTest extends \PHPUnit_Framework_TestCase '40 26 46 N 79 58 56 W', '40° 26′ 46″ N 79° 58′ 56″ W', + '40° 26′ 46.00″ N 79° 58′ 56.00″ W', + '40°26′46″N 79°58′56″W', 'N 40 26 46 W 79 58 56', 'N 40° 26′ 46″, W 79° 58′ 56″', 'N 40° 26\' 46", W 79° 58\' 56"',