[enh] add routing directions to osm search - closes #254

This commit is contained in:
Adam Tauber 2020-06-09 17:01:59 +02:00
parent 785f0938fd
commit 2c6531b233
6 changed files with 38 additions and 12 deletions

View file

@ -10,7 +10,9 @@
@parse url, title
"""
import re
from json import loads
from flask_babel import gettext
# engine dependent config
categories = ['map']
@ -21,10 +23,15 @@ base_url = 'https://nominatim.openstreetmap.org/'
search_string = 'search/{query}?format=json&polygon_geojson=1&addressdetails=1'
result_base_url = 'https://openstreetmap.org/{osm_type}/{osm_id}'
route_url = 'https://graphhopper.com/maps/?point={}&point={}&locale=en-US&vehicle=car&weighting=fastest&turn_costs=true&use_miles=false&layer=Omniscale'
route_re = re.compile('(?:from )?(.+) to (.+)')
# do search-request
def request(query, params):
params['url'] = base_url + search_string.format(query=query.decode('utf-8'))
params['route'] = route_re.match(query.decode('utf-8'))
return params
@ -34,6 +41,13 @@ def response(resp):
results = []
json = loads(resp.text)
if resp.search_params['route']:
results.append({
'answer': gettext('Get directions'),
'url': route_url.format(*resp.search_params['route'].groups()),
})
# parse results
for r in json:
if 'display_name' not in r: