X-Git-Url: https://git.openstreetmap.org/nominatim.git/blobdiff_plain/153dbb71b8fe632c3cbda3834b012bf9db77d365..dddfa3a075f11145432b69ec053f8145dce9612b:/lib-php/lib.php diff --git a/lib-php/lib.php b/lib-php/lib.php index 89b54363..f7c6e55e 100644 --- a/lib-php/lib.php +++ b/lib-php/lib.php @@ -1,15 +1,20 @@ $b['importance']?-1:1); + } return $a['foundorder'] <=> $b['foundorder']; } @@ -132,24 +130,6 @@ function addQuotes($s) return "'".$s."'"; } -function fwriteConstDef($rFile, $sConstName, $value) -{ - $sEscapedValue; - - if (is_bool($value)) { - $sEscapedValue = $value ? 'true' : 'false'; - } elseif (is_numeric($value)) { - $sEscapedValue = strval($value); - } elseif (!$value) { - $sEscapedValue = 'false'; - } else { - $sEscapedValue = addQuotes(str_replace("'", "\\'", (string)$value)); - } - - fwrite($rFile, "@define('CONST_$sConstName', $sEscapedValue);\n"); -} - - function parseLatLon($sQuery) { $sFound = null; @@ -226,22 +206,41 @@ function parseLatLon($sQuery) return array($sFound, $fQueryLat, $fQueryLon); } -function closestHouseNumber($aRow) +function addressRankToGeocodeJsonType($iAddressRank) { - $fHouse = $aRow['startnumber'] - + ($aRow['endnumber'] - $aRow['startnumber']) * $aRow['fraction']; - - switch ($aRow['interpolationtype']) { - case 'odd': - $iHn = (int)($fHouse/2) * 2 + 1; - break; - case 'even': - $iHn = (int)(round($fHouse/2)) * 2; - break; - default: - $iHn = (int)(round($fHouse)); - break; - } - - return max(min($aRow['endnumber'], $iHn), $aRow['startnumber']); + if ($iAddressRank >= 29 && $iAddressRank <= 30) { + return 'house'; + } + if ($iAddressRank >= 26 && $iAddressRank < 28) { + return 'street'; + } + if ($iAddressRank >= 22 && $iAddressRank < 26) { + return 'locality'; + } + if ($iAddressRank >= 17 && $iAddressRank < 22) { + return 'district'; + } + if ($iAddressRank >= 13 && $iAddressRank < 17) { + return 'city'; + } + if ($iAddressRank >= 10 && $iAddressRank < 13) { + return 'county'; + } + if ($iAddressRank >= 5 && $iAddressRank < 10) { + return 'state'; + } + if ($iAddressRank >= 4 && $iAddressRank < 5) { + return 'country'; + } + + return 'locality'; +} + +if (!function_exists('array_key_last')) { + function array_key_last(array $array) + { + if (!empty($array)) { + return key(array_slice($array, -1, 1, true)); + } + } }