Автодополнение адресов
Подсказки для частичного ввода, оптимизированные по задержке и устойчивые к опечаткам. Каждая подсказка содержит координаты, поэтому большинству интеграций второй вызов не нужен вовсе.
GEThttps://api.mygeocode.com/v1/autocomplete
Параметры
| Параметр | Тип | Описание |
|---|---|---|
qобязательный | строка | То, что пользователь уже ввёл. Не менее 2 и не более 128 символов. |
limitнеобязательный | целое число | От 1 до 10. По умолчанию 5. |
countriesнеобязательный | строка | Коды ISO 3166-1 alpha-2 через запятую, которыми ограничиваются подсказки. |
proximityнеобязательный | строка | lat,lon. Ближайшие подсказки идут первыми. Настоятельно рекомендуется для полей поиска на карте. |
typesнеобязательный | строка | Подмножество значений через запятую: address, street, postcode, city, region, country, poi. По умолчанию все. |
langнеобязательный | строка | Код ISO 639-1. По умолчанию en. |
keyнеобязательный | строка | API-ключ, если он не передан в заголовке. |
Пример
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/autocomplete?q=oxford+st&proximity=51.515,-0.141&limit=3"const url = new URL("https://api.mygeocode.com/v1/autocomplete");
url.searchParams.set("q", "oxford st");
url.searchParams.set("proximity", "51.515,-0.141");
url.searchParams.set("limit", "3");
const { suggestions } = await (await fetch(url, { headers: { "X-API-Key": "YOUR_KEY" } })).json();
suggestions.forEach((s) => console.log(s.text, s.lat, s.lon));import requests
r = requests.get("https://api.mygeocode.com/v1/autocomplete",
params={"q": "oxford st", "proximity": "51.515,-0.141", "limit": 3}, headers={"X-API-Key": "YOUR_KEY"}, timeout=5)
for s in r.json()["suggestions"]:
print(s["text"], s["lat"], s["lon"])Ответ
{
"status": "ok",
"query": "oxford st",
"suggestions": [
{ "text": "Oxford Street, London W1, United Kingdom", "lat": 51.515419, "lon": -0.141588, "type": "street", "precision": "street", "place_id": "gb.street.0a91e2c4" },
{ "text": "Oxford Street, Southampton SO14, United Kingdom", "lat": 50.899021, "lon": -1.399537, "type": "street", "precision": "street", "place_id": "gb.street.77b4d1f0" },
{ "text": "Oxford Street Station, London W1, United Kingdom", "lat": 51.515167, "lon": -0.141251, "type": "poi", "precision": "house", "place_id": "gb.poi.3c5a8e19" }
]
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
suggestions[].text | строка | Отображаемый текст, одной строкой, на языке lang. |
suggestions[].lat, lon | число | Координаты. Присутствуют всегда. |
suggestions[].type, precision | строка | Как в прямом геокодировании. |
suggestions[].place_id | строка | Передайте в /v1/forward?place_id=..., чтобы получить все компоненты адреса и границы. Этот вызов засчитывается как один запрос. |
Примечания
- Применяйте debounce к вводу примерно на 150 мс и отменяйте выполняющиеся запросы, если пользователь продолжает печатать. Ответы содержат
query, на который они отвечают, поэтому устаревшие можно отбрасывать. - Токенов сессии нет. Каждый вызов считается одним запросом. Обычно на выбор адреса уходит от 4 до 6 вызовов.
- Для публичных сайтов вызовы из браузера на бесплатном тарифе и есть предполагаемый способ использования. Учитывается IP посетителя, а не ваш.
- Форматы виджета Google
places.Autocomplete, Mapbox Search Box, HERE Autosuggest и Bing Autosuggest доступны на совместимых хостах.
Тот же запрос в форматах других провайдеров
Если у вас уже есть код, написанный под одного из этих провайдеров, оставьте его: совместимый хост принимает тот же путь и те же параметры и отвечает в формате ответа этого провайдера, а за ним работает этот эндпоинт. См. как работают совместимые хосты.
| Провайдер | Хост | Путь |
|---|---|---|
| Платформа Google Maps | gapi.mygeocode.com | /maps/api/place/autocomplete/json?input=... |
| REST-сервисы Bing Maps | bing.mygeocode.com | /REST/v1/Autosuggest?query=... |
| Геокодирование и поиск HERE | here.mygeocode.com | /v1/autosuggest?q=...&at=lat,lng/v1/autocomplete?q=... |
| Mapbox Geocoding | mapbox.mygeocode.com | /search/searchbox/v1/suggest?q=... |
| LocationIQ | locationiq.mygeocode.com | /v1/autocomplete?q=... |
| Geoapify | geoapify.mygeocode.com | /v1/geocode/autocomplete?text=... |
| TomTom Search | tomtom.mygeocode.com | /search/2/search/{query}.json?typeahead=true |
Ошибки
400 invalid_request, если q короче 2 символов или types содержит неизвестное значение.