Geocodificación inversa
Entran coordenadas y sale la dirección más cercana, o la localidad, la región o el país si es todo lo que quieres.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
latobligatorio | number | De -90 a 90. |
lonobligatorio | number | De -180 a 180. |
levelopcional | string | El nivel más específico que se devuelve: address (por defecto), street, postcode, city, region, country. Los niveles más generales son más rápidos y nunca bajan del nivel solicitado. |
radiusopcional | integer | Radio de búsqueda de direcciones en metros, de 1 a 5000. Por defecto 5000. Ponlo pequeño para obtener null en lugar de una dirección lejana. |
langopcional | string | Código ISO 639-1 para los nombres. Por defecto en. |
keyopcional | string | Clave de API, si no se envía como cabecera. |
Ejemplo
$ 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"
}
}
}Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
lat, lon | number | El punto que enviaste, devuelto tal cual. |
result | object o null | null cuando no hay nada dentro de radius en el nivel solicitado. |
result.formatted | string | La dirección, o el nombre de la localidad en los niveles más generales. |
result.lat, result.lon | number | La posición del elemento devuelto, no la de tu punto. |
result.distance_m | integer | Metros desde tu punto hasta el elemento. 0 cuando el punto está dentro de él. |
result.type, result.precision, result.place_id, result.components | Como en la geocodificación directa. |
Notas
- Un
distance_mgrande es una señal. Un punto en un parque puede estar a 300 m de la dirección más cercana; en ese caso, mostrar el barrio suele ser mejor que mostrar la dirección. level=countryresponde en aproximadamente un milisegundo y es la forma más barata de responder "en qué país está este punto".- Los puntos en el mar devuelven
nullen el niveladdressy, dentro de las aguas territoriales, el país en el nivelcountry.
La misma consulta en los formatos de otros proveedores
Si ya tienes código escrito para uno de estos proveedores, consérvalo: el host compatible acepta la misma ruta y los mismos parámetros y responde con la estructura de respuesta de ese proveedor, con este endpoint detrás. Consulta cómo funcionan los hosts compatibles.
| Proveedor | Host | Ruta |
|---|---|---|
| Google Maps Platform | gapi.mygeocode.com | /maps/api/geocode/json?latlng=lat,lng |
| Bing Maps REST Services | bing.mygeocode.com | /REST/v1/Locations/{lat},{lon} |
| HERE Geocoding and Search | here.mygeocode.com | /v1/revgeocode?at=lat,lng |
| Mapbox Geocoding | mapbox.mygeocode.com | /geocoding/v5/mapbox.places/{lon},{lat}.json/search/geocode/v6/reverse?longitude=...&latitude=... |
| Geocode.Farm | farm.mygeocode.com | /reverse/?lat=...&lon=.../v3/json/reverse/?lat=...&lon=... |
| OpenStreetMap Nominatim | osm.mygeocode.com | /reverse?lat=...&lon=...&format=json |
| OpenCage | opencage.mygeocode.com | /geocode/v1/json?q=lat,lng |
| LocationIQ | locationiq.mygeocode.com | /v1/reverse?lat=...&lon=...&format=json |
| Geoapify | geoapify.mygeocode.com | /v1/geocode/reverse?lat=...&lon=... |
| TomTom Search | tomtom.mygeocode.com | /search/2/reverseGeocode/{lat},{lon}.json |
| MapQuest Geocoding | mapquest.mygeocode.com | /geocoding/v1/reverse?location=lat,lng |
| Geocodio | geocodio.mygeocode.com | /v1.7/reverse?q=lat,lng |
| PositionStack | positionstack.mygeocode.com | /v1/reverse?query=lat,lng |
Consultas masivas
Envía por POST un cuerpo JSON a la misma ruta con coords, un array de hasta 100 pares [lat, lon], y la respuesta incluye un array results con una entrada por par en el orden enviado. Cada entrada cuenta como una solicitud, y un lote mayor que lo que queda de la cuota se rechaza entero.
$ curl -X POST "https://api.mygeocode.com/v1/reverse" -H "Content-Type: application/json" -d '{"coords": [[52.5163, 13.3777], [47.3769, 8.5417]]}'Errores
400 invalid_request cuando falta lat o lon o están fuera de rango, o level no es uno de los valores indicados.