]> git.openstreetmap.org Git - nominatim.git/commitdiff
parsing coordinates allows second with floats
authormarc tobias <mtmail@gmx.net>
Thu, 8 Feb 2018 16:45:43 +0000 (17:45 +0100)
committermarc tobias <mtmail@gmx.net>
Thu, 8 Feb 2018 16:45:43 +0000 (17:45 +0100)
lib/lib.php
test/php/Nominatim/NominatimTest.php

index b5c4df133b9e79cda4fa8f33b4cf93516132865d..e283e8369ee7dbe19ddf5b984f496964da0adb64 100644 (file)
@@ -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);
index 60770208a9d21277c61f80230031a27109999bc1..ed738c3773046a1739b138273131ad67c3ac76c3 100644 (file)
@@ -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"',