Eso es todo.

Para comenzar a desarrollar, consulta nuestra documentación para desarrolladores.

Activar la Google Maps Directions API

Para que puedas comenzar, te proporcionaremos orientación en la Google Developers Console a fin de que hagas primero algunas acciones:

  1. Crear o seleccionar un proyecto
  2. Activar la Google Maps Directions API
  3. Crear claves correspondientes
Continuar

Guía del desarrollador

Google Maps Directions API es un servicio que calcula indicaciones entre ubicaciones usando una solicitud HTTP.

Este servicio también está disponible como parte de la Google Maps JavaScript API de cliente o para el uso en el servidor con Java Client, Python Client, Go Client y Node.js Client for Google Maps Services. Nota: Se aplican los mismos límites de uso, independientemente de la forma en que uses el servicio. Las solicitudes diarias se calculan como la suma de las consultas de cliente y de servidor.

Este documento está orientado a desarrolladores de sitios web y móviles que quieren calcular datos de indicaciones dentro de mapas proporcionados por una de las Google Maps API. Proporciona una introducción al uso de la API y material de referencia acerca de los parámetros disponibles.

Introducción

Este video ilustra el uso de Google Maps Directions API para ayudar a las personas a encontrar su camino. El video proporciona orientación sobre cómo crear conexiones proxy para el servicio web a través de tu servidor cuando estés usando la API en una aplicación web con el objetivo de proteger tu clave de API.

Con la Directions API, puedes:

  • Buscar indicaciones para diferentes medios de transporte, incluidos el transporte público o particular y el desplazamiento a pie o en bicicleta.
  • Mostrar indicaciones en varias partes usando una serie de waypoints.
  • Especificar orígenes, destinos y waypoints como strings de texto (p. ej., “Chicago, IL” o “Darwin, NT, Australia”), como coordenadas de latitud y longitud o ID de sitios.

El cálculo de indicaciones es una tarea que consume tiempo y recursos. Siempre que sea posible, calcula direcciones conocidas con anticipación (usando el servicio que se describe aquí) y guarda tus resultados en un caché temporal de tu propio diseño.

Nota: Este servicio no está diseñado para responder a las entradas del usuario en tiempo real. Para el cálculo de indicaciones dinámicas (por ejemplo, dentro de un elemento de la interfaz de usuario), consulta la documentación para el Servicio de indicaciones de la Google Maps JavaScript API.

Antes de comenzar a realizar desarrollos con la Directions API, revisa los requisitos de autenticación (necesitas una clave de API) y los límites de uso de la API.

Solicitudes de indicaciones

Una solicitud de Google Maps Directions API debe respetar la siguiente forma:

https://maps.googleapis.com/maps/api/directions/outputFormat?parameters

donde outputFormat puede ser cualquiera de los siguientes valores:

  • json (recomendado) indica el formato de salida en JavaScript Object Notation (JSON).
  • xml indica el formato de salida como XML.

Nota: Las URL deben estar correctamente codificadas para ser válidas y tienen una limitación de 8192 caracteres para todos los servicios web. Debes tener en cuenta este límite cuando construyas tus URL.

HTTPS o HTTP

La seguridad es importante y se recomienda usar HTTPS, siempre que sea posible, especialmente para aplicaciones que incluyen en las solicitudes datos confidenciales de los usuarios, como la ubicación. El uso de encriptación HTTPS aporta más seguridad a tu aplicación y la hace más resistente contra las intromisiones o la manipulación.

Si no es posible usar HTTPS, usa lo siguiente para acceder a la Google Maps Directions API a través de HTTP:

http://maps.googleapis.com/maps/api/directions/outputFormat?parameters

Parámetros de la solicitud

Algunos parámetros son obligatorios y otros opcionales. Como es norma en las direcciones URL, todos los parámetros se separan con el carácter de Y comercial (&). A continuación, se proporciona una lista de los parámetros y sus posibles valores.

Parámetros obligatorios

  • origin: la dirección, el valor de latitud/longitud textual o el id. de sitio desde el que quieres calcular las indicaciones.
    • Si pasas una dirección, el servicio de indicaciones geocodifica la string y la convierte en una coordenada de latitud y longitud para calcular las indicaciones. Esa coordenada puede ser diferente de la que devuelve la Google Maps Geocoding API; por ejemplo, el ingreso a un edificio en lugar de su parte central.
      origin=24+Sussex+Drive+Ottawa+ON
    • Si pasas coordenadas, estas se usan sin modificaciones para calcular las indicaciones. Asegúrate de que no haya espacios entre los valores de latitud y longitud.
      origin=41.43206,-81.38992
    • Los id. de sitio deben contener el prefijo place_id:. El id. de sitio solo se puede especificar si la solicitud incluye una clave de API o un id. de cliente de Google Maps APIs Premium Plan. Puedes obtener ID de sitios de la Google Maps Geocoding API y la Google Places API (incluido el autocompletado de sitios). Para hallar un ejemplo en el que se usen los id. de sitio del servicio de autocompletado de sitios, consulta Autocompletado de sitios e indicaciones. Para obtener más información sobre los id. de sitio, consulta la información general sobre id. de sitio.
      origin=place_id:ChIJ3S-JXmauEmsRUcIaWtf4MzE
  • destination: la dirección, el valor de latitud/longitud textual o el id. de sitio hasta el que quieres calcular las indicaciones. Las opciones para el parámetro destination son las mismas que para el parámetro origin antes descritos.
  • key: la clave de API de tu aplicación. Esta clave identifica tu aplicación a los fines de la administración de la cuota. Infórmate acerca de cómo obtener una clave.

    Nota: Los clientes de Google Maps APIs Premium Plan pueden usar una clave de API, o una firma digital y un ID de cliente válidos, en tus solicitudes de Directions. Obtén más información sobre parámetros de autenticación para clientes del Premium Plan.

Parámetros opcionales

  • mode (el valor predeterminado es driving): especifica el medio de transporte que se debe usar para calcular indicaciones. A continuación, en Medios de transporte se especifican valores válidos y otros detalles de la solicitud.
  • waypoints: especifica una matriz de waypoints. Los waypoints modifican un trayecto haciendo que pase por las ubicaciones especificadas. Un waypoint se especifica como una coordenada de latitud y longitud, una polilínea codificada, un ID de sitio o una dirección que se geocodificará. Las polilíneas codificadas deben contener el prefijo enc: e ir seguidas de dos puntos (:). Los id. de sitio deben contener el prefijo place_id:. El id. de sitio solo se puede especificar si la solicitud incluye una clave de API o un id. de cliente de Google Maps APIs Premium Plan. Los waypoints solo se admiten para indicaciones de manejo o desplazamiento a pie y en bicicleta. Para obtener más información sobre waypoints, consulta la guía sobre waypoints a continuación.
  • alternatives: cuando se fija en el valor true, especifica que el servicio de indicaciones puede proporcionar más de una ruta alternativa en la respuesta. Ten en cuenta que proporcionar rutas alternativas puede aumentar el tiempo de respuesta desde el servidor.
  • avoid: indica que las rutas calculadas deben evitar las características indicadas. Este parámetro admite los siguientes argumentos:
    • tolls indica que la ruta calculada debe evitar calles y puentes con estaciones de peaje.
    • highways indica que la ruta calculada debe evitar autopistas.
    • ferries indica que la ruta calculada debe evitar transbordadores (ferry).
    • indoor indica que la ruta calculada debe evitar recorridos bajo techo en las indicaciones para desplazamiento a pie y transporte. Solo las solicitudes que incluyan una clave de API o un id. de cliente de Google Maps APIs Premium Plan recibirán recorridos bajo techo de forma predeterminada.
    Para obtener más información, consulta Restricciones de ruta a continuación.
  • language: el idioma en el que se devolverán los resultados.
    • Consulta la lista de idiomas admitidos. Google actualiza con frecuencia los idiomas admitidos, por lo que es posible que esta lista no sea completa.
    • Si no se indica el parámetro language, la API intenta usar el idioma preferido especificado en el encabezado Accept-Language o el idioma nativo del dominio desde el que se envió la solicitud.
    • La API hace todo lo posible por proporcionar una dirección que sea legible tanto para el usuario como para la gente local. Para alcanzar este objetivo, muestra las direcciones en el idioma local transliterada en una secuencia de comandos legible para el usuario, si es necesario, que respete el idioma preferido. Todas las demás direcciones se muestran en el idioma preferido. Los componentes de la dirección se muestran en el mismo idioma, que se selecciona a partir del primer componente.
    • Si un nombre no está disponible en el idioma preferido, la API usa la coincidencia más cercana.
    • El idioma preferido tiene poco efecto en el conjunto de resultados que la API selecciona para mostrar y el orden en el que se muestran. El geocodificador interpreta las abreviaturas de forma diferente según el idioma, como las abreviaturas para tipos de calle o sinónimos que pueden ser válidos en un idioma pero no en otro. Por ejemplo, utca y tér son sinónimos de “calle” en húngaro.
  • units: especifica el sistema de unidades que se usará al mostrar los resultados. En Sistemas de unidades, a continuación, se especifican valores válidos
  • region: especifica el código de región, establecido como un valor ccTLD (“dominio de nivel superior”) de dos caracteres. (Para obtener más información, consulta Restricción por región a continuación).
  • arrival_time: especifica la hora deseada de llegada para indicaciones de transporte, expresada en segundos a partir de la medianoche, UTC, del 1 de enero de 1970. Puedes especificar departure_time o arrival_time, pero no ambos. Ten en cuenta que arrival_time se debe especificar como un número entero.
  • departure_time: especifica la hora deseada de partida. Puedes especificar la hora como un número entero en segundos a partir de la medianoche, UTC, del 1 de enero de 1970. También puedes especificar un valor de now, que fija la hora de partida en la hora actual (ajustada al segundo más cercano). La hora de partida se puede especificar en dos casos:
    • Para solicitudes en las que el modo de desplazamiento es transporte: También puedes especificar departure_time o arrival_time. Si no especificas ninguno, departure_time adoptará, de forma predeterminada, el valor de “now” (es decir, la hora de partida se establece en la hora actual).
    • Para solicitudes en las que el medio de transporte es manejo: Puedes especificar departure_time para recibir una ruta y la duración del viaje (campo de respuesta: duration_in_traffic), que considera las condiciones del tráfico. Esta opción solo está disponible si la solicitud contiene una clave de API válida, o un id. de cliente de Google Maps APIs Premium Plan y una firma. El valor de departure_time se debe establecer en la hora actual o en alguna hora futura. No puede ser un horario pasado.
  • traffic_model (el valor predeterminado es best_guess): especifica las suposiciones que deben aplicarse al calcular el tiempo con tráfico. Esta configuración afecta el valor devuelto en el campo duration_in_traffic en la respuesta, que contiene el tiempo previsto en el tráfico según promedios históricos. El parámetro traffic_model solo se puede especificar para indicaciones de manejo en cuya solicitud se incluya departure_time, y solo si también se incluye una clave de API o un ID de cliente del Google Maps APIs Premium Plan. Los valores disponibles para este parámetro son los siguientes:
    • best_guess (predeterminado) indica que el valor duration_in_traffic devuelto debe ser el mejor cálculo en términos de tiempo de viaje a partir de lo que se conoce sobre las condiciones históricas del tráfico y el tráfico en tiempo real. El tráfico en tiempo real cobra importancia a medida que el valor departure_time se acerca a la hora actual.
    • pessimistic indica que el valor duration_in_traffic devuelto debe ser superior al tiempo de viaje real en la mayoría de los días. Sin embargo, este valor puede ser inferior al tiempo de viaje real en ciertos días en que las condiciones de tráfico son particularmente desfavorables.
    • optimistic indica que el valor duration_in_traffic devuelto debe ser inferior al del tiempo de viaje real en la mayoría de los días. Sin embargo, este valor puede ser superior al tiempo de viaje real en ciertos días en que las condiciones de tráfico son particularmente favorables.
    El valor predeterminado de best_guess proporcionará las predicciones más útiles para la mayoría de los casos de uso. La predicción del tiempo de viaje de best_guess puede ser más corta que optimistic, o más larga que pessimistic, debido a la manera en que el modelo de predicción best_guess integra información sobre el tráfico en tiempo real.
  • transit_mode: especifica uno o más medios de transporte. Este parámetro solo se puede especificar para indicaciones de transporte, y solo si la solicitud incluye una clave de API o un ID de cliente del Google Maps APIs Premium Plan. Este parámetro admite los siguientes argumentos:
    • bus indica que para la ruta calculada debe priorizarse el transporte en autobús.
    • subway indica que para la ruta calculada debe priorizarse el transporte en subterráneo.
    • train indica que para la ruta calculada debe priorizarse el transporte en tren.
    • tram indica que para la ruta calculada debe priorizarse el transporte en tranvía y tren ligero.
    • rail indica que para la ruta calculada debe priorizarse el transporte en tren, tranvía, tren ligero y subterráneo. Esto equivale a transit_mode=train|tram|subway.
  • transit_routing_preference: especifica preferencias para rutas de transporte. Con este parámetro, puedes restringir las opciones mostradas en lugar de aceptar la mejor ruta predeterminada seleccionada por la API. Este parámetro solo se puede especificar para indicaciones de transporte, y solo si la solicitud incluye una clave de API o un ID de cliente del Google Maps APIs Premium Plan. Este parámetro admite los siguientes argumentos:
    • less_walking indica que para la ruta calculada se deben incluir traslados a pie limitados.
    • fewer_transfers indica que para la ruta calculada se debe incluir una cantidad limitada de transbordos.

Ejemplos de solicitudes de indicaciones

La siguiente solicitud devuelve indicaciones de manejo desde Toronto, Ontario hasta Montreal, Québec.

https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=YOUR_API_KEY

Al cambiar los parámetros mode y avoid, se puede modificar la solicitud inicial para que devuelva direcciones para un recorrido pintoresco en bicicleta que evite las rutas principales.

https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&avoid=highways&mode=bicycling&key=YOUR_API_KEY

La siguiente solicitud busca indicaciones de transporte desde Brooklyn, New York hasta Queens, New York. La solicitud no especifica un departure_time, por lo que a la hora de partida se le asignará el valor predeterminado de la hora actual:

https://maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destination=Queens&mode=transit&key=YOUR_API_KEY

La siguiente solicitud incluye una hora de partida específica.

Nota: En este ejemplo, la hora de partida se especifica como 30 de julio de 2012 a las 09:45 a.m. Para evitar un error, antes de enviar la solicitud debes cambiar el parámetro a una hora en el futuro.

https://maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destination=Queens&departure_time=1343641500&mode=transit&key=YOUR_API_KEY

La siguiente solicitud devuelve indicaciones de manejo desde Glasgow, RU hasta Perth, RU, usando id. de sitio.

https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJ685WIFYViEgRHlHvBbiD5nE&destination=place_id:ChIJA01I-8YVhkgRGJb0fW4UX7Y&key=YOUR_API_KEY

Modos de viaje

Cuando calculas indicaciones, debes especificar el medio de transporte (mode) que usarás. De forma predeterminada, las indicaciones se calculan como indicaciones de manejo (driving). Se admiten los siguientes medios de transporte:

  • driving (predeterminado) indica indicaciones de manejo estándar usando la red de carreteras.
  • walking solicita indicaciones de traslado a pie por sendas peatonales y veredas (cuando estén disponibles).
  • bicycling solicita indicaciones para el traslado en bicicleta por ciclovías y calles preferidas (cuando estén disponibles).
  • transit solicita indicaciones por rutas de transporte público (cuando estén disponibles). Si configuraste el medio en transit, también puedes especificar un departure_time o un arrival_time. Si no especificas ninguno, departure_time adoptará, de forma predeterminada, el valor de “now” (es decir, la hora de partida se establece en la hora actual). También puedes incluir un transit_mode o una transit_routing_preference.

Nota: Es posible que en las indicaciones de traslado a pie y en bicicleta no se incluyan sendas peatonales o ciclovías claras; por lo tanto, para estas indicaciones se devolverán warnings que debes mostrar al usuario.

Waypoints

Al calcular rutas usando la Google Maps Directions API, también puedes especificar waypoints para indicaciones de manejo y desplazamiento a pie o en bicicleta. No se admiten waypoints para indicaciones de transporte. Puedes usar waypoints para calcular rutas por ubicaciones adicionales, en cuyo caso la ruta que se muestra incluye paradas en cada uno de los waypoints proporcionados.

Especifica los waypoints en el parámetro waypoints.

  • Puedes proporcionar una o más ubicaciones separadas por el carácter de barra vertical (|), en forma de dirección, coordenadas de latitud y longitud o un ID de sitio:
    • Si pasas una dirección, el servicio de indicaciones geocodifica la string y la convierte en una coordenada de latitud y longitud para calcular las indicaciones. Esa coordenada puede ser diferente de la que devuelve la Google Maps Geocoding API; por ejemplo, el ingreso a un edificio en lugar de su parte central.
    • Si pasas coordenadas de latitud y longitud, se usarán sin modificaciones para calcular indicaciones. Asegúrate de que no haya espacios entre los valores de latitud y longitud.
    • Si proporcionas un ID de sitio, debes agregarle el prefijo place_id:. Solo puedes especificar un ID de sitio si la solicitud incluye una clave de API o un ID de cliente de Google Maps APIs Premium Plan. Puedes obtener ID de sitios de la Google Maps Geocoding API y la Google Places API (incluido el autocompletado de sitios). Para hallar un ejemplo en el que se usen los id. de sitio del servicio de autocompletado de sitios, consulta Autocompletado de sitios e indicaciones. Para obtener más información sobre los id. de sitio, consulta la información general sobre id. de sitio.
  • También puedes proporcionar un conjunto codificado de coordenadas usando el algoritmo de polilíneas codificadas. Esto es particularmente útil si tienes una gran cantidad de waypoints, ya que la URL es notablemente más corta cuando se usa una polilínea codificada.
    • Las polilíneas codificadas deben contener el prefijo enc: e ir seguidas de dos puntos (:). Por ejemplo: origins=enc:gfo}EtohhU:
    • También puedes incluir varias polilíneas codificadas separadas por el carácter de barra vertical (|). Por ejemplo: waypoints=via:enc:wc~oAwquwMdlTxiKtqLyiK:|enc:c~vnAamswMvlTor@tjGi}L:|via:enc:udymA{~bxM:

La siguiente URL inicia una solicitud de indicaciones para una ruta entre Boston, MA y Concord, MA, con paradas en Charlestown y Lexington, en este orden:

https://maps.googleapis.com/maps/api/directions/json?origin=Boston,MA&destination=Concord,MA&waypoints=Charlestown,MA|Lexington,MA&key=YOUR_API_KEY

Para cada waypoint en la solicitud, la respuesta para las indicaciones incluye una entrada adicional en la matriz legs para proporcionar los detalles correspondientes a ese tramo del recorrido.

Si quieres alterar la ruta usando waypoints sin agregar una parada, al waypoint agrégale el prefijo via:. Los waypoints con el prefijo via: no agregarán una entrada a la matriz legs, sino que, en su lugar, direccionarán el trayecto por el waypoint proporcionado.

La siguiente dirección URL modifica la solicitud anterior de modo que el trayecto se direccione por Lexington sin paradas:

https://maps.googleapis.com/maps/api/directions/json?origin=Boston,MA&destination=Concord,MA&waypoints=Charlestown,MA|via:Lexington,MA&key=YOUR_API_KEY

El prefijo via: es más eficaz cuando se crean rutas en respuesta a que el usuario arrastra los waypoints en el mapa. Al hacer esto, el usuario puede ver cómo se verá la ruta final en tiempo real y lo ayuda a asegurarse de que los waypoints estén ubicados en sitios accesibles para laGoogle Maps Directions API.

La siguiente URL solicita waypoints usando coordenadas de latitud y longitud:

https://maps.googleapis.com/maps/api/directions/json?origin=sydney,au&destination=perth,au&waypoints=via:-37.81223%2C144.96254%7Cvia:-34.92788%2C138.60008&key=YOUR_API_KEY

Aquí te mostramos la misma solicitud, con una polilínea codificada:

https://maps.googleapis.com/maps/api/directions/json?origin=sydney,au&destination=perth,au&waypoints=via:enc:lexeF{~wsZejrPjtye@:&key=YOUR_API_KEY

Optimiza tus waypoints

De forma predeterminada, el servicio de indicaciones calcula una ruta a través de los waypoints proporcionados en su respectivo orden. Como alternativa, puedes pasar optimize:true como el primer argumento dentro del parámetro waypoints para permitir que el servicio de indicaciones optimice la ruta proporcionada reorganizando los waypoints de manera más eficaz. (Esta optimización es una aplicación del problema del viajante). El tiempo de viaje es el factor principal que se optimiza, pero también se pueden considerar otros factores, como la distancia, la cantidad de giros y muchos más para decidir la ruta más eficiente. Todos los waypoints deben ser stopovers para que el servicio de indicaciones optimice su ruta.

Si le indicas al servicio indicaciones que optimice el orden de sus waypoints, ese orden se devolverá en el campo waypoint_order dentro del objeto routes. El campo waypoint_order devuelve valores a partir de cero.

El siguiente ejemplo calcula la ruta desde Adelaida, Australia del Sur, hasta cada una de las principales regiones vitivinícolas de Australia el Sur usando la optimización de rutas.

https://maps.googleapis.com/maps/api/directions/json?origin=Adelaide,SA&destination=Adelaide,SA&waypoints=optimize:true|Barossa+Valley,SA|Clare,SA|Connawarra,SA|McLaren+Vale,SA&key=YOUR_API_KEY

La inspección de la ruta calculada indicará que la ruta se calculó usando el siguiente orden de waypoints:

"waypoint_order": [ 1, 0, 2, 3 ]

Restricciones

Pueden calcularse indicaciones de modo que se ajusten a ciertas restricciones. Las restricciones se indican mediante el uso del parámetro avoid y un argumento para ese parámetro que indique la restricción que se debe evitar. Se admiten las siguientes restricciones:

  • avoid=tolls
  • avoid=highways
  • avoid=ferries

Es posible solicitar una ruta que evite cualquier combinación de peajes, autopistas y transbordadores al pasar ambas restricciones al parámetro “avoid”. Por ejemplo: avoid=tolls|highways|ferries.

Nota: la adición de restricciones no excluye rutas que incluyen la característica restringida; simplemente inclina el resultado a rutas más favorables.

Sistemas de unidades

Los resultados de las indicaciones contienen text dentro de campos distance que se le pueden mostrar al usuario para indicar la distancia de un “tramo” específico de la ruta. De forma predeterminada, ese texto usa el sistema de unidades del país o la región de origen.

Por ejemplo, para una ruta de “Chicago, IL” a “Toronto, ONT” los resultados se mostrarán en millas, mientras que para la ruta inversa se mostrarán en kilómetros. Puedes invalidar este sistema de unidades configurando uno explícitamente en el parámetro units de la solicitud y pasando uno de los siguientes valores:

  • metric especifica el uso del sistema métrico. Las distancias textuales se devuelven en kilómetros y metros.
  • imperial especifica el uso del sistema imperial (inglés). Las distancias textuales se devuelven en millas y pies.

Nota: esta configuración del sistema de unidades solo tiene efecto sobre el text que se muestra en los campos distance. Los campos distance también contienen values que siempre se expresan en metros.

Restricción por región

También puedes configurar el servicio de indicaciones para que devuelva resultados restringidos a una región en particular usando el parámetro region. Este parámetro toma un argumento ccTLD (dominio de nivel superior de código de país) que especifica la restricción por región. La mayoría de los códigos ccTLD son idénticos a los códigos ISO 3166-1, con algunas excepciones notables. Por ejemplo, el código ccTLD para el Reino Unido es "uk" (.co.uk) mientras que su código ISO 3166-1 es "gb" (técnicamente para la entidad de «Reino Unido de Gran Bretaña e Irlanda del Norte").

Puedes usar cualquier dominio en el cual la aplicación principal de Google Maps ofrezca indicaciones de manejo.

Por ejemplo, una solicitud de manejo desde "Toledo" hasta "Madrid" devuelve un resultado cuando region está configurado en es, ya que "Toledo" se interpreta como la ciudad española:

https://maps.googleapis.com/maps/api/directions/json?origin=Toledo&destination=Madrid&region=es&key=YOUR_API_KEY

{
  "status": "OK",
  "routes": [ {
    "summary": "AP-41",
    "legs": [ {
        ...
    } ],
    "copyrights": "Map data ©2010 Europa Technologies, Tele Atlas",
    "warnings": [ ],
    "waypoint_order": [ ]
  } ]
}

Las solicitudes de indicaciones de "Toledo" a "Madrid" enviadas sin el parámetro region no devolverán resultados, ya que "Toledo" se interpreta como la ciudad de Ohio:

https://maps.googleapis.com/maps/api/directions/json?origin=Toledo&destination=Madrid&key=YOUR_API_KEY

{
  "status": "ZERO_RESULTS",
  "routes": [ ]
}

Respuestas a solicitudes de indicaciones

Las respuestas a las solicitudes de indicaciones se devuelven en el formato indicado por el marcador output en la ruta de acceso de la dirección URL de la solicitud.

Ejemplos de respuesta

A continuación se muestra un ejemplo de respuesta HTTP en el que se calcula la ruta desde Chicago, IL, hasta Los Angeles, CA, a través de dos waypoints en Joplin, MO, y Oklahoma City, OK.

https://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los+Angeles,CA&waypoints=Joplin,MO|Oklahoma+City,OK&key=YOUR_API_KEY

El ejemplo anterior solicita el formato de salida JSON. También es posible solicitar el formato de salida XML. Haz clic en las pestañas a continuación para ver las respuestas JSON y XML de ejemplo.

Dado que los resultados de las indicaciones pueden ser bastante detallados, se omitieron los elementos repetidos en las respuestas para proporcionar mayor claridad.

JSON
{
  "status": "OK",
  "geocoded_waypoints" : [
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ7cv00DwsDogRAMDACa2m4K8",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJ69Pk6jdlyIcRDqM1KDY3Fpg",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJgdL4flSKrYcRnTpP0XQSojM",
        "types" : [ "locality", "political" ]
     },
     {
        "geocoder_status" : "OK",
        "place_id" : "ChIJE9on3F3HwoAR9AhGJW_fL-I",
        "types" : [ "locality", "political" ]
     }
  ],
  "routes": [ {
    "summary": "I-40 W",
    "legs": [ {
      "steps": [ {
        "travel_mode": "DRIVING",
        "start_location": {
          "lat": 41.8507300,
          "lng": -87.6512600
        },
        "end_location": {
          "lat": 41.8525800,
          "lng": -87.6514100
        },
        "polyline": {
          "points": "a~l~Fjk~uOwHJy@P"
        },
        "duration": {
          "value": 19,
          "text": "1 min"
        },
        "html_instructions": "Head \u003cb\u003enorth\u003c/b\u003e on \u003cb\u003eS Morgan St\u003c/b\u003e toward \u003cb\u003eW Cermak Rd\u003c/b\u003e",
        "distance": {
          "value": 207,
          "text": "0.1 mi"
        }
      },
      ...
      ... additional steps of this leg
    ...
    ... additional legs of this route
      "duration": {
        "value": 74384,
        "text": "20 hours 40 mins"
      },
      "distance": {
        "value": 2137146,
        "text": "1,328 mi"
      },
      "start_location": {
        "lat": 35.4675602,
        "lng": -97.5164276
      },
      "end_location": {
        "lat": 34.0522342,
        "lng": -118.2436849
      },
      "start_address": "Oklahoma City, OK, USA",
      "end_address": "Los Angeles, CA, USA"
    } ],
    "copyrights": "Map data ©2010 Google, Sanborn",
    "overview_polyline": {
      "points": "a~l~Fjk~uOnzh@vlbBtc~@tsE`vnApw{A`dw@~w\\|tNtqf@l{Yd_Fblh@rxo@b}@xxSfytAblk@xxaBeJxlcBb~t@zbh@jc|Bx}C`rv@rw|@rlhA~dVzeo@vrSnc}Axf]fjz@xfFbw~@dz{A~d{A|zOxbrBbdUvpo@`cFp~xBc`Hk@nurDznmFfwMbwz@bbl@lq~@loPpxq@bw_@v|{CbtY~jGqeMb{iF|n\\~mbDzeVh_Wr|Efc\\x`Ij{kE}mAb~uF{cNd}xBjp]fulBiwJpgg@|kHntyArpb@bijCk_Kv~eGyqTj_|@`uV`k|DcsNdwxAott@r}q@_gc@nu`CnvHx`k@dse@j|p@zpiAp|gEicy@`omFvaErfo@igQxnlApqGze~AsyRzrjAb__@ftyB}pIlo_BflmA~yQftNboWzoAlzp@mz`@|}_@fda@jakEitAn{fB_a]lexClshBtmqAdmY_hLxiZd~XtaBndgC"
    },
    "warnings": [ ],
    "waypoint_order": [ 0, 1 ],
    "bounds": {
      "southwest": {
        "lat": 34.0523600,
        "lng": -118.2435600
      },
      "northeast": {
        "lat": 41.8781100,
        "lng": -87.6297900
      }
    }
  } ]
}

Generalmente, para la búsqueda de indicaciones se devuelve solo una entrada en la matriz routes, aunque el servicio de indicaciones puede devolver varias rutas si le pasas alternatives=true.

Ten en cuenta que estos resultados generalmente se deben analizar si quieres extraer valores de ellos. El análisis de JSON es relativamente fácil. Consulta Análisis de JSON para obtener información sobre algunos de los patrones de diseño recomendados.

XML
<DirectionsResponse>
 <status>OK</status>
 <geocoded_waypoint>
  <geocoder_status>OK</geocoder_status>
  <type>locality</type>
  <type>political</type>
  <place_id>ChIJ7cv00DwsDogRAMDACa2m4K8</place_id>
 </geocoded_waypoint>
 <geocoded_waypoint>
  <geocoder_status>OK</geocoder_status>
  <type>locality</type>
  <type>political</type>
  <place_id>ChIJ69Pk6jdlyIcRDqM1KDY3Fpg</place_id>
 </geocoded_waypoint>
 <geocoded_waypoint>
  <geocoder_status>OK</geocoder_status>
  <type>locality</type>
  <type>political</type>
  <place_id>ChIJgdL4flSKrYcRnTpP0XQSojM</place_id>
 </geocoded_waypoint>
 <geocoded_waypoint>
  <geocoder_status>OK</geocoder_status>
  <type>locality</type>
  <type>political</type>
  <place_id>ChIJE9on3F3HwoAR9AhGJW_fL-I</place_id>
 </geocoded_waypoint>
 <route>
  <summary>I-40 W</summary>
  <leg>
   <step>
    <travel_mode>DRIVING</travel_mode>
    <start_location>
     <lat>41.8507300</lat>
     <lng>-87.6512600</lng>
    </start_location>
    <end_location>
     <lat>41.8525800</lat>
     <lng>-87.6514100</lng>
    </end_location>
    <polyline>
     <points>a~l~Fjk~uOwHJy@P</points>
    </polyline>
    <duration>
     <value>19</value>
     <text>1 min</text>
    </duration>
    <html_instructions>Head <b>north</b> on <b>S Morgan St</b> toward <b>W Cermak Rd</b></html_instructions>
    <distance>
     <value>207</value>
     <text>0.1 mi</text>
    </distance>
   </step>
   ...
   ... additional steps of this leg
  ...
  ... additional legs of this route
   <duration>
    <value>74384</value>
    <text>20 hours 40 mins</text>
   </duration>
   <distance>
    <value>2137146</value>
    <text>1,328 mi</text>
   </distance>
   <start_location>
    <lat>35.4675602</lat>
    <lng>-97.5164276</lng>
   </start_location>
   <end_location>
    <lat>34.0522342</lat>
    <lng>-118.2436849</lng>
   </end_location>
   <start_address>Oklahoma City, OK, USA</start_address>
   <end_address>Los Angeles, CA, USA</end_address>
  <copyrights>Map data ©2010 Google, Sanborn</copyrights>
  <overview_polyline>
   <points>a~l~Fjk~uOnzh@vlbBtc~@tsE`vnApw{A`dw@~w\|tNtqf@l{Yd_Fblh@rxo@b}@xxSfytAblk@xxaBeJxlcBb~t@zbh@jc|Bx}C`rv@rw|@rlhA~dVzeo@vrSnc}Axf]fjz@xfFbw~@dz{A~d{A|zOxbrBbdUvpo@`cFp~xBc`Hk@nurDznmFfwMbwz@bbl@lq~@loPpxq@bw_@v|{CbtY~jGqeMb{iF|n\~mbDzeVh_Wr|Efc\x`Ij{kE}mAb~uF{cNd}xBjp]fulBiwJpgg@|kHntyArpb@bijCk_Kv~eGyqTj_|@`uV`k|DcsNdwxAott@r}q@_gc@nu`CnvHx`k@dse@j|p@zpiAp|gEicy@`omFvaErfo@igQxnlApqGze~AsyRzrjAb__@ftyB}pIlo_BflmA~yQftNboWzoAlzp@mz`@|}_@fda@jakEitAn{fB_a]lexClshBtmqAdmY_hLxiZd~XtaBndgC</points>
  </overview_polyline>
  <waypoint_index>0</waypoint_index>
  <waypoint_index>1</waypoint_index>
  <bounds>
   <southwest>
    <lat>34.0523600</lat>
    <lng>-118.2435600</lng>
   </southwest>
   <northeast>
    <lat>41.8781100</lat>
    <lng>-87.6297900</lng>
   </northeast>
  </bounds>
 </route>
</DirectionsResponse>

Ten en cuenta que una respuesta XML consiste en una <DirectionsResponse> y los siguientes elementos de nivel superior:

  • <status> contiene metadatos sobre la solicitud. Consulta los siguientes Códigos de estado.
  • Un <geocoded_waypoint> por waypoint y origen y destino, con detalles sobre el resultado de su geocodificación. Puede haber elementos <geocoded_waypoint/> vacíos. Consulta Waypoints geocodificados a continuación.
  • Cero o más elementos <route>, cada uno con un conjunto de información sobre la ruta entre el origen y el destino.

Te recomendamos que uses json como marcador de formato de salida preferido, a menos que tu servicio requiera xml por algún motivo. El procesamiento de árboles XML requiere de cierto cuidado, ya que debes hacer referencia a los nodos y elementos adecuados. Consulta Análisis de XML con XPath para obtener información sobre algunos de los patrones de diseño recomendados para el procesamiento del formato de salida.

En el resto de esta documentación se usará sintaxis JSON. En la mayoría de los casos, el formato de salida no tiene importancia para los fines de ilustración de conceptos o nombres de campos en la documentación. No obstante, observa las siguientes diferencias leves:

  • Los resultados XML se agrupan en un elemento raíz <DirectionsResponse>.
  • JSON denota entradas con varios elementos mediante matrices plurales (como steps y legs), mientras XML los denota usando varios elementos en singular (como <step> y <leg>).
  • JSON denota el orden de los waypoints mediante el campo waypoint_order, mientras XML los denota usando elementos <waypoint_index> individuales.
  • Los elementos en blanco se indican mediante matrices vacías en JSON, y mediante la ausencia de un elemento como este en XML. Una respuesta que no genera resultados devolverá una matriz routes vacía en JSON, pero no devolverá elementos <route> en XML, por ejemplo.

Elementos de las respuestas a las solicitudes de indicaciones

Las respuestas a solicitudes de indicaciones contienen los siguientes elementos raíz:

  • status contiene metadatos sobre la solicitud. Consulta los siguientes Códigos de estado.
  • geocoded_waypoints contiene una maatriz con detalles acerca de la geocodificación del origen, el destino y los waypoints. Consulta Waypoints geocodificados a continuación.
  • routes contiene una matriz de rutas desde el origen hasta el destino. Consulta Rutas a continuación. Las rutas consisten en Etapas y Pasos anidados.
  • available_travel_modes contiene una matriz de modos de viaje disponibles. Este campo se muestra cuando en una solicitud se especifica un mode de viaje y no recibe resultados. La matriz contiene los modos de viaje disponibles en los países del conjunto específico de waypoints. Este campo no se muestra si uno o más de los waypoints son via:. Consulta la información detallada a continuación.

Códigos de estado

El campo status en el objeto de la respuesta a la solicitud de indicaciones contiene el estado de la solicitud y podría contener información de depuración para ayudarte a localizar por qué falló el servicio de indicaciones. El campo status puede contener los siguientes valores:

  • OK indica que la respuesta contiene un result válido.
  • NOT_FOUND indica que no se pudo geocodificar al menos a una de las ubicaciones especificadas en el origen, el destino o los waypoints de la solicitud.
  • ZERO_RESULTS indica que no fue posible hallar una ruta entre el origen y el destino.
  • MAX_WAYPOINTS_EXCEEDED indica se proporcionaron demasiados waypoint en la solicitud. Para las aplicaciones que usan la Google Maps Directions API como servicio web o el servicio de indicaciones en la Google Maps JavaScript API, la cantidad máxima permitida de waypoints es de 23, más el origen y el destino. Los clientes del Google Maps APIs Premium Plan pueden enviar solicitudes con hasta 23 waypoints, más el origen y el destino.
  • INVALID_REQUEST indica que la solicitud proporcionada no era válida. Las causas más comunes por las que se produce este estado incluyen un parámetro o valor de paránetro no válido.
  • OVER_QUERY_LIMIT indica que el servicio recibió demasiadas solicitudes desde tu aplicación dentro del período permitido.
  • REQUEST_DENIED indica que el servicio no permitió que tu aplicación usara el servicio de indicaciones.
  • UNKNOWN_ERROR indica que no se pudo procesar una solicitud de indicaciones debido a un error en el servidor. La solicitud puede tener éxito si realizas un nuevo intento.

Mensajes de error

Cuando el código de estado es diferente de OK, podría haber un campo error_message adicional en el objeto de la respuesta a la solicitud de indicaciones. Este campo contiene información más detallada acerca de los motivos que subyacen al código de estado en proporcionado.

Nota: No se garantiza que este campo aparezca siempre, y su contenido está sujeto a modificaciones.

Waypoints geocodificados

Puedes encontrar información detallada acerca de la geocodificación de cada waypoint, como también el origen y el destino, en la matriz (JSON) geocoded_waypoints. Puedes usar esa información para inferir por qué el servicio podría devolver rutas inesperadas o ninguna ruta.

Los elementos de la matriz geocoded_waypoints corresponden, por su posición con base en cero, al origen, a los waypoints en el orden en que se especifican y al destino. Cada elemento incluye los siguientes detalles acerca de la operación de geocodificación para el waypoint correspondiente:

  • geocoder_status indica el código de estado que se genera a partir de la operación de geocodificación. Este campo puede contener los siguientes valores:
    • "OK" indica que no ocurrieron errores, que la dirección se analizó correctamente y que se devolvió al menos un geocódigo.
    • ZERO_RESULTS indica que el geocódigo fue exitoso, pero no devolvió resultados. Esto puede ocurrir si se pasa un valor address inexistente al geocodificador.
  • partial_match indica que el geocodificador no devolvió una coincidencia exacta para la solicitud original, aunque sí pudo establecer una coincidencia parcial para la dirección solicitada. Te recomendamos que examines la solicitud original para comprobar que no haya errores ortográficos y que la dirección no esté incompleta.

    Las coincidencias parciales generalmente ocurren cuando las direcciones que pasaste en la solicitud no existen en la localidad. También se pueden devolver coincidencias parciales cuando una solicitud coincide con dos o más ubicaciones en la misma localidad. Por ejemplo, "21 Henr St, Bristol, UK" devolverá una coincidencia parcial para Henry Street y Henrietta Street. Ten en cuenta que si una solicitud incluye una dirección con un componente que contiene errores ortográficos, el servicio de geocodificación puede sugerir una dirección alternativa. Las sugerencias propuestas de esta manera también se marcarán como una coincidencia parcial.

  • place_id es un identificador único que se puede usar con otras API de Google. Por ejemplo, puedes usar el place_id de una respuesta de autocompletado de sitios de Google para calcular indicaciones hasta un negocio local. Consulta la información general sobre id. de sitio.
  • types indica el tipo de dirección del resultado de geocodificación usado para calcular las indicaciones. Se devuelven los siguientes tipos:
    • street_address indica una dirección exacta.
    • route indica la denominación de una carretera (como "US 101").
    • intersection indica una intersección principal, generalmente de dos calles importantes.
    • political indica una entidad política. Generalmente, este tipo indica un polígono de alguna administración pública.
    • country indica la entidad política nacional, y es generalmente el tipo de orden más alto que devuelve el geocodificador.
    • administrative_area_level_1 indica una entidad civil de primer orden por debajo del nivel de país. En Estados Unidos, estos niveles administrativos son los estados. No todos los países poseen estos niveles administrativos. En la mayoría de los casos, los nombres cortos de administrative_area_level_1 coincidirán considerablemente con las subdivisiones de ISO 3166-2 y otras listas conocidas; sin embargo, no podemos garantizarlo debido a que nuestros resultados de geocodificación están basados en diferentes señales y datos de ubicación.
    • administrative_area_level_2 indica una entidad civil de segundo orden por debajo del nivel de país. En Estados Unidos, estos niveles administrativos son los condados. No todos los países poseen estos niveles administrativos.
    • administrative_area_level_3 indica una entidad civil de tercer orden por debajo del nivel de país. Este tipo indica una división civil inferior. No todos los países poseen estos niveles administrativos.
    • administrative_area_level_4 indica una entidad civil de cuarto orden por debajo del nivel de país. Este tipo indica una división civil inferior. No todos los países poseen estos niveles administrativos.
    • administrative_area_level_5 indica una entidad civil de quinto orden por debajo del nivel de país. Este tipo indica una división civil inferior. No todos los países poseen estos niveles administrativos.
    • colloquial_area indica un nombre alternativo de uso frecuente para la entidad.
    • locality indica una entidad política constituida de una ciudad o un pueblo.
    • ward indica un tipo específico de localidad japonesa para facilitar la distinción entre los múltiples componentes de localidad en una dirección japonesa.
    • sublocality indica una entidad civil de primer orden por debajo de una localidad. Algunas ubicaciones pueden recibir uno de los tipos adicionales: sublocality_level_1 a sublocality_level_5. Cada nivel de sublocalidad es una entidad civil. Los números más altos indican un área geográfica más pequeña.
    • neighborhood indica un barrio determinado.
    • premise indica una ubicación determinada, generalmente un edificio o un conjunto de edificios con un nombre en común.
    • subpremise indica una entidad de primer orden por debajo de una ubicación determinada; generalmente un edificio en particular en un conjunto de edificios con un nombre en común.
    • postal_code indica un código postal tal como se usa para identificar una dirección de correo postal dentro del país.
    • natural_feature indica una atracción natural destacada.
    • airport indica un aeropuerto.
    • park indica un parque determinado.
    • point_of_interest indica un punto de interés determinado. Generalmente, estos "PI" son entidades locales destacadas que no pueden incluirse fácilmente en otra categoría, como el edificio "Empire State" o la "Estatua de la libertad".

    Una lista vacía de tipos indica que no hay tipos conocidos para el componente de dirección específico, por ejemplo, Lieu-dit en Francia.

Estos detalles no estarán presentes para los waypoints especificados como valores textuales de latitud/longitud si el servicio no devuelve resultados. Esto se debe a que a esos waypoints se les aplicó geocodificación inversa únicamente para obtener sus direcciones representativas después de haber encontrado una ruta. Un objeto JSON vacío ocupará los lugares correspondientes en la matriz de geocoded_waypoints.

Rutas

Cuando la Google Maps Directions API devuelve resultados, los coloca en una matriz (JSON) routes. Incluso si el servicio no devuelve resultados (como ocurriría si el origen o el destino no existieran), aún devolverá una matriz routes vacía. (Las respuestas XML consisten en cero o más elementos <route>).

Cada elemento de la matriz routes contiene un solo resultado para el origen y el destino especificados. Esta ruta puede consistir en una o más legs, según se hayan especificado waypoints o no. Además, la ruta también contiene información sobre derechos de autor y advertencias que debe mostrarse al usuario junto con la información de ruta.

Cada ruta dentro del campo routes puede contener los siguientes campos:

  • summary contiene una descripción textual corta de la ruta, que permite denominar la ruta y eliminar ambigüedades respecto de otras alternativas.
  • legs[] posee una matriz que contiene información acerca de una etapa de la ruta, entre dos ubicaciones dentro de la ruta en cuestión. Habrá una etapa separada para cada waypoint o destino especificado. (Una ruta sin waypoints contendrá exactamente una etapa en la matriz legs). Cada etapa consta de una serie de steps. (Consulta Etapas de las indicaciones a continuación).
  • waypoint_order (o <waypoint_index> en XML) contiene una matriz que indica el orden de los waypoints en la ruta calculada. Esos waypoints pueden reordenarse si se le pasó optimize:true a la solicitud dentro de su parámetro waypoints.
  • overview_polyline contiene un único objeto points que tiene una representación de polilínea codificada de la ruta. Esta polilínea es una ruta aproximada (unificada) a partir de las indicaciones resultantes.
  • bounds contiene el cuadro de límite del viewport de overview_polyline.
  • copyrights contiene el texto sobre derechos de autor que debe mostrarse para esta ruta. Debes administrar y mostrar esta información por tu cuenta.
  • warnings[] contiene una matriz de advertencias que deben exhibirse al mostrar estas indicaciones. Debes administrar y mostrar estas advertencias por tu cuenta.
  • fare: Si estuviera presente, contiene los costos totales (es decir, los costos totales de los tickets) para esta ruta. Esta propiedad se devuelve únicamente para solicitudes de transporte y en el caso de rutas, cuando se encuentre disponible información sobre costos para todas las etapas del recorrido. La información incluye lo siguiente:
    • currency: código de moneda ISO 4217 que indica la divisa en la cual se expresa el monto.
    • value: monto total expresado en la moneda antes especificada.
    • text: monto total con formato en el idioma solicitado.

A continuación se proporciona un ejemplo de información de costos para una ruta:

"routes" : [
   {
      "bounds" : {
         "northeast" : {
            "lat" : 37.8079996,
            "lng" : -122.4074334
         },
         "southwest" : {
            "lat" : 37.7881005,
            "lng" : -122.4203553
         }
      },
      "copyrights" : "Map data ©2015 Google",
      "fare" : {
         "currency" : "USD",
         "value" : 6
         "text" : "$6.00"
      },
      ...
   }]

Etapas

Cada elemento de la matriz legs especifica una etapa individual del trayecto desde el origen hasta el destino en la ruta calculada. Las rutas que no contienen waypoints consisten en una única “etapa”, pero aquellas en las que se definen uno o más waypoints consisten en una o más etapas, correspondientes a las etapas específicas del viaje.

Cada etapa dentro de los campos legs pueden contener los siguientes campos:

  • steps[] contiene una matriz de etapas que proporcionan información sobre cada paso individual de la etapa del viaje. (Consulta Pasos de las indicaciones a continuación).
  • distance indica la distancia total cubierta por esta etapa como un campo con los siguientes elementos:

    • value indica la distancia en metros.
    • text contiene una representación de la distancia en lenguaje natural, que se muestra en unidades tal como se usa en el origen (o como se la haya anulado en el parámetro units de la solicitud). (Por ejemplo, se usarán millas y pies para cualquier origen dentro de Estados Unidos). Ten en cuenta que el campo distance.value siempre contiene un valor expresado en metros, independientemente del sistema de unidades que se muestre como texto.

    Estos campos pueden no estar presentes si se desconoce la distancia.

  • duration indica la duración total de esta etapa en forma de campo con los siguientes elementos:

    • value indica la duración en segundos.
    • text contiene una representación de la duración en lenguaje natural.

    Estos campos pueden no estar presentes si se desconoce la duración.

  • duration_in_traffic indica la duración total de esta etapa. Este valor es un cálculo aproximado del tiempo en el tráfico en función de las condiciones del tráfico actuales e históricas. Consulta el parámetro de solicitud traffic_model para obtener información acerca de las opciones que puedes usar para solicitar que el valor devuelto sea optimista, pesimista o la mejor aproximación. La duración en el tráfico solo se devuelve si todos los siguientes enunciados son verdaderos:

    • La solicitud incluye una clave de API válida, o un ID. de cliente de Google Maps APIs Premium Plan y una firma válidos.
    • La solicitud no incluye waypoints de parada. Si la solicitud incluye waypoints, estos deben contener el prefijo via: para evitar paradas.
    • La solicitud es específica para indicaciones de manejo; el parámetro mode está configurado en el valor driving.
    • La solicitud incluye un parámetro departure_time.
    • Las condiciones del tráfico están disponibles para la ruta solicitada.

    duration_in_traffic contiene los siguientes campos:

    • value indica la duración en segundos.
    • text contiene una representación de la duración en lenguaje natural.
  • arrival_time contiene la hora estimada de llegada para esta etapa. Esta propiedad solo se devuelve para indicaciones de transporte. El resultado se devuelve como un objeto Time con tres propiedades:
    • value contiene la hora especificada como objeto Date de JavaScript.
    • text contiene la hora especificada como cadena. La hora se muestra en la zona horaria de la parada de transporte.
    • time_zone contiene la zona horaria de esta estación. El valor es el nombre de la zona horaria tal como se define en la base de datos de zonas horarias de la IANA; p. ej., “America/New_York”.
  • departure_time contiene la hora estimada de partida para esta etapa, especificada como un objeto Time. departure_time solo está disponible para indicaciones de transporte.
  • start_location contiene las coordenadas de latitud/longitud para el origen de esta etapa. Debido a que la Directions API calcula indicaciones entre ubicaciones usando la opción de transporte más cercana (generalmente, una calle) en los puntos de partida y llegada, es posible que start_location se diferencie del origen proporcionado para esta etapa si, por ejemplo, no hay una calle cerca del origen.
  • end_location contiene las coordenadas de latitud/longitud para el destino proporcionado de esta etapa. Debido a que Google Maps Directions API calcula indicaciones entre ubicaciones usando la opción de transporte más cercana (generalmente, una calle) en los puntos de partida y llegada, es posible que end_location se diferencie del destino proporcionado para esta etapa si, por ejemplo, no hay una calle cerca del destino.
  • start_address contiene la dirección en lenguaje natural (normalmente, una dirección) que resulta de la geocodificación inversa de la start_location de esta etapa.
  • end_address contiene la dirección en lenguaje natural (normalmente, una dirección) que resulta de la geocodificación inversa de la end_location de esta etapa.

Pasos

Cada elemento de la matriz steps define un solo paso de las indicaciones calculadas. Un paso es la unidad más pequeña de la ruta de una indicación, y contiene un paso individual en el que se describe una instrucción específica y única del viaje. P. ej., “Doble a la izquierda en la calle 4, hacia el oeste”. En el paso no solo se describe la instrucción, sino también se incluye información sobre distancia y duración relacionada con la vinculación que este paso tiene con el siguiente. Por ejemplo, un paso indicado como “Tome la I-80 hacia el oeste” puede contener una duración de “37 millas” y “40 minutos”, que indica que el paso siguiente se encuentra a 37 millas o 40 minutos del paso actual.

Al usar la Google Maps Directions API para buscar indicaciones de transporte, en la matriz de pasos se incluirán detalles sobre el transporte bajo la forma de una matriz transit_details. Si en las indicaciones se incluyen varios medios de transporte, se proporcionarán indicaciones detalladas para los pasos de desplazamiento a pie o manejo en una matriz steps. Por ejemplo, en un paso para el desplazamiento a pie se incluirán indicaciones de las ubicaciones de partida y llegada: “Camine hasta la avenida Innes y la calle Fitch”. En ese paso se incluirán indicaciones detalladas de desplazamiento a pie para la ruta en la matriz steps, como las siguientes: “Diríjase hacia el noroeste”, “Doble a la izquierda en Arelious Walker” y “Doble a la izquierda en la avenida Innes”.

Cada paso dentro de los campos steps pueden contener los siguientes campos:

  • html_instructions contiene instrucciones con formato para este paso, presentadas como una cadena de texto HTML.
  • distance contiene la distancia cubierta por ese paso hasta el paso siguiente. (Consulta la discusión sobre este campo en Etapas de las indicaciones más arriba). Este campo puede no especificarse si se desconoce la distancia.
  • duration contiene el tiempo generalmente necesario para realizar el paso, hasta llegar al siguiente. (Consulta la descripción en Etapas de las indicaciones más arriba). Este campo puede no especificarse si se desconoce la duración.
  • start_location contiene la ubicación del punto de partida de este paso, como un conjunto individual de campos lat y lng.
  • end_location contiene la ubicación del último punto de este paso, como un conjunto individual de campos lat y lng.
  • polyline contiene un único objeto points que tiene una representación de polilínea codificada del paso. Esta polilínea es una ruta aproximada (unificada) del paso.
  • steps contiene indicaciones detalladas para los pasos de desplazamiento a pie o manejo en indicaciones de transporte. Los subpasos solo están disponibles cuando travel_mode está configurado en “transit”. La matriz interna steps es del mismo tipo que steps.
  • transit_details contiene información específica sobre el transporte. Este campo solo se devuelve cuando travel_mode está configurado en "transit". Consulta Detalles sobre el transsporte a continuación.

Detalles sobre el transporte

Las indicaciones de tránsito devuelven información adicional que no es relevante para otros modos de transporte. Esas propiedades adicionales se exhiben a través del objeto transit_details, el cual se devuelve como un campo de un elemento en la matriz steps[]. Desde el objeto TransitDetails, puedes acceder a información adicional acerca de la parada de transporte, línea de transporte y agencia de transporte.

Un objeto transit_details puede contener los siguientes campos:

  • arrival_stop y departure_stop contienen información acerca de la parada/estación para esta parte del viaje. Los detalles de parada pueden incluir:
    • name el nombre de la estación/parada de transporte. P. ej., “Union Square”.
    • location contiene la ubicación de la estación o parada de transporte, representada como un campo lat y lng.
  • arrival_time y departure_time contienen los horarios de llegada y partida para esta etapa del viaje, especificados como las siguientes tres propiedades:
    • text contiene la hora especificada como cadena. La hora se muestra en la zona horaria de la parada de transporte.
    • value contiene la hora especificada como horario Unix, o en segundos a partir de la medianoche del 1 de enero de 1970, UTC.
    • time_zone contiene la zona horaria de esta estación. El valor es el nombre de la zona horaria tal como se define en la base de datos de zonas horarias de la IANA; p. ej., “America/New_York”.
  • headsign especifica la dirección en la cual se debe viajar en esta línea, según se marca en el vehículo o la parada de partida. A menudo, será la estación terminal.
  • headway especifica los segundos previstos entre partidas de la misma parada en el momento. Por ejemplo, con un valor headway de 600, se debe prever una espera de diez minutos en caso de perder un autobús.
  • num_stops contiene la cantidad de paradas de este paso, para las que se tiene en cuenta la parada de llegada, pero no la parada de partida. Por ejemplo, si en las indicaciones se incluye partir de la parada A, pasar por las paradas B y C, y llegar a la parada D, el valor devuelto por num_stops será 3.
  • line contiene información acerca de la línea de transporte usada en este paso, y puede incluir las siguientes propiedades:
    • name contiene el nombre completo de esta línea de transporte. Por ejemplo, "7 Avenue Express".
    • short_name contiene el nombre abreviado de esta línea de transporte. Normalmente, será el número de una línea, como "M7" o "355".
    • color contiene el color que comúnmente se usa en la señalización de la línea de transporte en cuestión. El color se especificará como una cadena hexadecimal; por ejemplo: #FF0033.
    • agencies contiene una matriz de objetos TransitAgency que proporcionan información acerca del operador de la línea, incluidas las siguientes propiedades:
      • name contiene el nombre de la agencia de transporte.
      • url contiene la URL de la agencia de transporte.
      • phone contiene el número de teléfono de la agencia de transporte.

      Debes mostrar los nombres y las direcciones URL de las agencias de transporte que proporcionan los resultados para un viaje específico.

    • url contiene la dirección URL de esta línea de transporte tal como la proporciona la agencia de transporte.
    • icon contiene la dirección URL para el icono asociado con esta línea.
    • text_color contiene el color de texto que comúnmente se usa para la señalización de la línea en cuestión. El color se especificará como una cadena hexadecimal.
    • vehicle contiene el tipo de vehículo que se usa en esta línea. Puede incluir las siguientes propiedades:
      • name contiene el nombre del vehículo de esta línea; p. ej., “Subterráneo”.
      • type contiene el tipo de vehículo que se usa en esta línea. Consulta la documentación sobre el tipo de vehículo para obtener una lista completa de los valores admitidos.
      • icon contiene la dirección URL para el icono asociado con este tipo de vehículo.
      • local_icon contiene la URL para el ícono asociado con este tipo de vehículo, según la señalización de transporte local.

Tipo de vehículo

La propiedad vehicle.type puede devolver cualquiera de los siguientes valores:

Valor Definición
RAIL Transporte ferroviario.
METRO_RAIL Transporte en tren ligero.
SUBWAY Tren ligero subterráneo.
TRAM Tranvía sobre el suelo.
MONORAIL Monorriel.
HEAVY_RAIL Ferrocarril metropolitano.
COMMUTER_TRAIN Ferrocarril suburbano.
HIGH_SPEED_TRAIN Tren de alta velocidad.
BUS Autobús.
INTERCITY_BUS Autobús interurbano.
TROLLEYBUS Trolebús.
SHARE_TAXI El transporte “share taxi” es una clase de autobús que puede dejar y recoger pasajeros en cualquier punto de su recorrido.
FERRY Ferry.
CABLE_CAR Un vehículo que funciona con un cable y generalmente sobre el suelo. Los funiculares aéreos pueden ser del tipo GONDOLA_LIFT.
GONDOLA_LIFT Un funicular aéreo.
FUNICULAR Un vehículo que sube por una pendiente pronunciada a través de un cable. Un funicular normalmente consta de dos coches; cada uno actúa como contrapeso del otro.
OTHER Se devolverá este tipo para todos los demás vehículos.

Modos de viaje disponibles

El campo de respuesta available_travel_modes contiene una matriz de modos de viaje disponibles. Este campo se muestra cuando en una solicitud se especifica un mode de viaje y no recibe resultados. La matriz contiene los modos de viaje disponibles en los países del conjunto específico de waypoints que tienen resultados. El campo no se muestra si alguno de los waypoints es via:.

Por ejemplo, prueba esta solicitud:

https://maps.googleapis.com/maps/api/directions/json?&mode=transit&origin=frontera+el+hierro&destination=la+restinga+el+hierro&departure_time=1399995076&key=YOUR_API_KEY

Produce esta respuesta:

{
   "available_travel_modes" : [ "DRIVING", "BICYCLING", "WALKING" ],
   "geocoded_waypoints" : [
      {
         "geocoder_status" : "OK",
         "partial_match" : true,
         "place_id" : "ChIJwZNMti1fawwRO2aVVVX2yKg",
         "types" : [ "locality", "political" ]
      },
      {
         "geocoder_status" : "OK",
         "partial_match" : true,
         "place_id" : "ChIJ3aPgQGtXawwRLYeiBMUi7bM",
         "types" : [ "locality", "political" ]
      }
   ],
   "routes" : [],
   "status" : "ZERO_RESULTS"
}

El parámetro sensor

Antes, la Google Maps API requería que incluyeras el parámetro sensor para indicar si tu aplicación usaba un sensor para determinar la ubicación del usuario. El uso de este parámetro ya no es obligatorio.

Enviar comentarios sobre...

Google Maps Directions API
Google Maps Directions API
Si necesitas ayuda, visita nuestra página de asistencia.