Este produto está no status legado. A partir de outubro de 2026, a API Directions (legada) não poderá mais ser ativada para novos projetos na nuvem do Google Cloud. Os projetos atuais continuam totalmente compatíveis. Para novos recursos e melhor desempenho, migre para a API Routes.
Para cálculos de rotas que respondem em tempo real à entrada do usuário (por exemplo, em um elemento da interface do usuário), use a API Directions (legada) ou, se estiver usando a API Maps JavaScript, use o serviço Directions. Para uso do lado do servidor, você pode usar os clientes Java, Python, Go e Node.js para serviços do Google Maps.
Com a API Directions (legada), você pode:
- Pesquise rotas para vários meios de transporte, incluindo transporte público, carro, a pé ou bicicleta.
- Retornar rotas em várias partes usando uma série de pontos de referência.
- Especifique origens, destinos e waypoints como strings de texto (por exemplo, "Chicago, IL" ou "Darwin, NT, Australia"), como IDs de lugar ou como coordenadas de latitude/longitude.
A API retorna as rotas mais eficientes ao calcular as rotas. O tempo de viagem é o principal fator otimizado, mas a API também pode considerar outros fatores, como distância, quantidade de curvas e muitos outros, ao decidir qual trajeto é o mais eficiente.
Antes de começar
Antes de usar a API Directions (legada), você precisa de um projeto com uma conta de faturamento e a API Directions (legada) ativada. Para saber mais, consulte Configurar no console do Cloud.
Criar solicitações da API Directions (legada)
Uma solicitação da API Directions (legada) tem o seguinte formato:
https://maps.googleapis.com/maps/api/directions/outputFormat?parameters
em que outputFormat pode ser um dos seguintes valores:
json(recomendado) indica a saída em JavaScript Object Notation (JSON)xmlindica a saída como XML.
Observação: os URLs precisam ser codificados corretamente para serem válidos e estão limitados a 16.384 caracteres em todos os serviços da Web. Considere esse limite ao criar seus URLs.
Como é padrão em URLs, todos os parâmetros são separados usando o caractere E comercial (&). Todos os caracteres reservados (por exemplo, o sinal de adição "+") precisam ser codificados em URL.
Veja abaixo a lista de parâmetros e seus valores possíveis.
Parâmetros obrigatórios
-
destino
O ID de lugar, o endereço ou o valor textual de latitude/longitude para o qual você quer calcular as rotas. As opções para o parâmetro de destino são as mesmas do parâmetro de origem.
-
origem
O ID de lugar, endereço ou valor textual de latitude/longitude de onde você quer calcular as rotas.
-
Os IDs de lugar precisam ter o prefixo
place_id:. É possível recuperar IDs de lugar das APIs Geocoding e Places (incluindo o Place Autocomplete). Para um exemplo que usa IDs de lugar do Place Autocomplete, consulte Place Autocomplete e Directions. Para mais informações sobre IDs de lugar, consulte a visão geral de IDs de lugar.origin=place_id:ChIJ3S-JXmauEmsRUcIaWtf4MzE -
Se você transmitir um endereço, o serviço de rotas vai geocodificar a string e convertê-la em uma coordenada de latitude/longitude para calcular as rotas. Essa coordenada pode ser diferente da retornada pela API Geocoding, por exemplo, a entrada de um edifício em vez do centro dele.
origin=24+Sussex+Drive+Ottawa+ONÉ preferível usar IDs de lugar em vez de endereços ou coordenadas de latitude/longitude. O uso de coordenadas sempre vai resultar no ajuste do ponto à via mais próxima dessas coordenadas, que pode não ser um ponto de acesso à propriedade ou até mesmo uma via que leve ao destino de forma rápida ou segura.
-
Se você transmitir coordenadas, o ponto será ajustado à via mais próxima. É preferível transmitir um ID de lugar. Se você transmitir coordenadas, verifique se não há espaço entre os valores de latitude e longitude.
origin=41.43206,-81.38992 -
Os Plus Codes precisam ser formatados como um código global ou composto. Formate os Plus Codes conforme mostrado aqui (os sinais de adição têm escape de URL para
%2Be os espaços, para%20).-
O código global é um código de área com quatro caracteres e um código local com, pelo menos, seis caracteres (849VCWC8+R9 é
849VCWC8%2BR9). -
O código composto é um código local com, pelo menos, seis caracteres e um local explícito (CWC8+R9 Mountain View, CA, EUA é
CWC8%2BR9%20Mountain%20View%20CA%20USA).
-
O código global é um código de área com quatro caracteres e um código local com, pelo menos, seis caracteres (849VCWC8+R9 é
Observação: para maior eficiência e precisão, use IDs de lugar sempre que possível. Esses IDs são explicitamente exclusivos, como um par de valores de latitude/longitude, e oferecem benefícios de geocodificação para rotas, como pontos de acesso e variáveis de trânsito. Ao contrário de um endereço, os IDs não exigem que o serviço realize uma pesquisa ou uma solicitação intermediária de Place Details. Portanto, o desempenho é melhor. -
Parâmetros opcionais
-
alternativas
Se definido como
true, especifica que o serviço Directions pode fornecer mais de uma opção de trajeto na resposta. Fornecer opções de trajeto pode aumentar o tempo de resposta do servidor. Disponível apenas para solicitações sem waypoints intermediários. Para mais informações, consulte o guia sobre waypoints. -
arrival_time
Especifica o horário de chegada preferencial para rotas de transporte público, em segundos desde a meia-noite de 1º de janeiro de 1970 UTC. É possível especificar
departure_timeouarrival_time, mas não ambos.arrival_timeprecisa ser especificado como um número inteiro. -
evitar
Indica que as rotas calculadas precisam evitar os recursos indicados. Esse parâmetro oferece suporte para os seguintes argumentos:
-
tollsindica que o trajeto calculado deve evitar vias/pontes com pedágio. -
highwaysindica que o trajeto calculado deve evitar rodovias. -
ferriesindica que o trajeto calculado deve evitar balsas. -
indoorindica que o trajeto calculado deve evitar etapas internas para rotas de transporte público e a pé.
É possível solicitar um trajeto que evite qualquer combinação de pedágios, rodovias e balsas transmitindo várias restrições ao parâmetro avoid. Exemplo:
avoid=tolls|highways|ferries. -
-
departure_time
Especifica o horário de partida preferencial. É possível especificar o horário como um número inteiro em segundos desde a meia-noite de 1º de janeiro de 1970 UTC. Se um
departure_timeposterior a 9999-12-31T23:59:59.999999999Z for especificado, a API vai reverter odeparture_timepara 9999-12-31T23:59:59.999999999Z. Como alternativa, é possível especificar um valor de now, que define o horário de partida como o horário atual (correto para o segundo mais próximo). A hora de saída pode ser especificada em dois casos:-
Para solicitações em que o meio de transporte é o transporte público: é possível especificar
departure_timeouarrival_time. Se nenhum horário for especificado, odeparture_timeserá definido como o horário atual (ou seja, o horário de partida será o horário atual). -
Para solicitações em que o meio de transporte é de carro: é possível especificar o
departure_timepara receber um trajeto e uma duração de viagem (campo de resposta: duration_in_traffic) que consideram as condições de trânsito. Odeparture_timeprecisa ser definido como o horário atual ou no futuro. Seu valor não pode estar no passado.
Observação: as opções de trajeto e duração se baseiam na rede viária e nas condições médias de trânsito (independente da hora) quando o horário de partida não é especificado. Os resultados das solicitações variam em função de mudanças na rede viária, atualizações nas condições de trânsito e da natureza distribuída do serviço. Eles também variam entre trajetos quase equivalentes a qualquer momento ou frequência.Observação: as solicitações da matriz de distância que especificamdeparture_timequandomode=drivingsão limitadas a no máximo 100 elementos por solicitação. O número de origens multiplicado pelo número de destinos define o número de elementos. -
Para solicitações em que o meio de transporte é o transporte público: é possível especificar
-
language
O idioma em que os resultados serão retornados. Isso se aplica apenas aos endereços geocodificados em
start_addresseend_address, ao texto localizado nos camposdistanceeduration(em trechos e etapas) e à descrição de manobras emhtml_instructions, mas não aos nomes e endereços emhtml_instructions, que são formatados no idioma e na escrita locais.- Consulte a lista de idiomas compatíveis. O Google atualiza os idiomas compatíveis com frequência, então esta lista pode não estar completa.
-
Se
languagenão for fornecido, a API vai tentar usar o idioma preferencial, conforme especificado no cabeçalhoAccept-Language. - A API faz o possível para fornecer um endereço que seja legível para o usuário e os moradores locais. Para isso, ele retorna endereços no idioma local, transliterados para um script legível pelo usuário, se necessário, de acordo com o idioma preferido. Todos os outros endereços são retornados no idioma preferencial. Os componentes de endereço são todos retornados no mesmo idioma, que é escolhido no primeiro componente.
- Se um nome não estiver disponível no idioma preferido, a API vai usar a correspondência mais próxima.
- O idioma preferencial tem uma pequena influência no conjunto de resultados que a API escolhe retornar e na ordem em que eles são retornados. O geocodificador interpreta abreviações de maneira diferente dependendo do idioma, como as abreviações de tipos de rua ou sinônimos que podem ser válidos em um idioma, mas não em outro. Por exemplo, utca e tér são sinônimos de rua em húngaro.
-
modo
Para o cálculo de distâncias e rotas, você pode especificar o meio de transporte a ser usado. Por padrão, o modo
drivingé usado. Por padrão, as rotas são calculadas como rotas de driving . Os seguintes meios de transporte são aceitos:-
driving(padrão) indica rotas de carro ou distância padrão usando a rede viária. -
walkingsolicita rotas a pé ou distância por faixas de pedestre e calçadas (quando disponível). -
bicyclingsolicita rotas de bicicleta ou distância usando ciclovias e ruas preferenciais (quando disponível). -
transitsolicita rotas ou distância usando trajetos de transporte público (quando disponível). Se você definir o modo como transporte público, poderá especificar umdeparture_timeou umarrival_time. Se nenhum horário for especificado, odeparture_timeserá definido como o horário atual (ou seja, o horário de partida será o horário atual). Também é possível incluir umtransit_modee/ou umtransit_routing_preference. As viagens de transporte público ficam disponíveis por até 7 dias no passado ou até 100 dias no futuro, sujeitas à disponibilidade de informações de transporte público fornecidas pelos provedores de dados. Os horários de transporte público mudam com frequência, as viagens disponíveis podem mudar ao longo do tempo e não há garantia de resultados consistentes para previsões com muita antecedência.
Observação: às vezes, as rotas a pé e de bicicleta não incluem caminhos claros para pedestres ou ciclistas. Portanto, elas vão retornar avisos no resultado, que você precisa mostrar ao usuário. -
-
região
O código da região, especificado como um valor de dois caracteres de ccTLD ("domínio de nível superior"). A maioria dos códigos ccTLD é idêntica aos códigos ISO 3166-1, com algumas exceções notáveis. Por exemplo, o ccTLD do Reino Unido é "uk" (.co.uk), enquanto o código ISO 3166-1 é "gb" (tecnicamente para a entidade "Reino Unido da Grã-Bretanha e Irlanda do Norte").
-
traffic_model
Especifica as premissas que serão usadas no cálculo do tempo no trânsito. Essa configuração afeta o valor retornado no campo duration_in_traffic na resposta, que contém o tempo previsto no trânsito com base nas médias históricas. O parâmetro
traffic_modelsó pode ser especificado para rotas de carro em que a solicitação inclui umdeparture_time. Os valores disponíveis para esse parâmetro são:-
best_guess(padrão) indica que o valor retornado de duration_in_traffic deve ser a melhor estimativa do tempo de viagem, considerando as informações de condições de trânsito históricas e em tempo real. Quanto mais próximo de agora for odeparture_time, mais importante será o trânsito em tempo real. -
pessimisticindica que o valor retornado de duration_in_traffic deve ser maior que o tempo de viagem na maioria dos dias, embora ele possa ser maior em alguns dias em que as condições de trânsito são particularmente ruins. -
optimisticindica que o valor retornado de duration_in_traffic deve ser menor que o tempo de viagem na maioria dos dias, embora ele possa ser menor em alguns dias em que as condições de trânsito são particularmente boas.
O valor padrão de
best_guessvai fornecer as previsões mais úteis para a grande maioria dos casos de uso. É possível que a previsão de tempo de viagem debest_guessseja menor queoptimisticou maior quepessimistic, devido à forma como o modelo preditivo debest_guessintegra informações de trânsito em tempo real. -
-
transit_mode
Especifica um ou mais meios de transporte preferenciais. Esse parâmetro só pode ser especificado para rotas de transporte público. O parâmetro é compatível com os seguintes argumentos:
-
busindica preferência ao deslocamento por ônibus no trajeto calculado. -
subwayindica preferência ao deslocamento por metrô no trajeto calculado. -
trainindica preferência ao deslocamento por trem no trajeto calculado. -
tramindica preferência ao deslocamento por bonde e veículo leve sobre trilhos (VLT) no trajeto calculado. -
railindica preferência ao deslocamento por trem, bonde, veículo leve sobre trilhos (VLT) e metrô no trajeto calculado. É equivalente atransit_mode=train|tram|subway.
-
-
transit_routing_preference
Especifica as preferências para rotas de transporte público. Com esse parâmetro, é possível direcionar as opções retornadas em vez de aceitar o melhor trajeto padrão escolhido pela API. Esse parâmetro só pode ser especificado para rotas de transporte público. O parâmetro oferece suporte para os seguintes argumentos:
-
less_walkingindica preferência por pouca caminhada no trajeto calculado. -
fewer_transfersindica preferência por um número limitado de baldeações no trajeto calculado.
-
-
unidades
Especifica o sistema de unidades a ser usado ao exibir os resultados.
Os resultados de rotas contêm texto nos campos de distância que podem ser mostrados ao usuário para indicar a distância de uma determinada "etapa" do trajeto. Por padrão, esse texto usa o sistema de unidades do país ou da região de origem.
Por exemplo, um trajeto de "Chicago, IL" para "Toronto, ONT" mostra resultados em milhas, enquanto o trajeto inverso mostra resultados em quilômetros. É possível substituir esse sistema de medidas configurando outro sistema explicitamente no parâmetro de unidades da solicitação, transmitindo um dos seguintes valores:
-
metricespecifica o uso do sistema métrico. As distâncias textuais são retornadas em quilômetros e metros. -
imperialespecifica o uso do sistema imperial (inglês). Distâncias textuais são retornadas em milhas e pés.
Observação: essa configuração do sistema de medidas afeta apenas o texto mostrado nos campos de distância. Os campos de distância também contêm valores que são sempre expressos em metros. -
-
waypoints
Cuidado: as solicitações que usam mais de 10 waypoints (entre 11 e 25) ou a otimização de waypoints têm uma taxa mais alta. Saiba mais sobre o faturamento dos produtos da Plataforma Google Maps.Especifica uma matriz de locais intermediários para incluir ao longo do trajeto entre os pontos de origem e destino como locais de passagem ou parada. Os waypoints mudam um trajeto desviando-o por localizações específicas. A API aceita waypoints para os seguintes meios de transporte: carro, a pé e bicicleta, mas não transporte público. Você pode fornecer um ou mais locais separados pelo caractere de barra vertical (
|ou%7C), na forma de um ID de lugar, um endereço ou coordenadas de latitude/longitude. Por padrão, o serviço Directions calcula um trajeto usando os waypoints na ordem em que são fornecidos. A precedência para analisar o valor do waypoint é o ID de lugar, as coordenadas de latitude/longitude e o endereço.-
Se você transmitir um ID de lugar, ele precisará ter o prefixo
place_id:. É possível recuperar IDs de lugar das APIs Geocoding e Places (incluindo o Place Autocomplete). Para um exemplo que usa IDs de lugar do Place Autocomplete, consulte Place Autocomplete e Directions. Para mais informações sobre IDs de lugar, consulte a visão geral de IDs de lugar.Para maior eficiência e precisão, use IDs de lugar sempre que possível. Esses IDs são explicitamente exclusivos, como um par de valores de latitude/longitude, e oferecem benefícios de geocodificação para rotas, como pontos de acesso e variáveis de trânsito. Ao contrário de um endereço, os IDs não exigem que o serviço realize uma pesquisa ou uma solicitação intermediária de Place Details. Portanto, o desempenho é melhor. -
Se você transmitir coordenadas de latitude/longitude, os valores vão diretamente para o servidor de front-end para calcular as rotas sem geocodificação. Os pontos são ajustados às vias e podem não fornecer a precisão que seu app precisa. Use coordenadas quando tiver certeza de que os valores realmente especificam os pontos que seu app precisa para definir rotas, sem considerar possíveis pontos de acesso ou outros detalhes de geocodificação. Verifique se uma vírgula (
%2C), e não um espaço (%20), separa os valores de latitude e longitude. - Se você transmitir um endereço, o serviço de rotas vai geocodificar a string e convertê-la em coordenadas de latitude/longitude para calcular as rotas. Se o valor do endereço for ambíguo, ele poderá evocar uma pesquisa para eliminar a ambiguidade de endereços semelhantes. Por exemplo, "Rua 1" pode ser um valor completo ou parcial para "Rua 1 NE" ou "Rua 1 SE". Esse resultado pode ser diferente do retornado pela API Geocoding. Para evitar possíveis interpretações incorretas, use IDs de lugar.
-
Como alternativa, você pode fornecer um conjunto codificado de pontos usando o algoritmo de polilinha codificada. Um conjunto codificado é útil para um grande número de waypoints, porque o URL é significativamente mais curto. Todos os serviços da Web têm um limite de URL de 16.384 caracteres.
-
As polilinhas codificadas precisam ter o prefixo
enc:e ser seguidas por dois-pontos (:). Por exemplo:waypoints=enc:gfo}EtohhU:. -
Também é possível incluir várias polilinhas codificadas, separadas pelo caractere de barra vertical (
|). Por exemplo,waypoints=via:enc:wc~oAwquwMdlTxiKtqLyiK:|enc:c~vnAamswMvlTor@tjGi}L:| via:enc:udymA{~bxM:.
-
As polilinhas codificadas precisam ter o prefixo
Influenciar rotas com pontos de parada e passagem
Para cada ponto de passagem na solicitação, a resposta de rotas adiciona uma entrada à matriz
legspara fornecer os detalhes das paradas nesse trecho do trajeto.Se você quiser influenciar o trajeto usando waypoints sem adicionar uma parada, adicione o prefixo
via:ao waypoint. Os waypoints com o prefixovia:não adicionam uma entrada à matrizlegs, mas direcionam o trajeto pelo waypoint.O URL a seguir modifica a solicitação anterior para que o trajeto seja roteado por Lexington sem paradas:
https://maps.googleapis.com/maps/api/directions/json? origin=Boston,MA&destination=Concord,MA &waypoints=Charlestown,MA|via:Lexington,MAO prefixo
via:é mais eficaz ao criar rotas em resposta ao usuário arrastando os waypoints no mapa. Isso permite que o usuário veja como será o trajeto final em tempo real e ajuda a garantir que os waypoints sejam colocados em locais acessíveis à API Directions.Atenção: usar o prefixovia:para evitar paradas resulta em rotas que são rígidas na interpretação do waypoint. Essa interpretação poderá resultar em desvios graves no trajeto ouZERO_RESULTSno código de status da resposta, se a API Directions não conseguir criar rotas usando esse ponto.Otimizar seus pontos de referência
Por padrão, o serviço Directions calcula um trajeto pelos waypoints fornecidos, na ordem em que são apresentados. Como opção, você pode passar
optimize:truecomo o primeiro argumento no parâmetro de waypoints para permitir que o serviço Directions otimize o trajeto fornecido reorganizando os waypoints em uma ordem mais eficaz. Essa otimização é um aplicativo do problema do vendedor de viagens. O tempo de viagem é o principal fator a ser otimizado, mas demais fatores, como distância, quantidade de curvas e outros, podem ser considerados para determinar a rota mais eficaz. Todos os waypoints precisam ser paradas para que o serviço Directions otimize o trajeto.Se você instruir o serviço Directions a otimizar a ordem dos seus waypoints, a ordem será retornada no campo
waypoint_orderdentro do objeto de rotas. O campowaypoint_orderretorna valores baseados em zero.O exemplo a seguir calcula uma viagem de carro de Adelaide, no sul da Austrália, até cada uma das principais regiões vinícolas do sul da Austrália usando a otimização de rotas.
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,SAA inspeção do trajeto calculado vai indicar que o cálculo usa waypoints na seguinte ordem:
"waypoint_order": [ 3, 2, 0, 1 ]Cuidado: as solicitações que usam a otimização de waypoints têm uma taxa mais alta. Saiba mais sobre o faturamento dos produtos da Plataforma Google Maps. -
Se você transmitir um ID de lugar, ele precisará ter o prefixo
A seguir
Exemplos de rotas
- Modos de viagem
- Informações de trânsito
- Waypoints e otimização de waypoints
- Restrições de rota
- Sistemas de unidades
- Viés de região
- Modificadores de local
Respostas do Directions
- DirectionsResponse
- DirectionsRoute
- DirectionsLeg
- DirectionsStep e DirectionsPolyline
- DirectionsTransitDetails
- DirectionsStatus
- DirectionsGeocodedWaypoint