]> git.openstreetmap.org Git - nominatim.git/commitdiff
make PlaceLookup::lookup() accept multiple results
authorSarah Hoffmann <lonvia@denofr.de>
Sun, 22 Oct 2017 18:20:56 +0000 (20:20 +0200)
committerSarah Hoffmann <lonvia@denofr.de>
Mon, 23 Oct 2017 21:30:53 +0000 (23:30 +0200)
lib/PlaceLookup.php
website/reverse.php

index 5fb88062473ba5176a8952c2fe6cbad766860c51..6af559004c9f00495a44858ae9c0f395d2b7ba71 100644 (file)
@@ -133,17 +133,16 @@ class PlaceLookup
             return null;
         }
 
-        return $this->lookup(new Result($iPlaceID));
+        $aResults = $this->lookup(array($iPlaceID => new Result($iPlaceID)));
+
+        return sizeof($aResults) ? reset($aResults) : null;
     }
 
-    public function lookup($oResult, $iMinRank = 0, $iMaxRank = 30)
+    public function lookup($aResults, $iMinRank = 0, $iMaxRank = 30)
     {
-        if ($oResult === null) {
-            return null;
+        if (!sizeof($aResults)) {
+            return array();
         }
-
-        $aResults = array($oResult->iId => $oResult);
-
         $aSubSelects = array();
 
         $sPlaceIDs = Result::joinIdsByTable($aResults, Result::TABLE_PLACEX);
@@ -381,7 +380,7 @@ class PlaceLookup
         if (CONST_Debug) var_dump($aSubSelects);
 
         if (!sizeof($aSubSelects)) {
-            return null;
+            return array();
         }
 
         $aPlaces = chksql(
@@ -389,12 +388,6 @@ class PlaceLookup
             "Could not lookup place"
         );
 
-        if (!sizeof($aPlaces)) {
-            return null;
-        }
-
-        if (CONST_Debug) var_dump($aPlaces);
-
         foreach ($aPlaces as &$aPlace) {
             if ($this->bAddressDetails) {
                 // to get addressdetails for tiger data, the housenumber is needed
@@ -437,7 +430,7 @@ class PlaceLookup
 
         if (CONST_Debug) var_dump($aPlaces);
 
-        return reset($aPlaces);
+        return $aPlaces;
     }
 
     private function getAddressDetails($iPlaceID, $bAll, $sHousenumber)
index 19f1ae318d4637098bcd442024d66d5253e06248..74bd700d5107f39a73ecab73ae793d03162e36f5 100755 (executable)
@@ -59,7 +59,12 @@ if ($sOsmType && $iOsmId > 0) {
     $oLookup = $oReverseGeocode->lookup($fLat, $fLon);
     if (CONST_Debug) var_dump($oLookup);
 
-    $aPlace = $oPlaceLookup->lookup($oLookup);
+    if ($oLookup) {
+        $aPlaces = $oPlaceLookup->lookup(array($oLookup->iId => $oLookup));
+        if (sizeof($aPlaces)) {
+            $aPlace = reset($aPlaces);
+        }
+    }
 } elseif ($sOutputFormat != 'html') {
     userError("Need coordinates or OSM object to lookup.");
 }