Обратное геокодирование

На входе координаты, на выходе ближайший адрес или населённый пункт, регион либо страна, если вам нужно только это.

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

Параметры

ПараметрТипОписание
latобязательныйчислоОт -90 до 90.
lonобязательныйчислоОт -180 до 180.
levelнеобязательныйстрокаСамый детальный уровень для возврата: address (по умолчанию), street, postcode, city, region, country. Более крупные уровни работают быстрее и никогда не опускаются ниже запрошенного уровня.
radiusнеобязательныйцелое числоРадиус поиска адресов в метрах, от 1 до 5000. По умолчанию 5000. Задайте его небольшим, чтобы получить null вместо далёкого адреса.
langнеобязательныйстрокаКод ISO 639-1 для названий. По умолчанию en.
keyнеобязательныйстрокаAPI-ключ, если он не передан в заголовке.

Пример

$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/reverse?lat=41.8902&lon=12.4922&lang=it"
const url = new URL("https://api.mygeocode.com/v1/reverse");
url.searchParams.set("lat", 41.8902);
url.searchParams.set("lon", 12.4922);
url.searchParams.set("lang", "it");

const { result } = await (await fetch(url, { headers: { "X-API-Key": "YOUR_KEY" } })).json();
console.log(result ? result.formatted : "nothing nearby");
import requests

r = requests.get("https://api.mygeocode.com/v1/reverse",
                 params={"lat": 41.8902, "lon": 12.4922, "lang": "it"}, headers={"X-API-Key": "YOUR_KEY"}, timeout=10)
result = r.json()["result"]
print(result["formatted"] if result else "nothing nearby")
Ответ
{
  "status": "ok",
  "lat": 41.8902,
  "lon": 12.4922,
  "result": {
    "formatted": "Piazza del Colosseo 1, 00184 Roma RM, Italia",
    "lat": 41.890251,
    "lon": 12.492373,
    "distance_m": 9,
    "type": "address",
    "precision": "house",
    "place_id": "it.addr.5d09aa31",
    "components": {
      "house_number": "1",
      "road": "Piazza del Colosseo",
      "suburb": "Municipio Roma I",
      "city": "Roma",
      "county": "Roma",
      "state": "Lazio",
      "postcode": "00184",
      "country": "Italia",
      "country_code": "it"
    }
  }
}

Поля ответа

ПолеТипОписание
lat, lonчислоОтправленная вами точка, возвращённая обратно.
resultобъект или nullnull, если на запрошенном уровне в пределах radius ничего нет.
result.formattedстрокаАдрес или название населённого пункта для более крупных уровней.
result.lat, result.lonчислоПоложение возвращённого объекта, а не вашей точки.
result.distance_mцелое числоРасстояние в метрах от вашей точки до объекта. 0, если точка находится внутри него.
result.type, result.precision, result.place_id, result.componentsКак в прямом геокодировании.

Примечания

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

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

ПровайдерХостПуть
Платформа Google Mapsgapi.mygeocode.com/maps/api/geocode/json?latlng=lat,lng
REST-сервисы Bing Mapsbing.mygeocode.com/REST/v1/Locations/{lat},{lon}
Геокодирование и поиск HEREhere.mygeocode.com/v1/revgeocode?at=lat,lng
Mapbox Geocodingmapbox.mygeocode.com/geocoding/v5/mapbox.places/{lon},{lat}.json
/search/geocode/v6/reverse?longitude=...&latitude=...
Geocode.Farmfarm.mygeocode.com/reverse/?lat=...&lon=...
/v3/json/reverse/?lat=...&lon=...
OpenStreetMap Nominatimosm.mygeocode.com/reverse?lat=...&lon=...&format=json
OpenCageopencage.mygeocode.com/geocode/v1/json?q=lat,lng
LocationIQlocationiq.mygeocode.com/v1/reverse?lat=...&lon=...&format=json
Geoapifygeoapify.mygeocode.com/v1/geocode/reverse?lat=...&lon=...
TomTom Searchtomtom.mygeocode.com/search/2/reverseGeocode/{lat},{lon}.json
MapQuest Geocodingmapquest.mygeocode.com/geocoding/v1/reverse?location=lat,lng
Geocodiogeocodio.mygeocode.com/v1.7/reverse?q=lat,lng
PositionStackpositionstack.mygeocode.com/v1/reverse?query=lat,lng

Пакетные запросы

Отправьте POST-запрос с телом JSON на тот же путь с coords, массивом до 100 пар [lat, lon], и ответ будет содержать массив results с одной записью на каждую пару в порядке отправки. Каждая запись засчитывается как один запрос, а пакет, превышающий остаток квоты, отклоняется целиком.

$ curl -X POST "https://api.mygeocode.com/v1/reverse" -H "Content-Type: application/json" -d '{"coords": [[52.5163, 13.3777], [47.3769, 8.5417]]}'

Ошибки

400 invalid_request, если lat или lon отсутствует или вне допустимого диапазона либо level не входит в перечисленные значения.