]> git.openstreetmap.org Git - nominatim.git/blobdiff - website/reverse.php
Merge remote-tracking branch 'upstream/master'
[nominatim.git] / website / reverse.php
index 3f062f46bff8b870eaff8a4194cb0990dea89f24..daf0a72ddebdd5d4236b6827afcf5885a16e153a 100755 (executable)
 
        // Format for output
        $sOutputFormat = 'xml';
-       if (isset($_GET['format']) && ($_GET['format'] == 'xml' || $_GET['format'] == 'json' || $_GET['format'] == 'jsonv2'))
+       if (isset($_GET['format']) && ( $_GET['format'] == 'html' || $_GET['format'] == 'xml' || $_GET['format'] == 'json' || $_GET['format'] == 'jsonv2'))
        {
                $sOutputFormat = $_GET['format'];
        }
 
-       // Show address breakdown
-       $bShowAddressDetails = true;
-       if (isset($_GET['addressdetails'])) $bShowAddressDetails = (bool)$_GET['addressdetails'];
-
        // Preferred language
        $aLangPrefOrder = getPreferredLanguages();
 
        $hLog = logStart($oDB, 'reverse', $_SERVER['QUERY_STRING'], $aLangPrefOrder);
 
+
        if (isset($_GET['osm_type']) && isset($_GET['osm_id']) && (int)$_GET['osm_id'] && ($_GET['osm_type'] == 'N' || $_GET['osm_type'] == 'W' || $_GET['osm_type'] == 'R'))
        {
-               $oPlaceLookup = new PlaceLookup($oDB);
-               $oPlaceLookup->setLanguagePreference($aLangPrefOrder);
-               $oPlaceLookup->setIncludeAddressDetails($bShowAddressDetails);
-               $oPlaceLookup->setOSMID($_GET['osm_type'], $_GET['osm_id']);
-
-               $aPlace = $oPlaceLookup->lookup();
-
-               //if (!$iPlaceID) $sError = 'OSM ID Not Found';
+               $aLookup = array('osm_type' => $_GET['osm_type'], 'osm_id' => $_GET['osm_id']);
        }
-       else
+       else if (isset($_GET['lat']) && isset($_GET['lon']) && preg_match('/^[+-]?[0-9]*\.?[0-9]+$/', $_GET['lat']) && preg_match('/^[+-]?[0-9]*\.?[0-9]+$/', $_GET['lon']))
        {
                $oReverseGeocode = new ReverseGeocode($oDB);
                $oReverseGeocode->setLanguagePreference($aLangPrefOrder);
-               $oReverseGeocode->setIncludeAddressDetails($bShowAddressDetails);
 
                $oReverseGeocode->setLatLon($_GET['lat'], $_GET['lon']);
                $oReverseGeocode->setZoom(@$_GET['zoom']);
 
-               $aPlace = $oReverseGeocode->lookup();
+               $aLookup = $oReverseGeocode->lookup();
+               if (CONST_Debug) var_dump($aLookup);
+       }
+       else
+       {
+               $aLookup = null;
+       }
+
+       if ($aLookup)
+       {
+               $oPlaceLookup = new PlaceLookup($oDB);
+               $oPlaceLookup->setLanguagePreference($aLangPrefOrder);
+               $oPlaceLookup->setIncludeAddressDetails(getParamBool('addressdetails', true));
+               $oPlaceLookup->setIncludeExtraTags(getParamBool('extratags', false));
+               $oPlaceLookup->setIncludeNameDetails(getParamBool('namedetails', false));
+
+               $aPlace = $oPlaceLookup->lookupPlace($aLookup);
+       }
+       else
+       {
+               $aPlace = null;
        }
 
        logEnd($oDB, $hLog, sizeof($aPlace)?1:0);
 
-       if (CONST_Debug) exit;
+       if (CONST_Debug)
+       {
+               var_dump($aPlace);
+               exit;
+       }
 
        include(CONST_BasePath.'/lib/template/address-'.$sOutputFormat.'.php');