Прямое геокодирование

Превращает текст в координаты. Принимает полные адреса, неполные адреса, почтовые индексы, названия мест и точки интереса на любом языке.

GEThttps://api.mygeocode.com/v1/forward

Параметры

ПараметрТипОписание
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 строчными буквами.

Примечания

Тот же запрос в форматах других провайдеров

Если у вас уже есть код, написанный под одного из этих провайдеров, оставьте его: совместимый хост принимает тот же путь и те же параметры и отвечает в формате ответа этого провайдера, а за ним работает этот эндпоинт. См. как работают совместимые хосты.

ПровайдерХостПуть
Платформа Google Mapsgapi.mygeocode.com/maps/api/geocode/json?address=...
REST-сервисы Bing Mapsbing.mygeocode.com/REST/v1/Locations?q=...
/REST/v1/Locations?countryRegion=...&locality=...&addressLine=...
Геокодирование и поиск HEREhere.mygeocode.com/v1/geocode?q=...
/v1/geocode?qq=street=...;city=...
Mapbox Geocodingmapbox.mygeocode.com/geocoding/v5/mapbox.places/{query}.json
/search/geocode/v6/forward?q=...
Geocode.Farmfarm.mygeocode.com/forward/?addr=...
/v3/json/forward/?addr=...
OpenStreetMap Nominatimosm.mygeocode.com/search?q=...&format=json
/search?street=...&city=...&country=...&format=json
OpenCageopencage.mygeocode.com/geocode/v1/json?q=...
/geocode/v1/geojson?q=...
LocationIQlocationiq.mygeocode.com/v1/search?q=...&format=json
Geoapifygeoapify.mygeocode.com/v1/geocode/search?text=...
TomTom Searchtomtom.mygeocode.com/search/2/geocode/{query}.json
/search/2/structuredGeocode.json?countryCode=...&streetName=...
MapQuest Geocodingmapquest.mygeocode.com/geocoding/v1/address?location=...
/geocoding/v1/batch?location=...&location=...
Geocodiogeocodio.mygeocode.com/v1.7/geocode?q=...
/v1.7/geocode (POST, JSON array)
PositionStackpositionstack.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 имеет неверный формат. Остальное см. в разделе ошибки.