import nominatim.api as napi
import nominatim.api.logging as loglib
from nominatim.api.v1.format import dispatch as formatting
+from nominatim.api.v1 import helpers
CONTENT_TYPE = {
'text': 'text/plain; charset=utf-8',
if result is None:
params.raise_error('No place with that OSM ID found.', status=404)
+ result.localize(locales)
+
output = formatting.format_result(result, fmt,
{'locales': locales,
'group_hierarchy': params.get_bool('group_hierarchy', False),
debug = params.setup_debugging()
coord = napi.Point(params.get_float('lon'), params.get_float('lat'))
locales = napi.Locales.from_accept_languages(params.get_accepted_languages())
- zoom = max(0, min(18, params.get_int('zoom', 18)))
details = params.parse_geometry_details(fmt)
- details['max_rank'] = REVERSE_MAX_RANKS[zoom]
+ details['max_rank'] = helpers.zoom_to_rank(params.get_int('zoom', 18))
details['layers'] = params.get_layers()
result = await api.reverse(coord, **details)
if debug:
return params.build_response(loglib.get_and_disable())
- fmt_options = {'locales': locales,
- 'extratags': params.get_bool('extratags', False),
+ fmt_options = {'extratags': params.get_bool('extratags', False),
'namedetails': params.get_bool('namedetails', False),
'addressdetails': params.get_bool('addressdetails', True)}
+ if result:
+ result.localize(locales)
+
output = formatting.format_result(napi.ReverseResults([result] if result else []),
fmt, fmt_options)
if debug:
return params.build_response(loglib.get_and_disable())
- fmt_options = {'locales': locales,
- 'extratags': params.get_bool('extratags', False),
+ fmt_options = {'extratags': params.get_bool('extratags', False),
'namedetails': params.get_bool('namedetails', False),
'addressdetails': params.get_bool('addressdetails', True)}
+ for result in results:
+ result.localize(locales)
+
output = formatting.format_result(results, fmt, fmt_options)
return params.build_response(output)
EndpointFunc = Callable[[napi.NominatimAPIAsync, ASGIAdaptor], Any]
-REVERSE_MAX_RANKS = [2, 2, 2, # 0-2 Continent/Sea
- 4, 4, # 3-4 Country
- 8, # 5 State
- 10, 10, # 6-7 Region
- 12, 12, # 8-9 County
- 16, 17, # 10-11 City
- 18, # 12 Town
- 19, # 13 Village/Suburb
- 22, # 14 Hamlet/Neighbourhood
- 25, # 15 Localities
- 26, # 16 Major Streets
- 27, # 17 Minor Streets
- 30 # 18 Building
- ]
-
-
ROUTES = [
('status', status_endpoint),
('details', details_endpoint),