lookup endpoint supports jsonv2 and geocodejson output now

This commit is contained in:
marc tobias
2019-07-21 23:20:48 +02:00
parent 15bca71b0d
commit 1560685020
4 changed files with 17 additions and 9 deletions

View File

@@ -19,7 +19,7 @@ Additional optional parameters are explained below.
### Output format
* `format=[xml|json|geojson]`
* `format=[xml|json|jsonv2|geojson|geocodejson]`
See [Place Output Formats](Output.md) for details on each format. (Default: xml)

View File

@@ -4,14 +4,16 @@ Feature: Places by osm_type and osm_id Tests
Scenario Outline: address lookup for existing node, way, relation
When sending <format> lookup query for N3284625766,W6065798,,R123924,X99,N0
Then the result is valid <format>
Then the result is valid <outformat>
And exactly 3 results are returned
Examples:
| format |
| xml |
| json |
| geojson |
| format | outformat |
| xml | xml |
| json | json |
| jsonv2 | json |
| geojson | geojson |
| geocodejson | geocodejson |
Scenario: address lookup for non-existing or invalid node, way, relation
When sending xml lookup query for X99,,N0,nN158845944,ABC,,W9

View File

@@ -455,8 +455,12 @@ def website_lookup_request(context, fmt, query):
if fmt == 'json ':
outfmt = 'json'
elif fmt == 'jsonv2 ':
outfmt = 'json'
elif fmt == 'geojson ':
outfmt = 'geojson'
elif fmt == 'geocodejson ':
outfmt = 'geocodejson'
else:
outfmt = 'xml'

View File

@@ -9,7 +9,7 @@ ini_set('memory_limit', '200M');
$oParams = new Nominatim\ParameterParser();
// Format for output
$sOutputFormat = $oParams->getSet('format', array('xml', 'json', 'geojson'), 'xml');
$sOutputFormat = $oParams->getSet('format', array('xml', 'json', 'jsonv2', 'geojson', 'geocodejson'), 'xml');
set_exception_handler_by_format($sOutputFormat);
// Preferred language
@@ -49,8 +49,10 @@ foreach ($aOsmIds as $sItem) {
$oResult = $oPlace;
unset($oResult['aAddress']);
if (isset($oPlace['aAddress'])) $oResult['address'] = $oPlace['aAddress'];
unset($oResult['langaddress']);
$oResult['name'] = $oPlace['langaddress'];
if ($sOutputFormat != 'geocodejson') {
unset($oResult['langaddress']);
$oResult['name'] = $oPlace['langaddress'];
}
$aSearchResults[] = $oResult;
}
}