Este servicio también está disponible como parte de la API JavaScript de Mapas del lado del cliente, o para uso del lado del servidor con el Cliente Java, el Cliente Python, el Cliente Go y el Nodo.Cliente js para servicios de Google Maps.
- Introducción
- Antes de comenzar
- Solicitudes de matriz de distancia
- La seguridad HTTPS o HTTP
- Parámetros de solicitud
- Parámetros requeridos
- Parámetros opcionales
- modos de transporte
- Información de tráfico
- Restricciones
- Sistemas de unidades
- Respuestas de matriz de distancia
- Elementos de respuesta de matriz de distancia
- Códigos de estado
- Códigos de estado de nivel superior
- Códigos de estado a nivel de elemento
- Mensajes de error
- Filas
- Elementos
- El parámetro sensor
Introducción
La API de Matriz de distancias es un servicio que proporciona distancia y tiempo de viaje para una matriz de orígenes y destinos. La API devuelve información basada en la ruta recomendada entre los puntos de inicio y final, calculada por la API de Google Maps, y consta de filas que contienen valores duration
y distance
para cada par.
Nota: Este servicio no devuelve información detallada de la ruta. La información de ruta se puede obtener pasando el origen y el destino únicos deseados a la API de Direcciones.
Antes de comenzar
Este documento está destinado a desarrolladores que desean calcular la distancia y el tiempo de viaje entre varios puntos dentro de los mapas proporcionados por una de las API de Google Maps. Proporciona una introducción al uso de la API y material de referencia sobre los parámetros disponibles.
Antes de comenzar a desarrollar con la API de Distance Matrix, revise los requisitos de autenticación (necesita una clave de API) y la información de uso y facturación de la API (necesita habilitar la facturación en su proyecto).
Solicitudes de matriz de distancia
Una solicitud de API de matriz de distancia tiene la siguiente forma:
donde outputFormat
puede ser uno de los siguientes valores:
-
json
(recomendado), indica salida en Notación de objetos JavaScript (JSON); o -
xml
, indica la salida como XML.
Nota: Las URL deben estar codificadas correctamente para ser válidas y están limitadas a 8192 caracteres para todos los servicios web. Ten en cuenta este límite al construir tus URL. Tenga en cuenta que los diferentes navegadores, servidores proxy y servidores también pueden tener diferentes límites de caracteres de URL.
La seguridad HTTPS o HTTP
es importante y se recomienda HTTPS siempre que sea posible, especialmente para aplicaciones que incluyen datos confidenciales de usuario, como la ubicación de un usuario, en las solicitudes. El uso de cifrado HTTPS hace que su aplicación sea más segura y más resistente al espionaje o la manipulación.
Si HTTPS no es posible, para acceder a la API de Matriz de distancias a través de HTTP, use:
Parámetros de solicitud
Se requieren ciertos parámetros, mientras que otros son opcionales. Como es habitual en las URL, todos los parámetros se separan utilizando el carácter ampersand (&
). Todos los caracteres reservados (por ejemplo, el signo más «+») deben estar codificados en URL.La lista de parámetros y sus posibles valores se enumeran a continuación.
Parámetros requeridos
-
origins
div — – El punto de partida para calcular la distancia y el tiempo de viaje. Puede proporcionar una o más ubicaciones separadas por el carácter de tubería (|
), en forma de un ID de lugar, una dirección o coordenadas de latitud/longitud:- Si proporciona un ID de lugar, debe anteponerlo con
place_id:
. Solo puede especificar un ID de lugar si la solicitud incluye una clave de API o un ID de cliente del plan Google Maps Platform Premium. Puede recuperar los ID de lugar de la API de geocodificación y la API de Lugares (incluido el autocompletado de lugares). Para ver un ejemplo de uso de ID de lugar de Autocompletar Lugares, consulte Autocompletar lugares y Direcciones. Para obtener más información sobre los ID de lugar, consulte la descripción general de ID de lugar. - Si pasa una dirección, el servicio geocodifica la cadena y la convierte en una coordenada de latitud/longitud para calcular la distancia. Esta coordenada puede ser diferente de la devuelta por la API de geocodificación, por ejemplo, una entrada de edificio en lugar de su centro.
origins=Bobcaygeon+ON|24+Sussex+Drive+Ottawa+ON
Nota: se prefiere usar identificadores de lugar a usar direcciones o coordenadas de latitud/longitud. El uso de coordenadas siempre resultará en que el punto se enganche a la carretera más cercana a esas coordenadas, que puede no ser un punto de acceso a la propiedad, o incluso una carretera que conduzca de forma rápida o segura al destino. - Si pasa las coordenadas de latitud / longitud, se ajustarán a la carretera más cercana. Se prefiere pasar una identificación de lugar. Si pasa coordenadas, asegúrese de que no existe espacio entre los valores de latitud y longitud.
origins=41.43206,-81.38992|-33.86748,151.20699
origins=place_id:ChIJ3S-JXmauEmsRUcIaWtf4MzE
- Los códigos Plus deben formatearse como un código global o un código compuesto. Formatee los códigos más como se muestra aquí (los signos más tienen escape de url a
%2B
y los espacios tienen escape de url a%20
):- el código global es un código de área de 4 caracteres y un código local de 6 caracteres o más (849VCWC8+R9 es
849VCWC8%2BR9
). - el código compuesto es un código local de 6 caracteres o más largo con una ubicación explícita (CWC8+R9 Mountain View, CA, EE.UU. es
CWC8%2BR9%20Mountain%20View%20CA%20USA
).
- el código global es un código de área de 4 caracteres y un código local de 6 caracteres o más (849VCWC8+R9 es
- Alternativamente, puede proporcionar un conjunto codificado de coordenadas utilizando el algoritmo de Polilínea Codificada. Esto es particularmente útil si tiene un gran número de puntos de origen, porque la URL es significativamente más corta cuando se usa una polilínea codificada. las polilíneas codificadas
- deben ir precedidas de
enc:
y seguidas de dos puntos (:
).Por ejemplo:origins=enc:gfo}EtohhU:
- También puede incluir varias polilíneas codificadas, separadas por el carácter de tubería (
|
). Por ejemplo:origins=enc:wc~oAwquwMdlTxiKtqLyiK:|enc:c~vnAamswMvlTor@tjGi}L:|enc:udymA{~bxM:
- deben ir precedidas de
- Si proporciona un ID de lugar, debe anteponerlo con
-
destinations
— Una o más ubicaciones para utilizar como punto de terminar para el cálculo de distancia y tiempo de viaje. Las opciones para el parámetrodestinations
son las mismas que para el parámetroorigins
, descrito anteriormente. -
key
: La clave API de su aplicación. Esta clave identifica su solicitud para fines de gestión de cuotas. Aprende a conseguir una llave. Nota: Los clientes del plan Premium de Google Maps Platform pueden usar una clave de API o un ID de cliente válido y una firma digital en sus solicitudes de Matriz de distancia. Obtenga más información sobre los parámetros de autenticación para los clientes del Plan Premium.
El siguiente ejemplo utiliza coordenadas de latitud / longitud para especificar las coordenadas de destino:
El siguiente ejemplo utiliza códigos plus para especificar las coordenadas de destino:
El siguiente ejemplo muestra la misma solicitud utilizando una polilínea codificada:
Parámetros opcionales
-
mode
(el valor predeterminado esdriving
): Especifica el modo de transporte que se utilizará al calcular la distancia. Los valores válidos y otros detalles de la solicitud se especifican en la sección Modos de viaje de este documento. -
language
div — – El idioma en el que devolver los resultados.- Consulte la lista de idiomas admitidos. Google a menudo actualiza los idiomas admitidos, por lo que esta lista puede no ser exhaustiva.
- Si no se proporciona
language
, la API intenta utilizar el idioma preferido especificado en el encabezadoAccept-Language
, o el idioma nativo del dominio desde el que se envía la solicitud. - La API hace todo lo posible para proporcionar una dirección que sea legible tanto para el usuario como para los locales. Para lograr ese objetivo, devuelve las direcciones en el idioma local, transliteradas a un guion legible por el usuario si es necesario, observando el idioma preferido. Todas las demás direcciones se devuelven en el idioma preferido. Todos los componentes de dirección se devuelven en el mismo idioma, que se elige del primer componente.
- Si un nombre no está disponible en el idioma preferido, la API utiliza la coincidencia más cercana.
- El idioma preferido tiene una pequeña influencia en el conjunto de resultados que la API elige devolver y en el orden en que se devuelven. El geocodificador interpreta las abreviaturas de manera diferente dependiendo del idioma, como las abreviaturas para los tipos de calle,o los 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.
-
region
div — – El código de región, especificado como un valor de dos caracteres ccTLD (dominio de nivel superior de código de país). La mayoría de los códigos ccTLD son idénticos a los códigos ISO 3166-1, con algunas excepciones. Este parámetro solo influirá, no restringirá completamente, los resultados del geocodificador. Si existen resultados más relevantes fuera de la región especificada, pueden incluirse. -
avoid
Introduce restricciones a la ruta. Los valores válidos se especifican en la sección Restricciones de este documento. Solo se puede especificar una restricción. -
units
div — – Especifica el sistema de unidades que se utilizará al expresar la distancia como texto. Consulte la sección Sistemas de unidades de este documento para obtener más información. -
arrival_time
div — – Especifica la hora de llegada deseada para las solicitudes de tránsito, en segundos desde la medianoche del 1 de enero de 1970 UTC. Puede especificardeparture_time
oarrival_time
, pero no tanto. Tenga en cuenta quearrival_time
debe especificarse como un entero. -
departure_time
div — – La hora de salida deseada. Puede especificar la hora como un entero en segundos desde la medianoche del 1 de enero de 1970 UTC. Si se especifica undeparture_time
posterior a 9999-12-31T23:59:59.999999999 Z, la API retrocederá eldeparture_time
a 9999-12-31T23:59:59.9999999999 Z. Alternativamente, puede especificar un valor denow
, que establece la hora de salida a la hora actual (correcta al segundo más cercano). La hora de salida se puede especificar en dos casos:- Para solicitudes en las que el modo de viaje es de tránsito: Opcionalmente, puede especificar uno de
departure_time
oarrival_time
. Si no se especifica ninguna hora, el valor predeterminado dedeparture_time
es ahora (es decir, la hora de salida es la hora actual). - Para solicitudes en las que se está conduciendo el modo de viaje: Puede especificar el
departure_time
para recibir una ruta y una duración del viaje (campo de respuesta:duration_in_traffic
) que tengan en cuenta 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 y firma válidos del plan Premium de Google Maps Platform. Eldeparture_time
debe establecerse en la hora actual o en algún momento en el futuro. No puede estar en el pasado.Nota: Si no se especifica la hora de salida, la elección de la ruta y la duración se basan en la red de carreteras y en las condiciones de tráfico independientes del tiempo medio. Los resultados de una solicitud determinada pueden variar con el tiempo debido a cambios en la red de carreteras, condiciones de tráfico promedio actualizadas y la naturaleza distribuida del servicio. Los resultados también pueden variar entre rutas casi equivalentes en cualquier momento o frecuencia.
Nota: Las solicitudes de matriz de distancia que especifican
departure_time
cuandomode=driving
están limitadas a un máximo de 100 elementos por solicitud. El número de orígenes multiplicado por el número de destinos define el número de elementos.
- Para solicitudes en las que el modo de viaje es de tránsito: Opcionalmente, puede especificar uno de
-
traffic_model
(el valor predeterminado esbest_guess
): Especifica las suposiciones que se deben usar al calcular el tiempo en el tráfico. Esta configuración afecta al valor devuelto en el campoduration_in_traffic
de la respuesta, que contiene el tiempo previsto en el tráfico en función de los promedios históricos. El parámetrotraffic_model
solo se puede especificar para solicitudes en las que el modo de viaje esdriving
, y en las que la solicitud incluye undeparture_time
, y solo si la solicitud incluye una clave de API o un ID de cliente del plan Premium de Google Maps Platform. Los valores disponibles para este parámetro son:-
best_guess
(predeterminado) indica que elduration_in_traffic
devuelto debe ser la mejor estimación del tiempo de viaje dado lo que se conoce sobre las condiciones de tráfico histórico y el tráfico en vivo. El tráfico en tiempo real se vuelve más importante cuanto más cerca está dedeparture_time
. -
pessimistic
indica que elduration_in_traffic
devuelto debe ser más largo que el tiempo de viaje real en la mayoría de los días, aunque los días ocasionales con condiciones de tráfico particularmente malas pueden exceder este valor. -
optimistic
indica que elduration_in_traffic
devuelto debe ser más corto que el tiempo de viaje real en la mayoría de los días, aunque los días ocasionales con condiciones de tráfico particularmente buenas pueden ser más rápidos que este valor.
-
-
transit_mode
— Especifica uno o más modos preferidos de tránsito. Este parámetro solo se puede especificar para solicitudes en las quemode
estransit
. El parámetro admite los siguientes argumentos:-
bus
indica que la ruta calculada debe preferir viajar en autobús. -
subway
indica que la ruta calculada debe preferir viajar en metro. -
train
indica que la ruta calculada debe preferir viajar en tren. -
tram
indica que la ruta calculada debe preferir viajar en tranvía y tren ligero. -
rail
indica que la ruta calculada debe preferir viajar en tren, tranvía, tren ligero y metro. Esto es equivalente atransit_mode=train|tram|subway
.
-
-
transit_routing_preference
div — – Especifica las preferencias para las solicitudes de tránsito. Con este parámetro, puede sesgar las opciones devueltas, en lugar de aceptar la mejor ruta predeterminada elegida por la API. Este parámetro solo se puede especificar para solicitudes en las quemode
estransit
. El parámetro admite los siguientes argumentos:-
less_walking
indica que la ruta calculada debe preferir cantidades limitadas de caminata. -
fewer_transfers
indica que la ruta calculada debe preferir un número limitado de transferencias.
-
modos de transporte
Para el cálculo de distancias, usted puede especificar el transporte mode
para usar. De forma predeterminada, las distancias se calculan para el modo de conducción. Se admiten los siguientes modos de viaje:
-
driving
(predeterminado) indica el cálculo de la distancia utilizando la red de carreteras. -
walking
solicita el cálculo de la distancia para caminar por senderos peatonales & aceras (donde esté disponible). -
bicycling
solicita el cálculo de la distancia para andar en bicicleta a través de carriles para bicicletas & calles preferidas (donde estén disponibles). -
transit
solicita el cálculo de la distancia a través de rutas de transporte público (donde esté disponible). Este valor solo se puede especificar si la solicitud incluye una clave de API o un ID de cliente del plan Google Maps Platform Premium. Si establece el modo detransit
opcionalmente, se puede especificar undeparture_time
o unarrival_time
. Si no se especifica ninguna hora, el valor predeterminado dedeparture_time
es ahora (es decir, la hora de salida es la hora actual). También puede incluir opcionalmente untransit_mode
y/otransit_routing_preference
.
Información de tráfico
La información de tráfico se utiliza cuando se aplican todas las siguientes condiciones (estas son las condiciones requeridas para recibir el campo duration_in_traffic
en la respuesta de la matriz de distancia):
- El parámetro travel
mode
esdriving
, o no está especificado (driving
es el modo de viaje predeterminado). - La solicitud incluye un parámetro válido
departure_time
. Eldeparture_time
se puede establecer en la hora actual o en algún momento en el futuro. No puede estar en el pasado.
Opcionalmente, puede incluir el parámetro traffic_model
en su solicitud para especificar las suposiciones que se utilizarán al calcular el tiempo en el tráfico.
La siguiente URL inicia una solicitud de Matriz de distancias para distancias de conducción entre Boston, MA o Charlestown, MA, y Lexington, MA y Concord, MA. La solicitud incluye una hora de salida, que cumple con todos los requisitos para devolver el campo duration_in_traffic
en la respuesta de la matriz de distancia.
Restricciones
Se pueden calcular distancias que cumplan con ciertas restricciones. Las restricciones se indican mediante el uso del parámetro avoid
, y un argumento para ese parámetro que indica la restricción a evitar. Las restricciones siguientes son compatibles:
avoid=tolls
avoid=highways
avoid=ferries
avoid=indoor
* Nota: la adición de restricciones no impide que las rutas que incluyen restricciones en función de los sesgos que el resultado más favorable de las rutas.
Sistemas de unidades
Los resultados de la matriz de distancia contienen campos text
dentro de distance
para indicar la distancia de la ruta calculada. El sistema de unidad a usar se puede especificar:
-
units=metric
(predeterminado) devuelve distancias en kilómetros y metros. -
units=imperial
devuelve distancias en millas y pies.
* Nota: esta configuración del sistema de unidad solo afecta a los campos text
que se muestran dentro de distance
. Los campos distance
también contienen values
que siempre se expresan en metros.
Respuestas de matriz de distancia
Las respuestas a las consultas de la API de Matriz de distancia se devuelven en el formato indicado por el indicador output
dentro de la ruta de acceso de la solicitud de URL.
A continuación se muestran dos solicitudes HTTP de muestra, solicitando distancia y duración desde Vancouver, BC, Canadá y desde Seattle, WA, EE.UU., a San Francisco, CA, EE. UU. y a Victoria, BC, Canadá.
Esta solicitud se muestra usando la bandera JSON output
:
Esta solicitud se muestra el uso del XML output
marca:
Esta petición devolverá cuatro elementos – dos orígenes veces dos destinos:
Vancouver a San Francisco | Vancouver a Victoria |
Seattle a San Francisco | Seattle a Victoria |
los Resultados se devuelven en filas, cada fila contiene un origen vinculado con cada destino.
Puede probar esto introduciendo la URL en su navegador web (asegúrese de reemplazar YOUR_API_KEY
con su clave de API real).
Seleccione las pestañas siguientes para ver las respuestas JSON y XML de ejemplo.
El resto de esta documentación utilizará sintaxis JSON.
Elementos de respuesta de matriz de distancia
Las respuestas de matriz de distancia contienen los siguientes elementos raíz:
-
status
contiene metadatos en la solicitud. Consulte los Códigos de Estado a continuación. -
origin_addresses
contiene una matriz de direcciones que devuelve la API de su solicitud original. Estos son formateados por el geocodificador y localizados de acuerdo con el parámetrolanguage
pasado con la solicitud. -
destination_addresses
contiene una matriz de direcciones que devuelve la API de su solicitud original. Al igual que conorigin_addresses
, estos se localizan si es apropiado. -
rows
contiene un array deelements
, que a su vez contienen cada una unstatus
duration
ydistance
elemento.
Códigos de estado
Los campos status
dentro del objeto de respuesta contienen el estado de la solicitud y pueden contener información de depuración útil. La API de Matriz de distancias devuelve un campo de estado de nivel superior, con información sobre la solicitud en general, así como un campo de estado para cada campo de elemento, con información sobre ese emparejamiento de origen y destino en particular.
Códigos de estado de nivel superior
-
OK
indica que la respuesta contiene unresult
válido. -
INVALID_REQUEST
indica que la solicitud no es válida. -
MAX_ELEMENTS_EXCEEDED
indica que el producto de los orígenes y destinos supera el límite por consulta. -
MAX_DIMENSIONS_EXCEEDED
indica que el número de orígenes o destinos supera el límite por consulta. -
OVER_DAILY_LIMIT
indica cualquiera de las siguientes cosas:- La clave de API falta o no es válida.
- La facturación no se ha habilitado en su cuenta.
- Se ha excedido un límite de uso autoimpuesto.
- El método de pago proporcionado ya no es válido (por ejemplo, una tarjeta de crédito ha caducado).
Consulte las preguntas frecuentes de Mapas para aprender a solucionar esto.
-
OVER_QUERY_LIMIT
indica que el servicio ha recibido demasiadas solicitudes de su aplicación dentro del período de tiempo permitido. -
REQUEST_DENIED
indica que el servicio denegó el uso del servicio de matriz de distancia por parte de su aplicación. -
UNKNOWN_ERROR
indica que una solicitud de matriz de distancia no se pudo procesar debido a un error del servidor. La solicitud puede tener éxito si vuelve a intentarlo.
Códigos de estado a nivel de elemento
-
OK
indica que la respuesta contiene unresult
válido. -
NOT_FOUND
indica que el origen y/o destino de este emparejamiento no se pudo geocodificar. -
ZERO_RESULTS
indica que no se pudo encontrar ninguna ruta entre el origen y el destino. -
MAX_ROUTE_LENGTH_EXCEEDED
indica que la ruta solicitada es demasiado larga y no se puede procesar.
Mensajes de error
Cuando el código de estado de nivel superior no es OK
, puede haber un campo adicionalerror_message
dentro del objeto de respuesta de matriz de distancia. Este campo contiene información más detallada sobre las razones detrás del código de estado dado.
Nota: No se garantiza que este campo esté siempre presente, y su contenido está sujeto a cambios.
Filas
Cuando la API de Matriz de distancias devuelve resultados, los coloca dentro de una matriz JSON rows
. Incluso si no se devuelven resultados (por ejemplo, cuando los orígenes y/o destinos no existen), devuelve una matriz vacía. Las respuestas XML consisten en cero o más elementos <row>
.Las filas
se ordenan de acuerdo con los valores del parámetro origin
de la solicitud. Cada fila corresponde a un origen, y cada element
dentro de esa fila corresponde a un emparejamiento de origen con un destination
valor.
Cada array row
contiene una o más entradas element
, que a su vez contienen la información sobre un solo emparejamiento origen-destino.
Elementos
La información sobre cada emparejamiento origen-destino se devuelve en una entrada element
. An element
contiene los siguientes campos:
-
status
: Consulte Códigos de estado para obtener una lista de posibles códigos de estado. -
duration
: El tiempo que se tarda en recorrer esta ruta, expresado en segundos (el campovalue
) y comotext
. La representación textual se localiza de acuerdo con el parámetrolanguage
de la consulta. -
duration_in_traffic
: El tiempo que se tarda en recorrer esta ruta, en función de las condiciones de tráfico actuales e históricas. Consulte el parámetro de solicitudtraffic_model
para ver las opciones que puede usar para solicitar que el valor devuelto sea optimista, pesimista o una estimación de mejor estimación. La duración se expresa en segundos (elvalue
campo) y comotext
. La representación textual se localiza de acuerdo con el parámetrolanguage
de la consulta. La duración en el tráfico se devuelve solo si todo lo siguiente es verdadero:- La solicitud incluye un parámetro
departure_time
. - La solicitud incluye una clave de API válida o un ID de cliente y firma válidos del plan Premium de Google Maps Platform.
- Las condiciones de tráfico están disponibles para la ruta solicitada.
- El parámetro
mode
se establece endriving
.
- La solicitud incluye un parámetro
-
distance
: La distancia total de la ruta, expresada en metros (value
) ytext
. El valor textual utiliza el sistema de unidades especificado con el parámetrounit
de la solicitud original, o la región de origen. -
fare
: Si está presente, contiene la tarifa total (es decir, los costos totales del boleto) en esta ruta. Este hotel solo se devuelve para solicitudes de transporte y solo para proveedores de transporte en los que se dispone de información sobre tarifas. La información incluye:-
currency
: Un código de moneda ISO 4217 que indica la moneda en la que se expresa la cantidad. -
value
: El importe total de la tarifa, en la moneda especificada anteriormente. -
text
: El importe total de la tarifa, formateado en el idioma solicitado.
-
A continuación se muestra un ejemplo de un element
que contiene información de tarifas:
El parámetro sensor
La API de Google Maps requería previamente que incluyeras el parámetrosensor
para indicar si tu aplicación usaba un sensor para determinar la ubicación del usuario. Este parámetro ya no es necesario.