Guías

Calcula la distancia entre dos puntos geocodificados

La distancia entre dos direcciones no es algo que una API de geocodificación devuelva directamente, ya que para calcular una distancia solo hacen falta coordenadas, y el endpoint directo ya te las da para cualquier dirección que le envíes.

Obtener las coordenadas de ambas direcciones

Geocodifica cada dirección por separado, o ambas juntas en una sola solicitud masiva, para obtener un par de latitud y longitud para cada una.

POST /v1/forward
Content-Type: application/json

["221B Baker Street, London", "10 Downing Street, London"]
{
  "status": "ok",
  "results": [
    {"formatted": "221B Baker Street, London, UK", "lat": 51.5237, "lon": -0.1585, "type": "address", "precision": "house", "confidence": 0.95, "place_id": "abc123", "components": {}},
    {"formatted": "10 Downing Street, London, UK", "lat": 51.5033, "lon": -0.1276, "type": "address", "precision": "house", "confidence": 0.96, "place_id": "op678", "components": {}}
  ]
}

Calcular la distancia

Con los dos pares de coordenadas en la mano, aplica la fórmula estándar de haversine, que convierte la diferencia de latitud y longitud en una distancia en línea recta sobre la superficie de la Tierra. La mayoría de los lenguajes de programación tienen disponible una implementación de haversine pequeña y bien probada, ya sea como una función corta o en una biblioteca de uso común, así que no hace falta escribir la trigonometría desde cero.

distance_km = haversine(51.5237, -0.1585, 51.5033, -0.1276)

Un error habitual que debes evitar

La fórmula de haversine espera la latitud y la longitud en radianes, pero las coordenadas de una respuesta de la API siempre están en grados. Introducir valores en grados directamente en una fórmula escrita para radianes producirá una distancia que a primera vista parece plausible, pero que está equivocada por un factor considerable sin que se note. Convierte primero los grados a radianes, o usa una función de biblioteca que documente qué unidad espera, y comprueba el resultado con una distancia que ya conozcas antes de confiar en él en producción.

Un segundo ejemplo: la longitud total de una ruta con varias paradas

El mismo cálculo se extiende de forma natural a más de dos puntos. Geocodifica todas las paradas de una ruta en una sola solicitud masiva y luego suma la distancia de haversine entre cada par consecutivo de coordenadas para obtener una longitud total aproximada de la ruta, útil para estimar rápidamente una ruta de reparto incluso antes de tener implantado un cálculo de rutas real paso a paso.

total_km = haversine(a, b) + haversine(b, c) + haversine(c, d)

Distancia en línea recta frente a distancia de recorrido

Un cálculo de haversine da la distancia en línea recta, no la distancia en coche o a pie por carreteras reales. Para la mayoría de los usos, como ordenar ubicaciones cercanas o estimar una proximidad aproximada, la distancia en línea recta es suficiente y no necesita nada más que las coordenadas que ya tienes. Si necesitas específicamente la distancia de recorrido por una ruta, se trata de otro tipo de cálculo que queda fuera de lo que ofrece una consulta de geocodificación.

Un caso límite que conviene conocer

Dos puntos situados a lados opuestos del antimeridiano, o muy cerca de un polo, pueden confundir a una fórmula de distancia ingenua que no tenga en cuenta que la longitud salta de 180 a menos 180. Esto es raro en las comprobaciones típicas de distancia entre direcciones, pero conviene probarlo si tu aplicación abarca legítimamente esa parte del planeta.

Coste en solicitudes

Geocodificar dos direcciones cuesta dos solicitudes, tanto si se envían como llamadas separadas como en una sola llamada masiva. El cálculo de la distancia en sí, una vez que tienes ambos pares de coordenadas, se hace por completo en tu propio código y no consume nada más de tu cuota.

Reutilizar coordenadas que ya tienes

Si alguna de las direcciones ya la has geocodificado antes y la tienes en caché, solo la dirección nueva necesita una solicitud, lo que reduce el coste de ese cálculo concreto a una solicitud en lugar de dos.

Los cálculos de distancia están a una solicitud de geocodificación de distancia para cualquier dirección que aún no hayas convertido en coordenadas. Consulta la documentación de geocodificación directa para ver la estructura completa de la respuesta.