X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/d6e7bbaad9d383a4fdd5011fc0acf7ba0ff859a4..9fb413a126ad7472ff96a4b78d5693ca132f5d81:/lib/lib.php?ds=sidebyside diff --git a/lib/lib.php b/lib/lib.php index a2e58c4b..2134e1a4 100644 --- a/lib/lib.php +++ b/lib/lib.php @@ -39,6 +39,12 @@ exit; } + function getParamBool($name, $default=false) + { + if (!isset($_GET[$name])) return $default; + + return (bool) $_GET[$name]; + } function fail($sError, $sUserError = false) { @@ -95,7 +101,7 @@ function bySearchRank($a, $b) { if ($a['iSearchRank'] == $b['iSearchRank']) - return strlen($a['sOperator']) + strlen($a['sHouseNumber']) - strlen($b['sOperator']) - strlen($b['sHouseNumber']); + return strlen($a['sOperator']) + strlen($a['sHouseNumber']) - strlen($b['sOperator']) - strlen($b['sHouseNumber']); return ($a['iSearchRank'] < $b['iSearchRank']?-1:1); } @@ -193,6 +199,26 @@ return $aResult; } + function getInverseWordSets($aWords, $iDepth) + { + $aResult = array(array(join(' ',$aWords))); + $sFirstToken = ''; + if ($iDepth < 8) + { + while(sizeof($aWords) > 1) + { + $sWord = array_pop($aWords); + $sFirstToken = $sWord.($sFirstToken?' ':'').$sFirstToken; + $aRest = getInverseWordSets($aWords, $iDepth+1); + foreach($aRest as $aSet) + { + $aResult[] = array_merge(array($sFirstToken),$aSet); + } + } + } + return $aResult; + } + function getTokensFromSets($aSets) { @@ -358,7 +384,7 @@ 'landuse:farm' => array('label'=>'Farm','frequency'=>1201,'icon'=>'', 'defdiameter' => 0.02,), 'place:farm' => array('label'=>'Farm','frequency'=>1162,'icon'=>'', 'defdiameter' => 0.02,), - 'highway:motorway_junction' => array('label'=>'Motorway Junction','frequency'=>1126,'icon'=>'','simplelabel'=>'Road',), + 'highway:motorway_junction' => array('label'=>'Motorway Junction','frequency'=>1126,'icon'=>'','simplelabel'=>'Junction',), 'highway:motorway' => array('label'=>'Motorway','frequency'=>4627,'icon'=>'','simplelabel'=>'Road',), 'highway:trunk' => array('label'=>'Trunk','frequency'=>23084,'icon'=>'','simplelabel'=>'Road',), 'highway:primary' => array('label'=>'Primary','frequency'=>32138,'icon'=>'','simplelabel'=>'Road',), @@ -418,7 +444,6 @@ 'tourism:hotel' => array('label'=>'Hotel','frequency'=>2150,'icon'=>'accommodation_hotel2',), 'tourism:motel' => array('label'=>'Motel','frequency'=>43,'icon'=>'',), 'amenity:cinema' => array('label'=>'Cinema','frequency'=>277,'icon'=>'tourist_cinema',), - 'tourism:information' => array('label'=>'Information','frequency'=>224,'icon'=>'amenity_information',), 'tourism:artwork' => array('label'=>'Artwork','frequency'=>171,'icon'=>'tourist_art_gallery2',), 'historic:archaeological_site' => array('label'=>'Archaeological Site','frequency'=>407,'icon'=>'tourist_archaeological2',), 'amenity:doctors' => array('label'=>'Doctors','frequency'=>581,'icon'=>'health_doctors',), @@ -460,7 +485,7 @@ 'shop:electronics' => array('label'=>'Electronics','frequency'=>96,'icon'=>'',), 'shop:department_store' => array('label'=>'Department Store','frequency'=>86,'icon'=>'',), 'shop:books' => array('label'=>'Books','frequency'=>85,'icon'=>'',), - 'shop:yes' => array('label'=>'Yes','frequency'=>68,'icon'=>'',), + 'shop:yes' => array('label'=>'Shop','frequency'=>68,'icon'=>'',), 'shop:outdoor' => array('label'=>'Outdoor','frequency'=>67,'icon'=>'',), 'shop:mall' => array('label'=>'Mall','frequency'=>63,'icon'=>'',), 'shop:florist' => array('label'=>'Florist','frequency'=>61,'icon'=>'',), @@ -492,6 +517,7 @@ 'shop:travel_agency' => array('label'=>'Travel Agency','frequency'=>21,'icon'=>'',), 'shop:hifi' => array('label'=>'Hifi','frequency'=>21,'icon'=>'',), 'amenity:shop' => array('label'=>'Shop','frequency'=>61,'icon'=>'',), + 'tourism:information' => array('label'=>'Information','frequency'=>224,'icon'=>'amenity_information',), 'place:house' => array('label'=>'House','frequency'=>2086,'icon'=>'','defzoom'=>18,), 'place:house_name' => array('label'=>'House','frequency'=>2086,'icon'=>'','defzoom'=>18,), @@ -605,7 +631,7 @@ 'historic:roman_road' => array('label'=>'Roman Road','frequency'=>27,'icon'=>'',), 'historic:fort' => array('label'=>'Fort','frequency'=>26,'icon'=>'',), 'railway:subway_entrance' => array('label'=>'Subway Entrance','frequency'=>26,'icon'=>'',), - 'historic:yes' => array('label'=>'Yes','frequency'=>25,'icon'=>'',), + 'historic:yes' => array('label'=>'Historic','frequency'=>25,'icon'=>'',), 'highway:gate' => array('label'=>'Gate','frequency'=>25,'icon'=>'',), 'leisure:fishing' => array('label'=>'Fishing','frequency'=>24,'icon'=>'',), 'historic:museum' => array('label'=>'Museum','frequency'=>24,'icon'=>'',), @@ -648,10 +674,12 @@ } - function javascript_renderData($xVal) + function javascript_renderData($xVal, $iOptions = 0) { header("Access-Control-Allow-Origin: *"); - $jsonout = json_encode($xVal); + if (defined('PHP_VERSION_ID') && PHP_VERSION_ID > 50400) + $iOptions |= JSON_UNESCAPED_UNICODE; + $jsonout = json_encode($xVal, $iOptions); if( ! isset($_GET['json_callback'])) { @@ -942,7 +970,7 @@ } // degrees decimal seconds // N 40 26 46 W 79 58 56 - // N 40° 26′ 46″ W, 79° 58′ 56″ + // N 40° 26′ 46″, W 79° 58′ 56″ // 1 2 3 4 5 6 7 8 elseif (preg_match('/\\b([NS])[ ]([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″"]*[, ]+([EW])[ ]([0-9]+)[° ]+([0-9]+)[′\' ]+([0-9]+)[″"]*\\b/', $sQuery, $aData)) {