X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/1e28f2478c6b4c3ba7ca566e4a43a7f5c293ce3c..64ace51e02790bf88e162a15236c5ac2af865c5e:/lib/template/details-json.php diff --git a/lib/template/details-json.php b/lib/template/details-json.php index 2464bc34..0449dbb9 100644 --- a/lib/template/details-json.php +++ b/lib/template/details-json.php @@ -1,40 +1,106 @@ format(DateTime::RFC3339); +$aPlaceDetails['importance'] = (float) $aPointDetails['importance']; +$aPlaceDetails['calculated_importance'] = (float) $aPointDetails['calculated_importance']; + +$aPlaceDetails['extratags'] = $aPointDetails['aExtraTags']; +$aPlaceDetails['calculated_wikipedia'] = $aPointDetails['wikipedia']; +$sIcon = Nominatim\ClassTypes\getIconFile($aPointDetails); +if (isset($sIcon)) { + $aPlaceDetails['icon'] = $sIcon; +} + +$aPlaceDetails['rank_address'] = (int) $aPointDetails['rank_address']; +$aPlaceDetails['rank_search'] = (int) $aPointDetails['rank_search']; + +$aPlaceDetails['isarea'] = $aPointDetails['isarea']; +$aPlaceDetails['centroid'] = array( + 'type' => 'Point', + 'coordinates' => array( (float) $aPointDetails['lon'], (float) $aPointDetails['lat'] ) + ); + +$aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson']); + +$funcMapAddressLine = function ($aFull) { + $aMapped = array( + 'localname' => $aFull['localname'], + 'place_id' => isset($aFull['place_id']) ? (int) $aFull['place_id'] : null, + 'osm_id' => isset($aFull['osm_id']) ? (int) $aFull['osm_id'] : null, + 'osm_type' => isset($aFull['osm_type']) ? $aFull['osm_type'] : null, + 'place_type' => isset($aFull['place_type']) ? $aFull['place_type'] : null, + 'class' => $aFull['class'], + 'type' => $aFull['type'], + 'admin_level' => isset($aFull['admin_level']) ? (int) $aFull['admin_level'] : null, + 'rank_address' => $aFull['rank_address'] ? (int) $aFull['rank_address'] : null, + 'distance' => (float) $aFull['distance'], + 'isaddress' => isset($aFull['isaddress']) ? (bool) $aFull['isaddress'] : null + ); + + return $aMapped; +}; + +$funcMapKeyword = function ($aFull) { + $aMapped = array( + 'id' => (int) $aFull['word_id'], + 'token' => $aFull['word_token'] + ); + return $aMapped; +}; if ($aAddressLines) { - $aPlaceDetails['address_lines'] = $aAddressLines; + $aPlaceDetails['address'] = array_map($funcMapAddressLine, $aAddressLines); } if ($aLinkedLines) { - $aPlaceDetails['linked_lines'] = $aLinkedLines; + $aPlaceDetails['linked_places'] = array_map($funcMapAddressLine, $aLinkedLines); } -if ($aPlaceSearchNameKeywords) { - $aPlaceDetails['place_search_name_keywords'] = $aPlaceSearchNameKeywords; -} +if ($bIncludeKeywords) { + $aPlaceDetails['keywords'] = array(); -if ($aPlaceSearchAddressKeywords) { - $aPlaceDetails['place_search_address_keywords'] = $aPlaceSearchAddressKeywords; -} + if ($aPlaceSearchNameKeywords) { + $aPlaceDetails['keywords']['name'] = array_map($funcMapKeyword, $aPlaceSearchNameKeywords); + } -if ($aParentOfLines) { - $aPlaceDetails['parentof_lines'] = $aParentOfLines; + if ($aPlaceSearchAddressKeywords) { + $aPlaceDetails['keywords']['address'] = array_map($funcMapKeyword, $aPlaceSearchAddressKeywords); + } +} - if ($bGroupParents) { - $aGroupedAddressLines = []; - foreach ($aParentOfLines as $aAddressLine) { +if ($bIncludeHierarchy) { + if ($bGroupHierarchy) { + $aPlaceDetails['hierarchy'] = array(); + foreach ($aHierarchyLines as $aAddressLine) { if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class']; else $sType = $aAddressLine['type']; - if (!isset($aGroupedAddressLines[$sType])) - $aGroupedAddressLines[$sType] = []; - $aGroupedAddressLines[$sType][] = $aAddressLine; + if (!isset($aPlaceDetails['hierarchy'][$sType])) + $aPlaceDetails['hierarchy'][$sType] = array(); + $aPlaceDetails['hierarchy'][$sType][] = $funcMapAddressLine($aAddressLine); } - $aPlaceDetails['parentof_lines'] = $aGroupedAddressLines; + } else { + $aPlaceDetails['hierarchy'] = array_map($funcMapAddressLine, $aHierarchyLines); } }