示例#1
0
 $oPlaceLookup->setIncludeNameDetails(getParamBool('namedetails', false));
 $aOsmIds = explode(',', $_GET['osm_ids']);
 if (count($aOsmIds) > CONST_Places_Max_ID_count) {
     userError('Bulk User: Only ' . CONST_Places_Max_ID_count . " ids are allowed in one request.");
     exit;
 }
 foreach ($aOsmIds as $sItem) {
     // Skip empty sItem
     if (empty($sItem)) {
         continue;
     }
     $sType = $sItem[0];
     $iId = (int) substr($sItem, 1);
     if ($iId > 0 && ($sType == 'N' || $sType == 'W' || $sType == 'R')) {
         $aCleanedQueryParts[] = $sType . $iId;
         $oPlaceLookup->setOSMID($sType, $iId);
         $oPlace = $oPlaceLookup->lookup();
         if ($oPlace) {
             // we want to use the search-* output templates, so we need to fill
             // $aSearchResults and slightly change the (reverse search) oPlace
             // key names
             $oResult = $oPlace;
             unset($oResult['aAddress']);
             if (isset($oPlace['aAddress'])) {
                 $oResult['address'] = $oPlace['aAddress'];
             }
             unset($oResult['langaddress']);
             $oResult['name'] = $oPlace['langaddress'];
             $aSearchResults[] = $oResult;
         }
     }
示例#2
0
文件: reverse.php 项目: a4x/Nominatim
if (isset($_GET['format']) && ($_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();
} 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();
    } else {
        $aPlace = null;
    }
}
if (CONST_Debug) {
    exit;