Geocodificación directa
Convierte texto en coordenadas. Acepta direcciones completas, direcciones parciales, códigos postales, nombres de lugares y puntos de interés, en cualquier idioma.
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
qobligatorio* | string | Texto libre para geocodificar. Hasta 256 caracteres. |
street, city, state, postcode, country | string | *Alternativa estructurada a q. Úsala cuando ya tienes la dirección en campos. Se requiere al menos uno si falta q. Aquí country es un código ISO 3166-1 alfa-2. |
place_id | string | *Un place_id del autocompletado. Devuelve ese lugar con los componentes completos y los límites. Tiene prioridad sobre q. |
limitopcional | integer | Número máximo de resultados, de 1 a 10. Por defecto 5. |
countriesopcional | string | Códigos ISO 3166-1 alfa-2 separados por comas. Solo se devuelven resultados en estos países. Ejemplo: gb,ie. |
boundsopcional | string | south,west,north,east en grados decimales. Los resultados dentro del recuadro aparecen primero. Añade strict=1 para excluir los que quedan fuera. |
proximityopcional | string | lat,lon. Los resultados cercanos a este punto aparecen primero. |
langopcional | string | Código ISO 639-1 para los nombres de la respuesta. Por defecto en. |
keyopcional | string | Clave de API, si no se envía como cabecera X-API-Key. |
Ejemplo
$ 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 }
}
]
}Campos de la respuesta
| Campo | Tipo | Descripción |
|---|---|---|
query | string | El texto que interpretamos, tras recortar los espacios. |
results | array | Coincidencias, la mejor primero. Vacío cuando nada coincidió. |
results[].formatted | string | Dirección completa en el formato habitual del país. |
results[].lat, lon | number | Grados decimales WGS 84. |
results[].type | string | address, street, postcode, city, region, country, poi. |
results[].precision | string | house, street, postcode, admin. Lo que representa el punto. Consulta cobertura. |
results[].confidence | number | De 0 a 1. Cuánto se ajusta el resultado a la consulta. Por debajo de 0.5 significa que lo estimamos. |
results[].place_id | string | Identificador estable de este lugar. |
results[].components | object | Partes de la dirección. Ver más abajo. |
results[].bounds | object | north, south, east, west del elemento encontrado. |
Claves de los componentes
Solo aparecen las claves que corresponden. Se usan las mismas claves en todos los países.
| Clave | Significado |
|---|---|
name | Nombre de un punto de interés o edificio, cuando la coincidencia lo es. |
house_number | Incluidas letras y rangos: 221B, 12-14. |
road | Nombre de la calle con su tipo: Baker Street, Avenue Anatole France. |
neighbourhood, suburb | Zonas dentro de la ciudad, donde el país las usa. |
city | Ciudad, pueblo o aldea. |
county | Condado o distrito. |
state, state_code | Estado, provincia o región, y su sufijo ISO 3166-2 cuando existe. |
postcode | Código postal, con el formato que usa la autoridad postal. |
country, country_code | Nombre del país y código ISO 3166-1 alfa-2 en minúsculas. |
Notas
- Los resultados se ordenan por una combinación de confianza, precisión y proximidad. El primer resultado es el que debes usar, salvo que muestres un selector.
- Cuando no se encuentra un número de casa en una calle conocida, el resultado tiene
type: streetyprecision: street, con el número interpolado donde los datos lo permiten. Revisaprecisionsi eso te importa. - Los códigos postales solos sirven como
q. Para cargas de trabajo solo con códigos postales, el endpoint de códigos postales es más rápido y devuelve el nombre del lugar según la autoridad postal. - Una consulta en un alfabeto para un lugar que usa otro (en cirílico para una dirección japonesa, por ejemplo) funciona, pero
langdecide el alfabeto de la respuesta.
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?address=... |
| Bing Maps REST Services | bing.mygeocode.com | /REST/v1/Locations?q=.../REST/v1/Locations?countryRegion=...&locality=...&addressLine=... |
| HERE Geocoding and Search | 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=... |
Consultas masivas
Envía por POST un cuerpo JSON a la misma ruta con queries, un array de hasta 100 direcciones, y la respuesta incluye un array results con una entrada por consulta 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/forward" -H "Content-Type: application/json" -d '{"queries": ["Brandenburg Gate, Berlin", "Bahnhofstrasse 1, Zurich"]}'Errores
400 invalid_request cuando no hay q, ni un campo estructurado ni place_id, cuando limit está fuera del rango de 1 a 10, o cuando bounds o proximity están mal formados. Consulta errores para el resto.