Прямое геокодирование
Превращает текст в координаты. Принимает полные адреса, неполные адреса, почтовые индексы, названия мест и точки интереса на любом языке.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
qобязательный* | строка | Произвольный текст для геокодирования. До 256 символов. |
street, city, state, postcode, country | строка | *Структурированная альтернатива q. Используйте, если адрес уже разбит на поля. Если q отсутствует, нужно хотя бы одно из них. country здесь задаётся кодом ISO 3166-1 alpha-2. |
place_id | строка | *place_id из автодополнения. Возвращает это одно место со всеми компонентами адреса и границами. Имеет приоритет над q. |
limitнеобязательный | целое число | Максимум результатов, от 1 до 10. По умолчанию 5. |
countriesнеобязательный | строка | Коды ISO 3166-1 alpha-2 через запятую. Возвращаются только результаты в этих странах. Пример: gb,ie. |
boundsнеобязательный | строка | south,west,north,east в десятичных градусах. Результаты внутри прямоугольника идут первыми. Добавьте strict=1, чтобы исключить результаты за его пределами. |
proximityнеобязательный | строка | lat,lon. Результаты рядом с этой точкой идут первыми. |
langнеобязательный | строка | Код ISO 639-1 для названий в ответе. По умолчанию en. |
keyнеобязательный | строка | API-ключ, если он не передан в заголовке X-API-Key. |
Пример
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/forward?q=Dam+1,+Amsterdam&countries=nl&limit=1"const url = new URL("https://api.mygeocode.com/v1/forward");
url.searchParams.set("q", "Dam 1, Amsterdam");
url.searchParams.set("countries", "nl");
url.searchParams.set("limit", "1");
const data = await (await fetch(url, { headers: { "X-API-Key": "YOUR_KEY" } })).json();
console.log(data.results[0]);import requests
r = requests.get("https://api.mygeocode.com/v1/forward",
params={"q": "Dam 1, Amsterdam", "countries": "nl", "limit": 1}, headers={"X-API-Key": "YOUR_KEY"}, timeout=10)
print(r.json()["results"][0]){
"status": "ok",
"query": "Dam 1, Amsterdam",
"results": [
{
"formatted": "Dam 1, 1012 JS Amsterdam, Netherlands",
"lat": 52.373119,
"lon": 4.893604,
"type": "address",
"precision": "house",
"confidence": 0.98,
"place_id": "nl.addr.c21d40e8",
"components": {
"house_number": "1",
"road": "Dam",
"neighbourhood": "Centrum",
"city": "Amsterdam",
"state": "North Holland",
"state_code": "NH",
"postcode": "1012 JS",
"country": "Netherlands",
"country_code": "nl"
},
"bounds": { "north": 52.373519, "south": 52.372719, "east": 4.894204, "west": 4.893004 }
}
]
}Поля ответа
| Поле | Тип | Описание |
|---|---|---|
query | строка | Текст, который мы разобрали, после удаления лишних пробелов. |
results | массив | Совпадения, лучшие первыми. Пусто, если ничего не найдено. |
results[].formatted | строка | Полный адрес в принятом в стране формате. |
results[].lat, lon | число | Десятичные градусы WGS 84. |
results[].type | строка | address, street, postcode, city, region, country, poi. |
results[].precision | строка | house, street, postcode, admin. Что обозначает точка. См. покрытие. |
results[].confidence | число | От 0 до 1. Насколько хорошо результат соответствует запросу. Ниже 0.5 означает, что мы угадывали. |
results[].place_id | строка | Стабильный идентификатор этого места. |
results[].components | объект | Части адреса. См. ниже. |
results[].bounds | объект | north, south, east, west найденного объекта. |
Ключи компонентов
Присутствуют только применимые ключи. Во всех странах используются одни и те же ключи.
| Ключ | Значение |
|---|---|
name | Название точки интереса или здания, если совпадение является таковым. |
house_number | С буквами и диапазонами: 221B, 12-14. |
road | Название улицы с её типом: Baker Street, Avenue Anatole France. |
neighbourhood, suburb | Районы внутри города, если они используются в стране. |
city | Город, посёлок или деревня. |
county | Округ или район. |
state, state_code | Штат, провинция или регион и его суффикс ISO 3166-2, если он есть. |
postcode | Почтовый индекс в том формате, в котором его записывает почтовая служба. |
country, country_code | Название страны и её код ISO 3166-1 alpha-2 строчными буквами. |
Примечания
- Результаты упорядочены по сочетанию достоверности, точности и близости. Используйте первый результат, если только вы не показываете список для выбора.
- Если номер дома не найден на известной улице, результат имеет
type: streetиprecision: street, а номер интерполируется там, где позволяют данные. Проверяйтеprecision, если это для вас важно. - Одни почтовые индексы в
qтоже подходят. Для задач, где нужны только индексы, эндпоинт почтовых индексов работает быстрее и возвращает название места, принятое почтовой службой. - Запрос в одной письменности для места, где используется другая (например, кириллицей для японского адреса), работает, но письменность ответа определяет
lang.
Тот же запрос в форматах других провайдеров
Если у вас уже есть код, написанный под одного из этих провайдеров, оставьте его: совместимый хост принимает тот же путь и те же параметры и отвечает в формате ответа этого провайдера, а за ним работает этот эндпоинт. См. как работают совместимые хосты.
| Провайдер | Хост | Путь |
|---|---|---|
| Платформа Google Maps | gapi.mygeocode.com | /maps/api/geocode/json?address=... |
| REST-сервисы Bing Maps | bing.mygeocode.com | /REST/v1/Locations?q=.../REST/v1/Locations?countryRegion=...&locality=...&addressLine=... |
| Геокодирование и поиск HERE | here.mygeocode.com | /v1/geocode?q=.../v1/geocode?qq=street=...;city=... |
| Mapbox Geocoding | mapbox.mygeocode.com | /geocoding/v5/mapbox.places/{query}.json/search/geocode/v6/forward?q=... |
| Geocode.Farm | farm.mygeocode.com | /forward/?addr=.../v3/json/forward/?addr=... |
| OpenStreetMap Nominatim | osm.mygeocode.com | /search?q=...&format=json/search?street=...&city=...&country=...&format=json |
| OpenCage | opencage.mygeocode.com | /geocode/v1/json?q=.../geocode/v1/geojson?q=... |
| LocationIQ | locationiq.mygeocode.com | /v1/search?q=...&format=json |
| Geoapify | geoapify.mygeocode.com | /v1/geocode/search?text=... |
| TomTom Search | tomtom.mygeocode.com | /search/2/geocode/{query}.json/search/2/structuredGeocode.json?countryCode=...&streetName=... |
| MapQuest Geocoding | mapquest.mygeocode.com | /geocoding/v1/address?location=.../geocoding/v1/batch?location=...&location=... |
| Geocodio | geocodio.mygeocode.com | /v1.7/geocode?q=.../v1.7/geocode (POST, JSON array) |
| PositionStack | positionstack.mygeocode.com | /v1/forward?query=... |
Пакетные запросы
Отправьте POST-запрос с телом JSON на тот же путь с queries, массивом до 100 адресов, и ответ будет содержать массив results с одной записью на каждый запрос в порядке отправки. Каждая запись засчитывается как один запрос, а пакет, превышающий остаток квоты, отклоняется целиком.
$ curl -X POST "https://api.mygeocode.com/v1/forward" -H "Content-Type: application/json" -d '{"queries": ["Brandenburg Gate, Berlin", "Bahnhofstrasse 1, Zurich"]}'Ошибки
400 invalid_request, если нет ни q, ни структурированного поля, ни place_id, если limit вне диапазона от 1 до 10 или если bounds или proximity имеет неверный формат. Остальное см. в разделе ошибки.