#django #autocomplete #openstreetmap #geodjango
#django #автозаполнение #openstreetmap #geodjango
Вопрос:
Есть ли какой-либо способ обеспечить автоматическое предложение уличного адреса, когда пользователь пытается ввести свой адрес в поле ввода, используя, чтобы они начали получать автоматические предложения адресов в django.
Я искал autocomplete light, но не смог найти ничего, что было бы связано с этим.
Ответ №1:
Я реализовал эту функциональность с помощью автозаполнения Google Place. Пример кода в ссылке довольно точен по памяти.
https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform
Комментарии:
1. Можно ли бесплатно использовать эту функцию?
2. Существует бесплатный уровень, который включает в себя что-то вроде 70 000 просмотров в месяц, если вы используете только эту функцию. Я использовал это, а также поиск времени в пути и т.д. в течение 12 месяцев, и это было здорово cloud.google.com/maps-platform/pricing/sheet
3. Привет @vikram если этот или любой другой ответ решил ваш вопрос, пожалуйста, подумайте о том, чтобы принять его , установив флажок. Это указывает более широкому сообществу, что вы нашли решение, и придает определенную репутацию как ответчику, так и вам самим. Нет никаких обязательств делать это.
Ответ №2:
Вы могли бы использовать python для самостоятельного выполнения запросов и реализовать некоторый легкий javascript для заполнения ваших входных данных:
Это вернет вам список прогнозов, основанных на введенном вами входном адресе. Для выполнения запроса вам просто нужен адрес и ваш ключ API, но обратите внимание, что в моем примере я также использую параметры components / types.
вот документация:https://developers.google.com/maps/documentation/places/web-service/autocomplete
url = f'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=<address>amp;components=country:usamp;types=addressamp;key=<your key>'
r = requests.get(url)
predictions = r.json()['predictions']
for p in predictions:
print(p['description'])
print('-----------------------')