X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/45bc511955022f15fd621d04f52cadd258b75e8a..d145409d64297ba2830c27bfdfa93496a604ec70:/lib/template/details-json.php diff --git a/lib/template/details-json.php b/lib/template/details-json.php index 44b6bff5..0449dbb9 100644 --- a/lib/template/details-json.php +++ b/lib/template/details-json.php @@ -12,89 +12,95 @@ $aPlaceDetails['category'] = $aPointDetails['class']; $aPlaceDetails['type'] = $aPointDetails['type']; $aPlaceDetails['admin_level'] = $aPointDetails['admin_level']; +$aPlaceDetails['localname'] = $aPointDetails['localname']; $aPlaceDetails['names'] = $aPointDetails['aNames']; $aPlaceDetails['addresstags'] = $aPointDetails['aAddressTags']; $aPlaceDetails['housenumber'] = $aPointDetails['housenumber']; -$aPlaceDetails['postcode'] = $aPointDetails['postcode']; // computed +$aPlaceDetails['calculated_postcode'] = $aPointDetails['postcode']; $aPlaceDetails['country_code'] = $aPointDetails['country_code']; -$aPlaceDetails['indexed_date'] = $aPointDetails['indexed_date']; +$aPlaceDetails['indexed_date'] = (new DateTime('@'.$aPointDetails['indexed_epoch']))->format(DateTime::RFC3339); $aPlaceDetails['importance'] = (float) $aPointDetails['importance']; $aPlaceDetails['calculated_importance'] = (float) $aPointDetails['calculated_importance']; $aPlaceDetails['extratags'] = $aPointDetails['aExtraTags']; $aPlaceDetails['calculated_wikipedia'] = $aPointDetails['wikipedia']; -$aPlaceDetails['icon'] = $aPointDetails['icon']; +$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['rank_search_label'] = $aPointDetails['rank_search_label']; - -$aPlaceDetails['isarea'] = ($aPointDetails['isarea'] == 't'); -$aPlaceDetails['lat'] = (float) $aPointDetails['lat']; -$aPlaceDetails['lon'] = (float) $aPointDetails['lon']; +$aPlaceDetails['isarea'] = $aPointDetails['isarea']; +$aPlaceDetails['centroid'] = array( + 'type' => 'Point', + 'coordinates' => array( (float) $aPointDetails['lon'], (float) $aPointDetails['lat'] ) + ); $aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson']); -$funcMapAddressLines = function($aFull) { - $aMapped = [ - 'localname' => $aFull['localname'], - 'place_id' => (int) $aFull['place_id'], - 'osm_id' => (int) $aFull['osm_id'], - 'osm_type' => formatOSMType($aFull['osm_type']), - 'class' => $aFull['class'], - 'type' => $aFull['type'], - 'admin_level' => (int) $aFull['admin_level'], - 'rank_address' => (int) $aFull['rank_address'], - 'distance' => (float) $aFull['distance'] - ]; +$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; }; -$funcMapKeywords = function($aFull) { - $aMapped = [ - 'id' => (int) $aFull['word_id'], - 'token' => $aFull['word_token'] - ]; +$funcMapKeyword = function ($aFull) { + $aMapped = array( + 'id' => (int) $aFull['word_id'], + 'token' => $aFull['word_token'] + ); return $aMapped; }; if ($aAddressLines) { - $aPlaceDetails['address'] = array_map($funcLines, $aAddressLines); + $aPlaceDetails['address'] = array_map($funcMapAddressLine, $aAddressLines); } if ($aLinkedLines) { - $aPlaceDetails['linked_places'] = array_map($funcLines, $aLinkedLines); + $aPlaceDetails['linked_places'] = array_map($funcMapAddressLine, $aLinkedLines); } if ($bIncludeKeywords) { $aPlaceDetails['keywords'] = array(); if ($aPlaceSearchNameKeywords) { - $aPlaceDetails['keywords']['name'] = array_map($funcKeywords, $aPlaceSearchNameKeywords); + $aPlaceDetails['keywords']['name'] = array_map($funcMapKeyword, $aPlaceSearchNameKeywords); } if ($aPlaceSearchAddressKeywords) { - $aPlaceDetails['keywords']['address'] = array_map($funcKeywords, $aPlaceSearchAddressKeywords); + $aPlaceDetails['keywords']['address'] = array_map($funcMapKeyword, $aPlaceSearchAddressKeywords); } } -if ($bIncludeChildPlaces) { - $aPlaceDetails['parentof'] = array_map($funcLines, $aParentOfLines); - - 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'] = $aGroupedAddressLines; + } else { + $aPlaceDetails['hierarchy'] = array_map($funcMapAddressLine, $aHierarchyLines); } }