From: Sarah Hoffmann Date: Sun, 22 Oct 2017 18:20:56 +0000 (+0200) Subject: make PlaceLookup::lookup() accept multiple results X-Git-Tag: v3.1.0~38^2~3 X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/914caab43d233a5eee17129f529a77c262bcc524 make PlaceLookup::lookup() accept multiple results --- diff --git a/lib/PlaceLookup.php b/lib/PlaceLookup.php index 5fb88062..6af55900 100644 --- a/lib/PlaceLookup.php +++ b/lib/PlaceLookup.php @@ -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) diff --git a/website/reverse.php b/website/reverse.php index 19f1ae31..74bd700d 100755 --- a/website/reverse.php +++ b/website/reverse.php @@ -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."); }