De un modelo de crédito a una escalera publicada.
El cambio grande no son los parámetros, es la medición. Google cobra las cargas de mapa por sesión y compensa el consumo contra un crédito mensual; nosotros cobramos teselas y solicitudes, publicadas y sin crédito alrededor del cual modelar.
- Precio por solicitud que puedes calcular antes de la factura
- Teselas facturadas por tesela: suele salir más barato en sesiones largas
- Sin matriz de SKUs: diez servicios, diez tarifas
- Residencia de datos en la UE sin acuerdo empresarial
El cambio
Host y cabecera de autorización. Todo lo de abajo es el mapa de parámetros.
- https://maps.googleapis.com?key=YOUR_KEY
+ https://api.apinavi.com
+ Authorization: Bearer $APINAVI_KEYMapa de parámetros
Geocoding
| Google Maps | ApiNavi | Note |
|---|---|---|
| GET /maps/api/geocode/json?address= | GET /v1/geocode?q= | — |
| GET /maps/api/geocode/json?latlng= | GET /v1/revgeocode?at= | — |
| components=country:DE | in=countryCode:DEU | ISO alpha-3 rather than alpha-2. |
| results[].formatted_address | items[].address.label | — |
| results[].geometry.location | items[].position | lat/lng keys are the same. |
| results[].place_id | items[].id | Identifiers are not interchangeable; re-resolve saved places once. |
Routes & places
| Google Maps | ApiNavi | Note |
|---|---|---|
| POST /directions/v2:computeRoutes | GET /v1/routes | — |
| routes[].legs[].distanceMeters | routes[].sections[].summary.length | — |
| routes[].duration | routes[].sections[].summary.duration | Seconds in both, without the trailing s. |
| POST /places:autocomplete | GET /v1/autosuggest | — |
| GET /maps/api/distancematrix/json | POST /v1/matrix | — |
| Map load (per session) | Tile requests | Metering differs: we bill tiles, not map loads — usually cheaper for long sessions, dearer for one-glance views. |
Dónde no es un cambio directo
Cargas de mapa frente a teselas
Una sesión con mucho desplazamiento y zoom cuesta más aquí; una página con una sola vista fija cuesta menos. La calculadora trae ambos perfiles como plantillas.
Orden de coordenadas
Google devuelve geometry.location como objeto, y nosotros también. Pero nuestra salida GeoJSON pone la longitud primero según la especificación: comprueba la vía que vayas a usar.
Identificadores de lugar
Los valores place_id no se transfieren. Lo que tengas almacenado necesita una resolución única por coordenadas o dirección.
Imágenes a pie de calle
No tenemos equivalente de Street View. Si tu producto se apoya en eso, deja esa pieza donde está.
Cómo suelen hacerlo los equipos
- 01
Sombra
Envía una copia del tráfico de producción a ambos durante una semana. Nada cambia para el usuario.
- 02
Comparación
Compara campo a campo en los endpoints que usas de verdad. La mayoría encuentra dos o tres diferencias reales, no veinte.
- 03
Reparto
Mueve un 5 %, luego un 50 %, vigilando la tasa de error y la latencia por región.
- 04
Corte
Mueve el resto, deja la clave antigua viva dos semanas y después rótala.
Modo de doble ejecución
Apunta un porcentaje del tráfico a los dos proveedores y compara las respuestas. La consola muestra la tasa de discrepancia por campo y endpoint, de modo que el cambio se decide con datos y no con una comprobación puntual.
Marcharse más adelante
Las mismas tablas se leen al revés, y un endpoint de exportación devuelve tus geocercas, estilos y resultados de lotes en formatos abiertos. Una guía de migración que solo apunta hacia dentro es una señal de alarma, no una función.
Lista de comprobación del cambio
- Límites de tasa subidos en la clave nueva antes del reparto, no después
- Tope de gasto fijado para el primer mes completo
- Identificadores de lugar guardados vueltos a resolver, si los almacenas
- Decodificador de polilínea comprobado con una ruta conocida
- Cobertura revisada para los países de la cola larga de tu tráfico
- Clave antigua rotada y eliminada de los secretos