Quando a API Routes calcula uma rota, ela usa como entrada os waypoints e os parâmetros de configuração fornecidos. Em seguida, a API retorna uma resposta que contém a rota padrão e uma ou mais rotas alternativas.
Sua resposta pode incluir diferentes tipos de trajetos e outros dados, com base nos campos solicitados:
Para incluir isso na resposta | Consulte esta documentação |
---|---|
O trajeto mais econômico com base no tipo de motor do veículo. | Configurar trajetos ecológicos |
Até três trajetos alternativos | Solicitar rotas alternativas |
A polilinha de um trajeto inteiro, para cada trecho e para cada etapa de um trecho. | Solicitar polilinhas do trajeto |
Os pedágios estimados, considerando todos os descontos ou passes livres para o motorista ou veículo. | Calcular tarifas de pedágio |
Respostas localizadas por códigos de idioma e unidade de medida (imperial ou métrica). | Solicitar valores localizados |
Para formatar as instruções de navegação como uma string de texto HTML, adicione HTML_FORMATTED_NAVIGATION_INSTRUCTIONS a extraComputations . |
Computação extra |
Para conferir a lista completa de opções de entrada, consulte Opções de rota disponíveis e Corpo da solicitação.
Usando a resposta, você pode fornecer aos seus clientes as informações necessárias para selecionar a rota apropriada para os requisitos deles.
Sobre as máscaras de campo
Ao chamar um método para calcular uma rota, você precisa especificar uma máscara de campo que defina quais campos quer retornar na resposta. Não há uma lista padrão de campos retornados. Se você omitir essa lista, os métodos retornarão um erro.
Os exemplos neste documento mostram todo o objeto de resposta sem levar as máscaras de campo em consideração. Em um ambiente de produção, a resposta incluiria apenas os campos que você especificar explicitamente na máscara de campo.
Para mais informações, consulte Escolher quais informações retornar.
Sobre a exibição de direitos autorais
Você deve incluir a seguinte declaração de direitos autorais ao exibir os resultados aos seus usuários:
Powered by Google, ©YEAR Google
Exemplo:
Powered by Google, ©2023 Google
Sobre trajetos, trechos e passos
Antes de analisar a resposta retornada pela API Routes, você precisa entender os componentes que compõem um trajeto:
Sua resposta pode conter informações sobre cada um destes componentes do trajeto:
Trajeto: toda a viagem desde o waypoint de origem, passando por waypoints intermediários, até o waypoint de destino. Um trajeto consiste em um ou mais trechos.
Trecho: o caminho de um waypoint em uma rota até o próximo. Cada trecho consiste em uma ou mais etapas distintas.
Um trajeto contém um trecho separado para o caminho de cada waypoint até o próximo. Por exemplo, se o trajeto tiver um único waypoint de origem e um único waypoint de destino, ele terá um único trecho. Para cada waypoint adicional adicionado ao trajeto após a origem e o destino, chamado de waypoint intermediário, a API adiciona um trecho separado.
A API não adiciona um trecho para um waypoint intermediário de passagem. Por exemplo, um trajeto que contém um waypoint de origem, um waypoint intermediário e um waypoint de destino contém apenas um trecho da origem até o destino, enquanto passa pelo waypoint. Para mais informações sobre waypoints de passagem, consulte Definir um waypoint de passagem.
Etapa: uma única instrução ao longo do trecho de um trajeto. Uma etapa é a unidade mais atômica de uma rota. Por exemplo, uma etapa pode indicar "Vire à esquerda na rua principal".
Qual é a resposta
O objeto JSON que representa a resposta da API contém as seguintes propriedades de nível superior:
routes
, uma matriz de elementos do tipo Route. A matrizroutes
contém um elemento para cada trajeto retornado pela API. A matriz pode conter no máximo cinco elementos: o trajeto padrão, o trajeto ecológico e até três trajetos alternativos.geocodingResults
, uma matriz de elementos do tipo GeocodingResults. Para cada local da solicitação (origem, destino ou waypoint intermediário) especificado como uma string de endereço ou como um Plus Code, a API realiza uma pesquisa de ID de lugar. Cada elemento dessa matriz contém o ID de lugar correspondente a um local. Os locais na solicitação especificados como um ID de lugar ou como coordenadas de latitude/longitude não são incluídos. Se você especificou todos os locais usando IDs de lugar ou coordenadas de latitude e longitude, essa matriz não será fornecida.fallbackInfo
, do tipo FallbackInfo. Se a API não conseguir calcular uma rota de todas as propriedades de entrada, ela pode optar por usar uma forma de cálculo diferente. Quando o modo substituto é usado, esse campo contém informações detalhadas sobre a resposta substituta. Caso contrário, este campo não será definido.
A resposta tem o seguinte formato:
{ // The routes array. "routes": [ { object (Route) } ], // The place ID lookup results. "geocodingResults": [ { object (GeocodedWaypoint) } ], // The fallback property. "fallbackInfo": { object (FallbackInfo) } }
Decifrar a matriz de rotas
A resposta contém a matriz routes
, em que cada elemento da matriz é do tipo Route.
Cada elemento da matriz representa um trajeto inteiro, da origem ao destino. A API sempre retorna pelo menos uma rota, chamada de rota padrão.
Você pode solicitar rotas adicionais. Se você solicitar um trajeto ecológico, a matriz poderá conter dois elementos: o trajeto padrão e o ecológico. Ou defina computeAlternativeRoutes
como true
na solicitação para adicionar até três rotas alternativas à resposta.
Cada rota na matriz é identificada pela propriedade de matriz routeLabels
:
Valor | Descrição |
---|---|
DEFAULT_ROUTE |
Identifica a rota padrão. |
FUEL_EFFICIENT |
Identifica o trajeto ecológico. |
DEFAULT_ROUTE_ALTERNATE |
indica um trajeto alternativo. |
A matriz legs
contém a definição de cada trecho do trajeto. As propriedades restantes, como distanceMeters
, duration
e polyline,
, contêm informações sobre a rota como um todo:
{ "routeLabels": [ enum (RouteLabel) ], "legs": [ { object (RouteLeg) } ], "distanceMeters": integer, "duration": string, "routeLabels": [string], "staticDuration": string, "polyline": { object (Polyline) }, "description": string, "warnings": [ string ], "viewport": { object (Viewport) }, "travelAdvisory": { object (RouteTravelAdvisory) } "routeToken": string }
Devido às condições de direção atuais e outros fatores, o trajeto padrão e o ecológico podem ser os mesmos. Nesse caso, a matriz routeLabels
contém os dois rótulos: DEFAULT_ROUTE
e FUEL_EFFICIENT
.
{ "routes": [ { "routeLabels": [ "DEFAULT_ROUTE", "FUEL_EFFICIENT" ], … } ] }
Entender a matriz de trechos
Cada route
na resposta contém uma matriz legs
, em que cada elemento de matriz legs
é do tipo RouteLeg.
Cada trecho na matriz define o caminho de um waypoint até o próximo ao longo do trajeto. Um trajeto sempre contém pelo menos um trecho.
A propriedade legs
contém a definição de cada etapa no trecho na matriz steps
. As propriedades restantes, como distanceMeters
, duration
e polyline
, contêm informações sobre o trecho.
{ "distanceMeters": integer, "duration": string, "staticDuration": string, "polyline": { object (Polyline) }, "startLocation": { object (Location) }, "endLocation": { object (Location) }, "steps": [ { object (RouteLegStep) } ], "travelAdvisory": { object (RouteLegTravelAdvisory) } }
Entender a matriz de etapas
Cada trecho na resposta contém uma matriz steps
, em que cada elemento de matriz steps
é do tipo RouteLegStep.
Uma etapa corresponde a uma única instrução no trecho. Um trecho sempre contém
pelo menos uma etapa.
Cada elemento na matriz steps
inclui a propriedade navigationInstruction
, do tipo NavigationInstruction, que contém a instrução da etapa. Exemplo:
"navigationInstruction": { "maneuver": "TURN_LEFT", "instructions": "Turn left toward Frontage Rd" }
O instructions
pode conter mais informações sobre a etapa. Exemplo:
"navigationInstruction": { "maneuver": "TURN_SLIGHT_LEFT", "instructions": "Slight left (signs for I-90 W/Worcester)nParts of this road may be closed at certain times or days" }
As outras propriedades da etapa descrevem informações sobre ela, como distanceMeters
, duration
e polyline
:
{ "distanceMeters": integer, "staticDuration": string, "polyline": { object (Polyline) }, "startLocation": { object (Location) }, "endLocation": { object (Location) }, "navigationInstruction": { object (NavigationInstruction) } }
Especifique o idioma das instruções da etapa
A API retorna informações de rota no idioma local, transliteradas para um script legível pelo usuário, se necessário, enquanto observa o idioma preferido. Todos os componentes de endereço são retornados no mesmo idioma.
Use o parâmetro
languageCode
de uma solicitação para definir explicitamente o idioma do trajeto na lista de idiomas compatíveis. O Google atualiza os idiomas compatíveis com frequência, portanto, essa lista pode não estar completa.Se um nome não estiver disponível no idioma especificado, a API usará a correspondência mais próxima.
O idioma especificado pode influenciar o conjunto de resultados que a API escolhe retornar e a ordem em que eles são retornados. O geocodificador interpreta abreviações de maneiras diferentes dependendo do idioma, como 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 para rua em húngaro.
Entender a matriz GeocodingResults
Para cada local na solicitação (origem, destino ou waypoint intermediário) especificado como uma string de endereço ou como um Plus Code, a API tenta encontrar o local mais relevante que tenha um ID de lugar correspondente. Cada elemento da matriz geocodingResults
contém o campo placeID
que contém o local como um ID de lugar e um campo type
especificando o tipo de local, como street_address
, premise
ou airport
.
A matriz geocodingResults
contém três campos:
origin
: se foi especificado como uma string de endereço ou um Plus Code, o ID de lugar da origem. Caso contrário, este campo será omitido da resposta.destination
: se foi especificado como uma string de endereço ou um Plus Code, o ID de lugar do destino. Caso contrário, esse campo será omitido da resposta.intermediates
: uma matriz que contém o ID de lugar de todos os waypoints intermediários especificados como uma string de endereço ou um Plus Code. Se você especificar um waypoint intermediário usando um ID de lugar ou coordenadas de latitude e longitude, ele será omitido da resposta. Use a propriedadeintermediateWaypointRequestIndex
na resposta para determinar qual waypoint intermediário na solicitação corresponde ao ID de lugar na resposta.
"geocodingResults": { "origin": { "geocoderStatus": {}, "type": [ enum (Type) ], "placeId": string }, "destination": { "geocoderStatus": {}, "type": [ enum (Type) ], "placeId": string }, "intermediates": [ { "geocoderStatus": {}, "intermediateWaypointRequestIndex": integer, "type": [ enum (Type) ], "placeId": string }, { "geocoderStatus": {}, "intermediateWaypointRequestIndex": integer, "type": [ enum (Type) ], "placeId": string } ] }
Entender os valores de resposta localizados
Os valores de resposta localizados são um campo de resposta extra que fornece texto localizado para valores de parâmetro retornados. O texto localizado é fornecido para duração da viagem, distância e sistema de unidades (métrica ou imperial). Você solicita valores localizados usando uma máscara de campo e pode especificar o idioma e o sistema de unidades ou usar os valores inferidos pela API. Para mais detalhes, consulte LocalizedValues.
Por exemplo, se você especificar um código de idioma para unidades alemãs (de) e imperiais,
receberá um valor para distanceMeters
de 49.889,7,
mas também um texto localizado que fornece essa medida de distância em unidades alemãs e
imperiais, ou seja, "31 Meile".
Veja um exemplo do que você veria para valores localizados:
{ "localized_values": { "distance": { "text": "31,0 Meile/n" }, "duration": { "text": 38 Minuten}. "static_duration": { "text": 36 Minuten}. } }
Se você não especificar o idioma ou o sistema de unidades, a API vai inferir o idioma e as unidades da seguinte maneira:
- O método
ComputeRoutes
infere as unidades de local e distância do waypoint de origem. Portanto, para uma solicitação de roteamento nos EUA, a API infere unidades de idiomaen-US
eIMPERIAL
. - O método
ComputeRouteMatrix
tem como padrão o idioma "en-US" e as unidades METRIC.