Geocodificação reversa
Entram coordenadas, sai o endereço mais próximo, ou a localidade, a região ou o país, se for só isso que você quer.
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
latobrigatório | número | De -90 a 90. |
lonobrigatório | número | De -180 a 180. |
levelopcional | string | O nível mais específico a retornar: address (padrão), street, postcode, city, region, country. Níveis mais amplos são mais rápidos e nunca descem abaixo do nível solicitado. |
radiusopcional | inteiro | Raio de busca de endereços em metros, de 1 a 5000. Padrão 5000. Defina um valor pequeno para receber null em vez de um endereço distante. |
langopcional | string | Código ISO 639-1 para os nomes. Padrão en. |
keyopcional | string | Chave de API, se não for enviada como cabeçalho. |
Exemplo
$ 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 da resposta
| Campo | Tipo | Descrição |
|---|---|---|
lat, lon | número | O ponto que você enviou, repetido. |
result | objeto ou null | null quando não há nada dentro de radius no nível solicitado. |
result.formatted | string | O endereço, ou o nome da localidade nos níveis mais amplos. |
result.lat, result.lon | número | A posição do elemento retornado, não do seu ponto. |
result.distance_m | inteiro | Metros do seu ponto até o elemento. 0 quando o ponto está dentro dele. |
result.type, result.precision, result.place_id, result.components | Como na geocodificação direta. |
Observações
- Um
distance_mgrande é um sinal. Um ponto num parque pode estar a 300 m do endereço mais próximo; nesse caso, mostrar o bairro costuma ser melhor do que mostrar o endereço. level=countryresponde em cerca de um milissegundo e é a forma mais barata de responder "em que país fica este ponto".- Pontos no mar retornam
nullno níveladdresse, dentro das águas territoriais, o país no nívelcountry.
A mesma consulta nos formatos de outros provedores
Se você já tem código escrito para um desses provedores, mantenha-o: o host compatível aceita o mesmo caminho e os mesmos parâmetros e responde no formato de resposta desse provedor, com este endpoint por trás. Veja como funcionam os hosts compatíveis.
| Provedor | Host | Caminho |
|---|---|---|
| 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 em lote
Envie um corpo JSON por POST para o mesmo caminho com coords, um array de até 100 pares [lat, lon], e a resposta traz um array results com uma entrada por par, na ordem enviada. Cada entrada conta como uma requisição, e um lote maior do que o que resta da cota é recusado por inteiro.
$ curl -X POST "https://api.mygeocode.com/v1/reverse" -H "Content-Type: application/json" -d '{"coords": [[52.5163, 13.3777], [47.3769, 8.5417]]}'Erros
400 invalid_request quando lat ou lon está ausente ou fora do intervalo, ou quando level não é um dos valores listados.