X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/1e28f2478c6b4c3ba7ca566e4a43a7f5c293ce3c..8f0c628310e9ad4160eb995f3ba53afa791a3ffc:/lib/template/details-json.php diff --git a/lib/template/details-json.php b/lib/template/details-json.php index 2464bc34..06554aba 100644 --- a/lib/template/details-json.php +++ b/lib/template/details-json.php @@ -1,40 +1,103 @@ format(DateTime::RFC3339); +$aPlaceDetails['importance'] = (float) $aPointDetails['importance']; +$aPlaceDetails['calculated_importance'] = (float) $aPointDetails['calculated_importance']; + +$aPlaceDetails['extratags'] = $aPointDetails['aExtraTags']; +$aPlaceDetails['calculated_wikipedia'] = $aPointDetails['wikipedia']; +if ($aPointDetails['icon']) { + $aPlaceDetails['icon'] = CONST_Website_BaseURL.'images/mapicons/'.$aPointDetails['icon'].'.n.32.png'; +} + +$aPlaceDetails['rank_address'] = (int) $aPointDetails['rank_address']; +$aPlaceDetails['rank_search'] = (int) $aPointDetails['rank_search']; + +$aPlaceDetails['isarea'] = ($aPointDetails['isarea'] == 't'); +$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, + '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'] + ); + + 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); } }