Нужна помощь в работе с определенными сценариями адресов в крупных городах и API Google Адресов.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Нужна помощь в работе с определенными сценариями адресов в крупных городах и API Google Адресов.

Сообщение Anonymous »

У меня возникла проблема с использованием Google Places API и конечной точки автозаполнения в районе Лондона. Почему мы используем автозаполнение? Потому что наш вклад порой неоднозначен. Предыстория такова: мы запрашиваем у клиента конкретное местоположение.
В любом случае, представьте, что следующий адрес «13 Manor Close» ищется с помощью API автозаполнения Google Адресов со следующим фрагментом кода.

Код: Выделить всё

import requests
import json

"""Autocomplete search parameters
"""
api = "XXXX"
address = "13 Manor Close"
lat = "51.5072"
long = "-0.1138486"
radius = 50000
language = "en"

"""Google Autocomplete payload
"""
payload = {
"input": address,
"locationRestriction": {
"circle": {
"center": {
"latitude": lat,
"longitude": long
},
"radius": radius
}
}
}

"""Get suggestions using autocomplete api
"""
response = requests.request(
"POST",
"https://places.googleapis.com/v1/places:autocomplete",
headers={"Content-Type": "application/json; charset=utf-8",
"X-Goog-Api-Key": api},
json=payload
)

response_dict = json.loads(response.text)

"""Iterate over returned suggestions
"""
for res in response_dict["suggestions"]:

place_id = res["placePrediction"]["placeId"]

"""Use Google Places Detail lookup for the suggested place id
"""
place = requests.request(
"GET",
f"https://places.googleapis.com/v1/places/{place_id}?key={api}",
headers={
"Content-Type": "application/json; charset=utf-8",
"X-Goog-Api-Key": api,
"X-Goog-FieldMask": "*"
}
)

place_dict = json.loads(place.text)
print(place_dict)
Если мы запросим автозаполнение с locationRestriction и радиусом 50 000 м, мы получим 5 результатов.

Код: Выделить всё

  {
"description":"13 Manor Close, Bengeo, Hertford"
},
{
"description":"13 Manor Close, Hatching Green, Harpenden"
},
{
"description":"13 Manor Close, London"
},
{
"description":"13 Manor Close, Aveley, South Ockendon"
},
{
"description":"13 Manor Close, Horley"
}
А вот и дело: «13 Manor Close, London» возвращается в приведенном выше результате с почтовым индексом NW9, однако «13 Manor Close, London» также существует в SE28 и E17. .
13 Manor Close, Лондон SE28
https://www.google.com/maps/place/13+Ma ... f66c71b357 9:0x9a72e5f3c90e4276!8m2!3d51.5088256!4d0.1216716!16s%2Fg%2F11cs94cnzx?entry=ttu&g_ep=EgoyMDI0MTEyNC4xIKXMDSoASAFQAw%3D%3D
13 Manor Close, Лондон NW9
https://www.google.com/maps/place/13+Ma ... b1!4m6!3m5 !1s0x4876115a17f0 204f:0xf13ec4987368f8dd!8m2!3d51.58704!4d-0.2763626!16s%2Fg%2F11c23r9v_f?entry=ttu&g_ep=EgoyMDI0MTEyNC4xIKXMDSoASAFQAw%3D%3D
13 Manor Close, Лондон E17
https://www.google.com/maps/place/13+Ma ... b1!4m6!3m5 !1s0x48761dd91d45 01ad:0x163048f90f55c230!8m2!3d51.5964954!4d-0.0315569!16s%2Fg%2F11c22cjwml?entry=ttu&g_ep=EgoyMDI0MTEyNC4xIKXMDSoASAFQAw%3D%3D
И, к сожалению, Google возвращает не более 5 результатов автозаполнения. Если мы ищем конкретно «13 Manor Close, London», возвращаются только NW9 и E27, а SE28 — нет.
Похоже, что единственный способ вернуть их — это передать почтовый индекс. в поисковом запросе для примера: 13 Manor Close SE28, но это не то, чего мы можем ожидать от клиента.
Удалось ли мне найти угловой случай, или это карта Лондона это сломано? Открыт для обсуждения, вопросов и предложений, как действовать в этом случае.

Подробнее здесь: https://stackoverflow.com/questions/792 ... oogle-plac
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»