Compatibilidade drop-in
Você não precisa aprender esta API para usá-la. Para dezessete outras APIs de geocodificação e consulta de IP, mantemos um host que aceita o formato de requisição desse provedor e responde no formato de resposta desse provedor, com os nossos dados por trás. O mesmo vale para as bibliotecas de mapas em JavaScript que esses provedores distribuem. A migração é uma troca de nome de host.
Como funciona
Cada host compatível é uma implementação completa da interface HTTP pública de um provedor: os mesmos caminhos, os mesmos parâmetros de consulta, os mesmos nomes de campos JSON, aninhamento e tipos, o mesmo vocabulário de status e os mesmos formatos de erro. Os valores são nossos. O seu código cliente, o seu código de parsing e o seu tratamento de erros não mudam.
- Troque o host.
maps.googleapis.comviragapi.mygeocode.com,dev.virtualearth.netvirabing.mygeocode.com, e assim por diante. A tabela abaixo tem todos os pares. - Troque a chave, ou deixe-a de lado. Coloque a sua chave do My Geocode no parâmetro que a chave antiga usava (
key,apiKey,access_token,token...). Qualquer endereço tem 2.500 requisições gratuitas por dia sem chave, e cada chave vem com 2.500 próprias, então migrar e testar não custa nada. - Compare. Execute uma amostra de requisições reais nos dois hosts. As coordenadas vão diferir um pouco porque os dados são diferentes; os nomes dos campos, não.
$ curl "https://maps.googleapis.com/maps/api/geocode/json?address=10+Downing+St+London&key=GOOGLE_KEY"$ curl "https://gapi.mygeocode.com/maps/api/geocode/json?address=10+Downing+St+London&key=MYGEOCODE_KEY"Todos os hosts compatíveis
Todos os hosts rodam na mesma infraestrutura, com os mesmos dados, a mesma cota gratuita e os mesmos preços de api.mygeocode.com. Clique em um provedor para ver a lista de endpoints, uma resposta de exemplo e as diferenças conhecidas.
| Provedor e consultas | Host original | Host compatível | Parâmetro da chave |
|---|---|---|---|
| Google Maps Platform Direta, reversa, preenchimento automático, fuso horário, altitude | maps.googleapis.com | gapi.mygeocode.com | key |
| Bing Maps REST Services Direta, reversa, preenchimento automático, fuso horário, altitude | dev.virtualearth.net | bing.mygeocode.com | key |
| HERE Geocoding and Search Direta, reversa, preenchimento automático | geocode.search.hereapi.comrevgeocode.search.hereapi.comautosuggest.search.hereapi.comautocomplete.search.hereapi.com | here.mygeocode.com | apiKey |
| Mapbox Geocoding Direta, reversa, preenchimento automático | api.mapbox.com | mapbox.mygeocode.com | access_token |
| Geocode.Farm Direta, reversa | api.geocode.farmwww.geocode.farm | farm.mygeocode.com | key |
| OpenStreetMap Nominatim Direta, reversa | nominatim.openstreetmap.org | osm.mygeocode.com | nenhum; adicione key ou o cabeçalho |
| OpenCage Direta, reversa | api.opencagedata.com | opencage.mygeocode.com | key |
| LocationIQ Direta, reversa, preenchimento automático, fuso horário | us1.locationiq.comeu1.locationiq.com | locationiq.mygeocode.com | key |
| Geoapify Direta, reversa, preenchimento automático, consulta de IP | api.geoapify.com | geoapify.mygeocode.com | apiKey |
| TomTom Search Direta, reversa, preenchimento automático | api.tomtom.com | tomtom.mygeocode.com | key |
| MapQuest Geocoding Direta, reversa | www.mapquestapi.comopen.mapquestapi.com | mapquest.mygeocode.com | key |
| Geocodio Direta, reversa | api.geocod.io | geocodio.mygeocode.com | api_key |
| PositionStack Direta, reversa | api.positionstack.com | positionstack.mygeocode.com | access_key |
| ip-api.com Consulta de IP | ip-api.compro.ip-api.com | ipapi.mygeocode.com | key |
| ipinfo.io Consulta de IP | ipinfo.io | ipinfo.mygeocode.com | token |
| ipstack Consulta de IP | api.ipstack.com | ipstack.mygeocode.com | access_key |
| Open-Elevation Elevation | api.open-elevation.com | openelevation.mygeocode.com | nenhum; adicione key ou o cabeçalho |
Bibliotecas de mapas JavaScript
Trocar de provedor dói mais no navegador, onde o mapa, o widget de geocodificação e a cobrança estão emaranhados. Para as bibliotecas abaixo, a própria biblioteca é carregada do nosso host (ou, no caso de MapLibre, Mapbox GL e Leaflet, apontada para o nosso host por configuração) e mantém a sua API pública: google.maps.Map, Microsoft.Maps.Map, H.Map e o resto. Tiles, geocodificação, preenchimento automático e altitude vêm de nós. Carregamentos de mapa e tiles são gratuitos; chamadas de geocodificação contam normalmente.
| Biblioteca | Carregada de | Carregue de | O que continua funcionando |
|---|---|---|---|
| Google Maps JavaScript API | maps.googleapis.com | gapi.mygeocode.com | google.maps.Map com os nossos tiles (tipos de mapa roadmap, satellite e terrain) |
| Bing Maps V8 Web Control | www.bing.com | bing.mygeocode.com | Microsoft.Maps.Map, Location, LocationRect, Pushpin, Infobox, Polyline, Polygon e Layer |
| Mapbox GL JS e mapbox-gl-geocoder | | mapbox.mygeocode.com | Estilos de tiles vetoriais: streets, light, dark e outdoors, na especificação de estilos do Mapbox |
| Plugins de geocodificação do Leaflet | tile.openstreetmap.org | tiles.mygeocode.com | Leaflet Control Geocoder: geocodificadores nominatim, google, bing, mapbox, here, opencage, latLng e mapquest, cada um apontado para o host correspondente do www.mygeocode.com |
| HERE Maps API for JavaScript | js.api.here.com | here.mygeocode.com | H.Map, H.map.Marker, H.map.Polyline, H.map.Polygon, H.map.Group |
| MapQuest.js | api.mqcdn.com | mapquest.mygeocode.com | L.mapquest.map e tileLayer (map, hybrid, satellite, light, dark) |
A página de drop-ins em JavaScript tem os trechos de código de antes e depois, a lista do que está e do que não está incluído em cada biblioteca, e as URLs de tiles e estilos.
Onde vai a chave
Cada host aceita a chave no lugar em que o provedor original a espera, e também no cabeçalho X-API-Key. A chave é opcional: 2.500 requisições por dia por endereço não precisam de chave. Uma chave gratuita leva um minuto para obter e adiciona crédito, pacotes e um histórico de uso. Uma chave de pagamento por uso pode ser usada a partir de dois endereços IP a cada 24 horas móveis, e uma chave Unlimited a partir de três; use mais chaves ou pacotes para mais endereços (veja autenticação).
| Parâmetro | Usado por |
|---|---|
key | Google Maps, Bing Maps, Geocode.Farm, OpenCage, LocationIQ, TomTom, MapQuest, ip-api (plano pro) |
apiKey | HERE, Geoapify |
access_token | Mapbox |
api_key | Geocodio |
access_key | PositionStack, ipstack |
token ou Authorization: Bearer | ipinfo, HERE |
| nenhum | Nominatim, Open-Elevation. Adicione key=... à consulta ou envie o cabeçalho X-API-Key. |
Cota e erros nos hosts compatíveis
A cota diária é a mesma de todos os outros lugares e é contada por chave, ou por endereço quando nenhuma chave é enviada, em api.mygeocode.com e em todos os hosts compatíveis: 2.500 gratuitas por dia, depois crédito ou uma chave Unlimited. Os cabeçalhos X-Quota-* e X-Key-IPs-* são enviados em todos os hosts, então você pode ler o estado real nos cabeçalhos, qualquer que seja o formato do corpo. No corpo, os limites são informados do jeito que o provedor os informa:
| Host | Sem crédito (402) | Chave inválida, ausente ou limitada por IP | Requisição inválida |
|---|---|---|---|
| gapi.mygeocode.com | HTTP 200, "status": "OVER_QUERY_LIMIT" | "status": "REQUEST_DENIED" | "status": "INVALID_REQUEST" |
| bing.mygeocode.com | "statusCode": 429 no envelope | "statusCode": 401, authenticationResultCode: InvalidCredentials | "statusCode": 400 com errorDetails |
| here.mygeocode.com | HTTP 429, {"title": "Too Many Requests", "status": 429} | HTTP 401 com error_description | HTTP 400 com title e cause |
| mapbox.mygeocode.com | HTTP 429, {"message": "Rate limit exceeded"} | HTTP 401, {"message": "Not Authorized - Invalid Token"} | HTTP 422 com message |
| osm.mygeocode.com | HTTP 429, {"error": {"code": 429, "message": "..."}} | Não se aplica | HTTP 400, {"error": {"code": 400, "message": "..."}} |
| ipapi.mygeocode.com | HTTP 200, {"status": "fail", "message": "quota"} | {"status": "fail", "message": "invalid key"} | {"status": "fail", "message": "invalid query"} |
| Outros | Conforme documentado pelo provedor; veja a página de cada host |
O que é igual e o que não é
Idêntico
- Caminhos, métodos e parâmetros de consulta que o provedor documenta.
- Estrutura da resposta: nomes de campos, aninhamento, arrays, tipos, ordem das coordenadas (incluindo o
[lon, lat]do Mapbox). - Vocabulários de status e de confiança (
ROOFTOP,High,houseNumber,EXACT_MATCH...), mapeados a partir dos nossosprecisioneconfidence. - Formatos de erro, para que o tratamento existente continue funcionando.
- Preços e cota: nada a mais por usar um host compatível.
Diferente
- Os dados. Coordenadas, strings formatadas e valores de confiança são nossos e não vão coincidir com os do original dígito por dígito. A cobertura em nível de número de casa varia por país; veja cobertura.
- Identificadores. Os place IDs são nossos e são estáveis, mas não podem ser enviados ao provedor original.
- Tudo o que estiver fora de geocodificação, preenchimento automático, IP, fuso horário e altitude: rotas, detalhes de lugares, fotos, trânsito, Street View. A página de cada host lista o que falta.
- Chaves: dois endereços IP a cada 24 horas móveis numa chave de pagamento por uso, três numa chave Unlimited, como nos nossos próprios endpoints.
Checklist de migração
- Procure o nome de host do provedor no seu código e na sua configuração. Muitas vezes ele está em mais de um lugar: código do servidor, apps móveis, uma regra de CDN, uma configuração em cache.
- Troque-o pelo host compatível da tabela acima. Mantenha o caminho.
- Substitua a chave por uma chave do My Geocode. Use uma chave por servidor ou, no máximo, por dois; uma chave de pagamento por uso aceita dois endereços IP a cada 24 horas móveis, uma chave Unlimited aceita três.
- Execute a sua suíte de testes existente. Ela deve passar sem alterações. Se faltar um campo do qual você depende, consulte a página do host para ver as lacunas conhecidas e nos avise.
- Repita algumas centenas de requisições reais nos dois hosts e compare as coordenadas e os campos que você exibe. Observe a
precisiononde o host compatível a expõe (comolocation_type,accuracy,resultTypee assim por diante). - Acompanhe o
X-Quota-Usedpor um dia para dimensionar o seu plano: crédito abaixo de cerca de 19.000 requisições por dia, uma chave Unlimited acima disso. - Cancele a cobrança antiga.
SDKs dos provedores
A maioria das bibliotecas cliente oficiais aceita uma URL base personalizada, então elas também funcionam com os hosts compatíveis: os clientes do Google Maps Services (googlemaps para Python, @googlemaps/google-maps-services-js), os SDKs do Mapbox (opção origin), os clientes REST da HERE, as bibliotecas do ipinfo e wrappers do Nominatim como o geopy (domain=). Aponte-os para o host da tabela e passe a sua chave do My Geocode onde ficava a chave do provedor.
Um provedor que não está na lista
Adicionar um host leva alguns dias de trabalho quando o formato do provedor é documentado. Se você usa um serviço que não está aqui, diga qual é e, aproximadamente, quantas requisições por dia você envia. As adições recentes foram todas pedidos de usuários.