Compatibilidad drop-in
No tienes que aprender esta API para usarla. Para otras diecisiete API de geocodificación y consulta de IP tenemos un host que acepta el formato de solicitud de ese proveedor y responde en su formato de respuesta, con nuestros datos detrás. Lo mismo se aplica a las bibliotecas de mapas en JavaScript que ofrecen esos proveedores. Migrar es cambiar un nombre de host.
Cómo funciona
Cada host compatible es una implementación completa de la interfaz HTTP pública de un proveedor: las mismas rutas, los mismos parámetros de consulta, los mismos nombres de campos JSON, anidamiento y tipos, el mismo vocabulario de estados y las mismas estructuras de error. Los valores son nuestros. Tu código cliente, tu código de análisis y tu gestión de errores no cambian.
- Cambia el host.
maps.googleapis.compasa a sergapi.mygeocode.com,dev.virtualearth.netpasa a serbing.mygeocode.com, y así sucesivamente. La tabla de abajo tiene todos los pares. - Cambia la clave o quítala. Pon tu clave de My Geocode en el parámetro que usaba la clave anterior (
key,apiKey,access_token,token...). Cualquier dirección tiene 2.500 solicitudes gratuitas al día sin clave, y cada clave trae 2.500 propias, así que migrar y hacer pruebas no cuesta nada. - Compara. Ejecuta una muestra de solicitudes reales contra ambos hosts. Las coordenadas diferirán ligeramente porque los datos son distintos; los nombres de los campos no.
$ 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 los hosts compatibles
Todos los hosts funcionan sobre la misma infraestructura, con los mismos datos, la misma cuota gratuita y los mismos precios que api.mygeocode.com. Haz clic en un proveedor para ver su lista de endpoints, una respuesta de ejemplo y las diferencias conocidas.
| Proveedor y consultas | Host original | Host compatible | Parámetro de la clave |
|---|---|---|---|
| Google Maps Platform Directa, inversa, autocompletado, zona horaria, elevación | maps.googleapis.com | gapi.mygeocode.com | key |
| Bing Maps REST Services Directa, inversa, autocompletado, zona horaria, elevación | dev.virtualearth.net | bing.mygeocode.com | key |
| HERE Geocoding and Search Directa, inversa, autocompletado | geocode.search.hereapi.comrevgeocode.search.hereapi.comautosuggest.search.hereapi.comautocomplete.search.hereapi.com | here.mygeocode.com | apiKey |
| Mapbox Geocoding Directa, inversa, autocompletado | api.mapbox.com | mapbox.mygeocode.com | access_token |
| Geocode.Farm Directa, inversa | api.geocode.farmwww.geocode.farm | farm.mygeocode.com | key |
| OpenStreetMap Nominatim Directa, inversa | nominatim.openstreetmap.org | osm.mygeocode.com | ninguno; añade key o la cabecera |
| OpenCage Directa, inversa | api.opencagedata.com | opencage.mygeocode.com | key |
| LocationIQ Directa, inversa, autocompletado, zona horaria | us1.locationiq.comeu1.locationiq.com | locationiq.mygeocode.com | key |
| Geoapify Directa, inversa, autocompletado, consulta de IP | api.geoapify.com | geoapify.mygeocode.com | apiKey |
| TomTom Search Directa, inversa, autocompletado | api.tomtom.com | tomtom.mygeocode.com | key |
| MapQuest Geocoding Directa, inversa | www.mapquestapi.comopen.mapquestapi.com | mapquest.mygeocode.com | key |
| Geocodio Directa, inversa | api.geocod.io | geocodio.mygeocode.com | api_key |
| PositionStack Directa, inversa | 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 | ninguno; añade key o la cabecera |
Bibliotecas de mapas en JavaScript
Los cambios de proveedor duelen más en el navegador, donde el mapa, el widget de geocodificación y la facturación están enredados. En las bibliotecas de abajo, la propia biblioteca se carga desde nuestro host (o, en el caso de MapLibre, Mapbox GL y Leaflet, se apunta a nuestro host mediante configuración) y conserva su API pública: google.maps.Map, Microsoft.Maps.Map, H.Map y el resto. Las teselas, la geocodificación, el autocompletado y la elevación los ponemos nosotros. Las cargas de mapas y las teselas son gratuitas; las llamadas de geocodificación cuentan como siempre.
| Biblioteca | Se carga desde | Cárgala en su lugar desde | Qué sigue funcionando |
|---|---|---|---|
| Google Maps JavaScript API | maps.googleapis.com | gapi.mygeocode.com | google.maps.Map con nuestros mapas base (tipos de mapa roadmap, satellite y terrain) |
| Bing Maps V8 Web Control | www.bing.com | bing.mygeocode.com | Microsoft.Maps.Map, Location, LocationRect, Pushpin, Infobox, Polyline, Polygon y Layer |
| Mapbox GL JS y mapbox-gl-geocoder | | mapbox.mygeocode.com | Estilos de teselas vectoriales: streets, light, dark y outdoors, según la especificación de estilos de Mapbox |
| Plugins de geocodificación de Leaflet | tile.openstreetmap.org | tiles.mygeocode.com | Leaflet Control Geocoder: geocodificadores nominatim, google, bing, mapbox, here, opencage, latLng y mapquest, cada uno apuntando al host de www.mygeocode.com correspondiente |
| 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 y tileLayer (map, hybrid, satellite, light, dark) |
La página de reemplazos compatibles en JavaScript tiene los fragmentos de antes y después, la lista de lo que incluye y no incluye cada biblioteca, y las URL de teselas y estilos.
Dónde va la clave
Cada host acepta la clave en el lugar donde la espera el proveedor original, y también en la cabecera X-API-Key. La clave es opcional: 2.500 solicitudes al día por dirección no la necesitan. Una clave gratuita se obtiene en un minuto y añade crédito, paquetes y un historial de uso. Una clave de pago por uso puede usarse desde dos direcciones IP por cada 24 horas móviles y una clave Unlimited desde tres; usa más claves o paquetes para más direcciones (consulta autenticación).
| Parámetro | Usado por |
|---|---|
key | Google Maps, Bing Maps, Geocode.Farm, OpenCage, LocationIQ, TomTom, MapQuest, ip-api (plan pro) |
apiKey | HERE, Geoapify |
access_token | Mapbox |
api_key | Geocodio |
access_key | PositionStack, ipstack |
token o Authorization: Bearer | ipinfo, HERE |
| ninguno | Nominatim, Open-Elevation. Añade key=... a la consulta o envía la cabecera X-API-Key. |
Cuota y errores en los hosts compatibles
La cuota diaria es la misma que en todas partes y se cuenta por clave, o por dirección si no se envía clave, entre api.mygeocode.com y todos los hosts compatibles: 2.500 gratuitas al día y después crédito o una clave Unlimited. Las cabeceras X-Quota-* y X-Key-IPs-* se envían en todos los hosts, así que puedes leer el estado real en las cabeceras sea cual sea el formato del cuerpo. En el cuerpo, los límites se informan como los informa el proveedor:
| Host | Sin crédito (402) | Clave incorrecta, ausente o limitada por IP | Solicitud no válida |
|---|---|---|---|
| gapi.mygeocode.com | HTTP 200, "status": "OVER_QUERY_LIMIT" | "status": "REQUEST_DENIED" | "status": "INVALID_REQUEST" |
| bing.mygeocode.com | "statusCode": 429 en el sobre | "statusCode": 401, authenticationResultCode: InvalidCredentials | "statusCode": 400 con errorDetails |
| here.mygeocode.com | HTTP 429, {"title": "Too Many Requests", "status": 429} | HTTP 401 con error_description | HTTP 400 con title y cause |
| mapbox.mygeocode.com | HTTP 429, {"message": "Rate limit exceeded"} | HTTP 401, {"message": "Not Authorized - Invalid Token"} | HTTP 422 con message |
| osm.mygeocode.com | HTTP 429, {"error": {"code": 429, "message": "..."}} | No 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"} |
| Otros | Según la documentación del proveedor; consulta la página de cada host |
Qué coincide y qué no
Idéntico
- Las rutas, los métodos y los parámetros de consulta que documenta el proveedor.
- La estructura de la respuesta: nombres de campos, anidamiento, arrays, tipos y orden de las coordenadas (incluido el
[lon, lat]de Mapbox). - Los vocabularios de estado y de confianza (
ROOFTOP,High,houseNumber,EXACT_MATCH...), derivados de nuestrosprecisionyconfidence. - Las estructuras de error, para que tu gestión actual siga funcionando.
- Precios y cuota: no hay ningún coste extra por usar un host compatible.
Diferente
- Los datos. Las coordenadas, las cadenas con formato y los valores de confianza son nuestros y no coincidirán dígito a dígito con el original. La cobertura a nivel de número de casa varía según el país; consulta cobertura.
- Los identificadores. Los ID de lugar son nuestros y son estables, pero no se pueden enviar al proveedor original.
- Todo lo que queda fuera de la geocodificación, el autocompletado, la IP, la zona horaria y la elevación: rutas, detalles de lugares, fotos, tráfico, Street View. La página de cada host indica lo que falta.
- Las claves: dos direcciones IP por cada 24 horas móviles en una clave de pago por uso, tres en una clave Unlimited, igual que en nuestros propios endpoints.
Lista de comprobación para la migración
- Busca el nombre de host del proveedor en tu código y tu configuración. Suele estar en más de un sitio: código del servidor, apps móviles, una regla de CDN, una configuración en caché.
- Cámbialo por el host compatible de la tabla anterior. Conserva la ruta.
- Sustituye la clave por una clave de My Geocode. Usa una clave por servidor, o dos como máximo; una clave de pago por uso acepta dos direcciones IP por cada 24 horas móviles, una clave Unlimited tres.
- Ejecuta tu batería de pruebas actual. Debería pasar sin cambios. Si falta un campo del que dependes, revisa en la página del host las carencias conocidas y avísanos.
- Repite unos cientos de solicitudes reales contra ambos hosts y compara las coordenadas y los campos que muestras. Fíjate en
precisiondonde el host compatible la expone (comolocation_type,accuracy,resultType, etc.). - Observa
X-Quota-Useddurante un día para dimensionar tu plan: crédito por debajo de unas 19.000 solicitudes al día, una clave Unlimited por encima. - Cancela la facturación anterior.
SDK de los proveedores
La mayoría de las bibliotecas cliente oficiales aceptan una URL base personalizada, así que también funcionan con los hosts compatibles: los clientes de Google Maps Services (googlemaps para Python, @googlemaps/google-maps-services-js), los SDK de Mapbox (opción origin), los clientes REST de HERE, las bibliotecas de ipinfo y los wrappers de Nominatim como geopy (domain=). Apúntalos al host de la tabla y pasa tu clave de My Geocode donde iba la clave del proveedor.
Un proveedor que no aparece en la lista
Añadir un host lleva unos días de trabajo cuando el formato del proveedor está documentado. Si usas un servicio que no está aquí, dinos cuál y aproximadamente cuántas solicitudes envías al día. Todas las incorporaciones recientes fueron peticiones de usuarios.