2018-03-09 04:27:24 +03:00
|
|
|
<?php
|
2022-01-03 18:23:58 +03:00
|
|
|
/**
|
|
|
|
* SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
*
|
|
|
|
* This file is part of Nominatim. (https://nominatim.org)
|
|
|
|
*
|
|
|
|
* Copyright (C) 2022 by the Nominatim developer community.
|
|
|
|
* For a full list of authors see the git log.
|
|
|
|
*/
|
2018-03-09 04:27:24 +03:00
|
|
|
|
2018-03-18 18:14:26 +03:00
|
|
|
$aPlaceDetails = array();
|
2018-03-09 04:27:24 +03:00
|
|
|
|
2018-03-18 18:14:26 +03:00
|
|
|
$aPlaceDetails['place_id'] = (int) $aPointDetails['place_id'];
|
|
|
|
$aPlaceDetails['parent_place_id'] = (int) $aPointDetails['parent_place_id'];
|
|
|
|
|
|
|
|
$aPlaceDetails['osm_type'] = $aPointDetails['osm_type'];
|
|
|
|
$aPlaceDetails['osm_id'] = (int) $aPointDetails['osm_id'];
|
|
|
|
|
|
|
|
$aPlaceDetails['category'] = $aPointDetails['class'];
|
|
|
|
$aPlaceDetails['type'] = $aPointDetails['type'];
|
|
|
|
$aPlaceDetails['admin_level'] = $aPointDetails['admin_level'];
|
|
|
|
|
2018-03-19 04:05:01 +03:00
|
|
|
$aPlaceDetails['localname'] = $aPointDetails['localname'];
|
2018-03-18 18:14:26 +03:00
|
|
|
$aPlaceDetails['names'] = $aPointDetails['aNames'];
|
|
|
|
|
|
|
|
$aPlaceDetails['addresstags'] = $aPointDetails['aAddressTags'];
|
|
|
|
$aPlaceDetails['housenumber'] = $aPointDetails['housenumber'];
|
2018-04-05 16:22:50 +03:00
|
|
|
$aPlaceDetails['calculated_postcode'] = $aPointDetails['postcode'];
|
2018-03-18 18:14:26 +03:00
|
|
|
$aPlaceDetails['country_code'] = $aPointDetails['country_code'];
|
|
|
|
|
2018-04-09 14:57:28 +03:00
|
|
|
$aPlaceDetails['indexed_date'] = (new DateTime('@'.$aPointDetails['indexed_epoch']))->format(DateTime::RFC3339);
|
2018-03-18 18:14:26 +03:00
|
|
|
$aPlaceDetails['importance'] = (float) $aPointDetails['importance'];
|
|
|
|
$aPlaceDetails['calculated_importance'] = (float) $aPointDetails['calculated_importance'];
|
|
|
|
|
|
|
|
$aPlaceDetails['extratags'] = $aPointDetails['aExtraTags'];
|
|
|
|
$aPlaceDetails['calculated_wikipedia'] = $aPointDetails['wikipedia'];
|
2020-05-17 17:45:46 +03:00
|
|
|
$sIcon = Nominatim\ClassTypes\getIconFile($aPointDetails);
|
|
|
|
if (isset($sIcon)) {
|
|
|
|
$aPlaceDetails['icon'] = $sIcon;
|
2018-08-21 18:26:14 +03:00
|
|
|
}
|
2018-03-18 18:14:26 +03:00
|
|
|
|
|
|
|
$aPlaceDetails['rank_address'] = (int) $aPointDetails['rank_address'];
|
|
|
|
$aPlaceDetails['rank_search'] = (int) $aPointDetails['rank_search'];
|
|
|
|
|
2019-04-02 17:52:37 +03:00
|
|
|
$aPlaceDetails['isarea'] = $aPointDetails['isarea'];
|
2018-04-09 15:24:31 +03:00
|
|
|
$aPlaceDetails['centroid'] = array(
|
2018-05-08 01:37:41 +03:00
|
|
|
'type' => 'Point',
|
|
|
|
'coordinates' => array( (float) $aPointDetails['lon'], (float) $aPointDetails['lat'] )
|
|
|
|
);
|
2018-03-18 18:14:26 +03:00
|
|
|
|
2022-07-09 10:10:21 +03:00
|
|
|
$aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson'], true);
|
2018-03-18 18:14:26 +03:00
|
|
|
|
2018-04-05 16:22:50 +03:00
|
|
|
$funcMapAddressLine = function ($aFull) {
|
2021-07-11 20:24:04 +03:00
|
|
|
return 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
|
|
|
|
);
|
2018-03-18 18:14:26 +03:00
|
|
|
};
|
|
|
|
|
2018-04-05 16:22:50 +03:00
|
|
|
$funcMapKeyword = function ($aFull) {
|
2021-07-11 20:24:04 +03:00
|
|
|
return array(
|
|
|
|
'id' => (int) $aFull['word_id'],
|
|
|
|
'token' => $aFull['word_token']
|
|
|
|
);
|
2018-03-18 18:14:26 +03:00
|
|
|
};
|
2018-03-09 04:27:24 +03:00
|
|
|
|
|
|
|
if ($aAddressLines) {
|
2018-04-05 16:22:50 +03:00
|
|
|
$aPlaceDetails['address'] = array_map($funcMapAddressLine, $aAddressLines);
|
2018-03-09 04:27:24 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
if ($aLinkedLines) {
|
2018-04-05 16:22:50 +03:00
|
|
|
$aPlaceDetails['linked_places'] = array_map($funcMapAddressLine, $aLinkedLines);
|
2018-03-09 04:27:24 +03:00
|
|
|
}
|
|
|
|
|
2018-03-18 18:14:26 +03:00
|
|
|
if ($bIncludeKeywords) {
|
|
|
|
$aPlaceDetails['keywords'] = array();
|
|
|
|
|
|
|
|
if ($aPlaceSearchNameKeywords) {
|
2018-04-05 16:22:50 +03:00
|
|
|
$aPlaceDetails['keywords']['name'] = array_map($funcMapKeyword, $aPlaceSearchNameKeywords);
|
2021-05-17 17:36:32 +03:00
|
|
|
} else {
|
|
|
|
$aPlaceDetails['keywords']['name'] = array();
|
2018-03-18 18:14:26 +03:00
|
|
|
}
|
2018-03-09 04:27:24 +03:00
|
|
|
|
2018-03-18 18:14:26 +03:00
|
|
|
if ($aPlaceSearchAddressKeywords) {
|
2018-04-05 16:22:50 +03:00
|
|
|
$aPlaceDetails['keywords']['address'] = array_map($funcMapKeyword, $aPlaceSearchAddressKeywords);
|
2021-05-17 17:36:32 +03:00
|
|
|
} else {
|
|
|
|
$aPlaceDetails['keywords']['address'] = array();
|
2018-03-18 18:14:26 +03:00
|
|
|
}
|
2018-03-09 04:27:24 +03:00
|
|
|
}
|
|
|
|
|
2018-04-05 16:22:50 +03:00
|
|
|
if ($bIncludeHierarchy) {
|
|
|
|
if ($bGroupHierarchy) {
|
|
|
|
$aPlaceDetails['hierarchy'] = array();
|
|
|
|
foreach ($aHierarchyLines as $aAddressLine) {
|
2021-07-10 15:59:38 +03:00
|
|
|
if ($aAddressLine['type'] == 'yes') {
|
|
|
|
$sType = $aAddressLine['class'];
|
|
|
|
} else {
|
|
|
|
$sType = $aAddressLine['type'];
|
|
|
|
}
|
2018-03-09 04:27:24 +03:00
|
|
|
|
2021-07-10 15:59:38 +03:00
|
|
|
if (!isset($aPlaceDetails['hierarchy'][$sType])) {
|
2018-04-05 16:22:50 +03:00
|
|
|
$aPlaceDetails['hierarchy'][$sType] = array();
|
2021-07-10 15:59:38 +03:00
|
|
|
}
|
2018-04-05 16:22:50 +03:00
|
|
|
$aPlaceDetails['hierarchy'][$sType][] = $funcMapAddressLine($aAddressLine);
|
2018-03-09 04:27:24 +03:00
|
|
|
}
|
2018-04-05 16:22:50 +03:00
|
|
|
} else {
|
|
|
|
$aPlaceDetails['hierarchy'] = array_map($funcMapAddressLine, $aHierarchyLines);
|
2018-03-09 04:27:24 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
javascript_renderData($aPlaceDetails);
|