X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/023f94b066c11628ecc87ca9876dbe5ec4136776..7e00a6e2ff8d7bd3f5f7773b657bad00830fd786:/lib/lib.php
diff --git a/lib/lib.php b/lib/lib.php
index 76775d6c..e283e836 100644
--- a/lib/lib.php
+++ b/lib/lib.php
@@ -38,7 +38,7 @@ function getDatabaseDate(&$oDB)
// Find the newest node in the DB
$iLastOSMID = $oDB->getOne("select max(osm_id) from place where osm_type = 'N'");
// Lookup the timestamp that node was created
- $sLastNodeURL = 'https://www.openstreetmap.org/api/0.6/node/'.$iLastOSMID."/1";
+ $sLastNodeURL = 'https://www.openstreetmap.org/api/0.6/node/'.$iLastOSMID.'/1';
$sLastNodeXML = file_get_contents($sLastNodeURL);
if ($sLastNodeXML === false) {
@@ -413,11 +413,11 @@ function javascript_renderData($xVal, $iOptions = 0)
$jsonout = json_encode($xVal, $iOptions);
if (!isset($_GET['json_callback'])) {
- header("Content-Type: application/json; charset=UTF-8");
+ header('Content-Type: application/json; charset=UTF-8');
echo $jsonout;
} else {
if (preg_match('/^[$_\p{L}][$_\p{L}\p{Nd}.[\]]*$/u', $_GET['json_callback'])) {
- header("Content-Type: application/javascript; charset=UTF-8");
+ header('Content-Type: application/javascript; charset=UTF-8');
echo $_GET['json_callback'].'('.$jsonout.')';
} else {
header('HTTP/1.0 400 Bad Request');
@@ -439,16 +439,16 @@ function _debugDumpGroupedSearches($aData, $aTokens)
}
}
}
- echo "
";
- echo "rank | Name Tokens | Name Not | ";
- echo "Address Tokens | Address Not | country | operator | ";
- echo "class | type | postcode | housenumber |
";
+ echo '';
+ echo 'rank | Name Tokens | Name Not | ';
+ echo 'Address Tokens | Address Not | country | operator | ';
+ echo 'class | type | postcode | housenumber |
';
foreach ($aData as $iRank => $aRankedSet) {
foreach ($aRankedSet as $aRow) {
$aRow->dumpAsHtmlTableRow($aWordsIDs);
}
}
- echo "
";
+ echo '
';
}
@@ -456,7 +456,7 @@ function getAddressDetails(&$oDB, $sLanguagePrefArraySQL, $iPlaceID, $sCountryCo
{
$sSQL = "select *,get_name_by_language(name,$sLanguagePrefArraySQL) as localname from get_addressdata($iPlaceID, $housenumber)";
if (!$bRaw) $sSQL .= " WHERE isaddress OR type = 'country_code'";
- $sSQL .= " order by rank_address desc,isaddress desc";
+ $sSQL .= ' order by rank_address desc,isaddress desc';
$aAddressLines = chksql($oDB->getAll($sSQL));
if ($bRaw) return $aAddressLines;
@@ -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);
@@ -615,3 +616,23 @@ function createPointsAroundCenter($fLon, $fLat, $fRadius)
}
return $aPolyPoints;
}
+
+function closestHouseNumber($aRow)
+{
+ $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']);
+}