X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/79d4db5db6253d67412769448ea94736d0e0997e..8a8e23ef3cb3e7ffb937c75ab1bdeee9ef5b3bf0:/lib/template/details-html.php diff --git a/lib/template/details-html.php b/lib/template/details-html.php index a38ee1bc..c15e74c8 100644 --- a/lib/template/details-html.php +++ b/lib/template/details-html.php @@ -1,232 +1,268 @@ - - - - OpenStreetMap Nominatim: <?php echo $aPointDetails['localname'];?> + + - - - - - -
+ + + +

".$sTitle."

\n"; + } + + function headline3($sTitle) + { + echo "

".$sTitle."

\n"; + } + + + function format_distance($fDistance, $bInMeters = false) + { + if ($bInMeters) { + // $fDistance is in meters + if ($fDistance < 1) { + return '0'; + } + elseif ($fDistance < 1000) { + return '~'.(round($fDistance,0)).' m'; + } + else { + return '~'.(round($fDistance/1000,1)).' km'; + } + } else { + if ($fDistance == 0) { + return '0'; + } else { + return ''.(round($fDistance,4)).''; + } + } + } + + function kv($sKey,$sValue) + { + echo ' ' . $sKey . ''.$sValue.''. "\n"; + } + + + function hash_to_subtable($aAssociatedList) + { + $sHTML = ''; + foreach ($aAssociatedList as $sKey => $sValue) { + $sHTML = $sHTML.'
'.$sValue.' ('.$sKey.')
'."\n"; + } + return $sHTML; + } + + function map_icon($aPlace) + { + $sIcon = Nominatim\ClassTypes\getIconFile($aPlace); + if (isset($sIcon)) { + $sLabel = Nominatim\ClassTypes\getIcon($aPlace); + echo ''.$sLabel.''; + } + } + + + function _one_row($aAddressLine, $bDistanceInMeters = false){ + $bNotUsed = isset($aAddressLine['isaddress']) && !$aAddressLine['isaddress']; + + echo ''."\n"; + echo ' '.(trim($aAddressLine['localname'])!==null?$aAddressLine['localname']:'No Name')."\n"; + echo ' ' . $aAddressLine['class'].':'.$aAddressLine['type']; + if ($aAddressLine['type'] == 'administrative' + && isset($aAddressLine['place_type'])) + { + echo '('.$aAddressLine['place_type'].')'; + } + echo "\n"; + echo ' ' . osmLink($aAddressLine) . "\n"; + echo ' ' . (isset($aAddressLine['rank_address']) ? $aAddressLine['rank_address'] : '') . "\n"; + echo ' ' . ($aAddressLine['admin_level'] < 15 ? $aAddressLine['admin_level'] : '') . "\n"; + echo ' ' . format_distance($aAddressLine['distance'], $bDistanceInMeters)."\n"; + echo ' ' . detailsPermaLink($aAddressLine,'details >') . "\n"; + echo "\n"; + } + + function _one_keyword_row($keyword_token,$word_id){ + echo "\n"; + echo ''; + // mark partial tokens (those starting with a space) with a star for readability + echo ($keyword_token[0]==' '?'*':''); + echo $keyword_token; + if (isset($word_id)) + { + echo 'word id: '.$word_id; + } + echo "\n"; + } + +?> + + + + + +
+
+
+

+ +

+
+
+ +
+
+
+
+ + + format(DateTime::RFC822) ); + kv('Admin Level' , $aPointDetails['admin_level'] ); + kv('Rank' , $aPointDetails['rank_search_label'] ); + if ($aPointDetails['calculated_importance']) { + kv('Importance' , $aPointDetails['calculated_importance'].($aPointDetails['importance']?'':' (estimated)') ); + } + kv('Coverage' , ($aPointDetails['isarea']?'Polygon':'Point') ); + kv('Centre Point' , $aPointDetails['lat'].','.$aPointDetails['lon'] ); + kv('OSM' , osmLink($aPointDetails) ); + kv('Place Id (on this server)' + , $aPointDetails['place_id'] ); + if ($aPointDetails['wikipedia']) + { + kv('Wikipedia Calculated' , wikipediaLink($aPointDetails) ); + } + + kv('Computed Postcode', $aPointDetails['postcode']); + kv('Address Tags' , hash_to_subtable($aPointDetails['aAddressTags']) ); + kv('Extra Tags' , hash_to_subtable($aPointDetails['aExtraTags']) ); + + ?> + +
+
+ +
+
+
+ +
+
+
+ +

Address

+ + + + + + + + + + + + + + + + + + '; - if ($aPointDetails['icon']) - { - echo ''; - } - echo $aPointDetails['localname'].''; - echo '
'; - echo '
Name: '; - foreach($aPointDetails['aNames'] as $sKey => $sValue) - { - echo '
'.$sValue.' ('.$sKey.')
'; - } - echo '
'; - echo '
Type: '.$aPointDetails['class'].':'.$aPointDetails['type'].'
'; - echo '
Last Updated: '.$aPointDetails['indexed_date'].'
'; - echo '
Admin Level: '.$aPointDetails['admin_level'].'
'; - echo '
Rank: '.$aPointDetails['rank_search_label'].'
'; - if ($aPointDetails['calculated_importance']) echo '
Importance: '.$aPointDetails['calculated_importance'].($aPointDetails['importance']?'':' (estimated)').'
'; - echo '
Coverage: '.($aPointDetails['isarea']=='t'?'Polygon':'Point').'
'; - echo '
Centre Point: '.$aPointDetails['lat'].','.$aPointDetails['lon'].'
'; - $sOSMType = ($aPointDetails['osm_type'] == 'N'?'node':($aPointDetails['osm_type'] == 'W'?'way':($aPointDetails['osm_type'] == 'R'?'relation':''))); - if ($sOSMType) echo '
OSM: '.$sOSMType.' '.$aPointDetails['osm_id'].'
'; - if ($aPointDetails['wikipedia']) - { - list($sWikipediaLanguage,$sWikipediaArticle) = explode(':',$aPointDetails['wikipedia']); - echo '
Wikipedia Calculated: '.$aPointDetails['wikipedia'].'
'; - } - echo '
Extra Tags: '; - foreach($aPointDetails['aExtraTags'] as $sKey => $sValue) - { - echo '
'.$sValue.' ('.$sKey.')
'; - } - echo '
'; - echo '
'; - - echo '

Address

'; - echo '
'; - $iPrevRank = 1000000; - $sPrevLocalName = ''; - foreach($aAddressLines as $aAddressLine) - { - $sOSMType = ($aAddressLine['osm_type'] == 'N'?'node':($aAddressLine['osm_type'] == 'W'?'way':($aAddressLine['osm_type'] == 'R'?'relation':''))); - - echo '
'; - if (!($iPrevRank<=$aAddressLine['rank_address'] || $sPrevLocalName == $aAddressLine['localname'])) - { - $iPrevRank = $aAddressLine['rank_address']; - $sPrevLocalName = $aAddressLine['localname']; - } - echo ''.(trim($aAddressLine['localname'])?$aAddressLine['localname']:'No Name').''; - echo ' ('; - echo 'Type: '.$aAddressLine['class'].':'.$aAddressLine['type'].''; - if ($sOSMType) echo ', '.$sOSMType.' '.$aAddressLine['osm_id'].''; - if (isset($aAddressLine['admin_level'])) echo ', '.$aAddressLine['admin_level'].''; - if (isset($aAddressLine['rank_search_label'])) echo ', '.$aAddressLine['rank_search_label'].''; -// echo ', '.($aAddressLine['fromarea']=='t'?'Polygon':'Point').''; - echo ', '.$aAddressLine['distance'].''; - echo ' GOTO'; - echo ')'; - echo '
'; - } - echo '
'; - - if ($aLinkedLines) - { - echo '

Linked Places

'; - echo '
'; - foreach($aLinkedLines as $aAddressLine) - { - $sOSMType = ($aAddressLine['osm_type'] == 'N'?'node':($aAddressLine['osm_type'] == 'W'?'way':($aAddressLine['osm_type'] == 'R'?'relation':''))); - - echo '
'; - echo ''.(trim($aAddressLine['localname'])?$aAddressLine['localname']:'No Name').''; - echo ' ('; - echo 'Type: '.$aAddressLine['class'].':'.$aAddressLine['type'].''; - if ($sOSMType) echo ', '.$sOSMType.' '.$aAddressLine['osm_id'].''; - echo ', '.$aAddressLine['admin_level'].''; - echo ', '.$aAddressLine['rank_search_label'].''; -// echo ', '.($aAddressLine['fromarea']=='t'?'Polygon':'Point').''; - echo ', '.$aAddressLine['distance'].''; - echo ' GOTO'; - echo ')'; - echo '
'; - } - echo '
'; - } - - if ($aPlaceSearchNameKeywords) - { - echo '

Name Keywords

'; - foreach($aPlaceSearchNameKeywords as $aRow) - { - echo '
'.$aRow['word_token'].'
'; - } - } - - if ($aPlaceSearchAddressKeywords) - { - echo '

Address Keywords

'; - foreach($aPlaceSearchAddressKeywords as $aRow) - { - echo '
'.($aRow['word_token'][0]==' '?'*':'').$aRow['word_token'].'('.$aRow['word_id'].')'.'
'; - } - } - - if (sizeof($aParentOfLines)) - { - echo '

Parent Of:

'; - - $aGroupedAddressLines = array(); - foreach($aParentOfLines as $aAddressLine) - { - if (!isset($aGroupedAddressLines[$aAddressLine['type']])) $aGroupedAddressLines[$aAddressLine['type']] = array(); - $aGroupedAddressLines[$aAddressLine['type']][] = $aAddressLine; - } - foreach($aGroupedAddressLines as $sGroupHeading => $aParentOfLines) - { - $sGroupHeading = ucwords($sGroupHeading); - echo "

$sGroupHeading

"; - foreach($aParentOfLines as $aAddressLine) - { - $aAddressLine['localname'] = $aAddressLine['localname']?$aAddressLine['localname']:$aAddressLine['housenumber']; - $sOSMType = ($aAddressLine['osm_type'] == 'N'?'node':($aAddressLine['osm_type'] == 'W'?'way':($aAddressLine['osm_type'] == 'R'?'relation':''))); - - echo '
'; - echo ''.(trim($aAddressLine['localname'])?$aAddressLine['localname']:'No Name').''; - echo ' ('; -// echo 'Type: '.$aAddressLine['class'].':'.$aAddressLine['type'].''; -// echo ', '.$aAddressLine['admin_level'].''; -// echo ', '.$aAddressLine['rank_address'].''; - echo ''.($aAddressLine['isarea']=='t'?'Polygon':'Point').''; - echo ', ~'.(round($aAddressLine['distance']*69,1)).' miles'; - if ($sOSMType) echo ', '.$sOSMType.' '.$aAddressLine['osm_id'].''; - echo ', GOTO'; - echo ')'; - echo '
'; - } - } - if (sizeof($aParentOfLines) >= 500) { - echo '

There are more child objects which are not shown.

'; - } - echo ''; - } - -// echo '

Other Parts:

'; -// echo '

Linked To:

'; + + if ($aLinkedLines) + { + headline('Linked Places'); + foreach ($aLinkedLines as $aAddressLine) { + _one_row($aAddressLine, true); + } + } + + if ($bIncludeKeywords) + { + headline('Name Keywords'); + if ($aPlaceSearchNameKeywords) { + foreach ($aPlaceSearchNameKeywords as $aRow) { + _one_keyword_row($aRow['word_token'], $aRow['word_id']); + } + } + + headline('Address Keywords'); + if ($aPlaceSearchAddressKeywords) { + foreach ($aPlaceSearchAddressKeywords as $aRow) { + _one_keyword_row($aRow['word_token'], $aRow['word_id']); + } + } + } + + if (!empty($aHierarchyLines)) + { + headline('Parent Of'); + + $aGroupedAddressLines = array(); + foreach ($aHierarchyLines as $aAddressLine) { + if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class']; + else $sType = $aAddressLine['type']; + + if (!isset($aGroupedAddressLines[$sType])) + $aGroupedAddressLines[$sType] = array(); + $aGroupedAddressLines[$sType][] = $aAddressLine; + } + foreach ($aGroupedAddressLines as $sGroupHeading => $aHierarchyLines) { + $sGroupHeading = ucwords($sGroupHeading); + headline3($sGroupHeading); + + foreach ($aHierarchyLines as $aAddressLine) { + _one_row($aAddressLine, true); + } + } + if (count($aHierarchyLines) >= 500) { + echo '

There are more child objects which are not shown.

'; + } + } + + echo "
Local nameTypeOSMAddress rankAdmin levelDistance
\n"; ?> - +
+
+
+ + + + + + +