Um trajeto é um caminho navegável entre um local de partida (origem) e um local de chegada (destino). Você pode escolher uma rota para diferentes meios de transporte, como a pé, de bicicleta ou diferentes tipos de veículos. Você também pode pedir detalhes do trajeto, como distância, tempo estimado para navegar, pedágios esperados e instruções detalhadas.
Chame o método computeRoutes()
para solicitar um trajeto entre dois locais. O exemplo a seguir mostra como definir uma solicitação e chamar computeRoutes()
para receber uma rota.
// Import the Routes library. const { Route } = await google.maps.importLibrary('routes'); // Define a computeRoutes request. const request = { origin: 'Mountain View, CA', destination: 'San Francisco, CA', }; // Call the computeRoutes() method to get routes. const {routes} = await Route.computeRoutes(request);
Escolher os campos que serão retornados
Ao solicitar uma rota, use uma máscara de campo para especificar quais informações a resposta deve retornar. É possível especificar os nomes das propriedades da classe Route na máscara de campo.
O uso de uma máscara de campo também garante que você não solicite dados desnecessários, o que ajuda na latência de resposta e evita o retorno de informações que seu sistema não precisa.
Especifique a lista de campos necessários definindo a propriedade
ComputeRoutesRequest.fields
, conforme mostrado no snippet a seguir:
// Define a routes request. const request = { origin: 'Mountain View, CA', destination: 'San Francisco, CA', fields: ['path'], // Request fields needed to draw polylines. };
Especificar locais para uma rota
Para calcular um trajeto, é necessário especificar pelo menos os locais de origem e destino, além de uma máscara de campo. Você também pode especificar pontos de referência intermediários ao longo de um trajeto e usar pontos de referência para fazer outras coisas, como adicionar paradas ou pontos de passagem ao longo de um trajeto.
Em ComputeRoutesRequest
, é possível especificar um local de uma das seguintes
maneiras:
- Lugar (preferencial)
- Coordenadas de latitude/longitude
- String de endereço ("Chicago, IL" ou "Darwin, NT, Austrália")
- Plus Code
Você pode especificar locais para todos os pontos de referência em uma solicitação da mesma forma ou misturá-los. Por exemplo, você pode usar coordenadas de latitude/longitude para o ponto de referência de origem e um objeto Place para o ponto de referência de destino.
Para eficiência e precisão, use objetos Place em vez de coordenadas de latitude/longitude ou strings de endereço. Os IDs de lugar são explicitamente exclusivos e oferecem benefícios de geocodificação para roteamento, como pontos de acesso e variáveis de tráfego. Elas ajudam a evitar as seguintes situações que podem resultar de outras formas de especificar um local:
- Usar coordenadas de latitude/longitude pode fazer com que o local seja ajustado à via mais próxima, que talvez não seja um ponto de acesso à propriedade ou até mesmo uma via que leve ao destino de forma rápida ou segura.
- As strings de endereço precisam ser geocodificadas pela API Routes para serem convertidas em coordenadas de latitude/longitude antes de calcular um trajeto. Essa conversão pode afetar a performance.
Especificar um local como um objeto Place (preferencial)
Para especificar um local usando um lugar, crie uma nova instância Place
. O snippet a seguir mostra a criação de novas instâncias de Place
para origin
e destination
e, em seguida, o uso delas em um ComputeRoutesRequest
:
// Create a new Place for the origin. const originPlace = new Place({ id: 'ChIJiQHsW0m3j4ARm69rRkrUF3w', // Mountain View, CA }); // Create a new Place for the destination. const destinationPlace = new Place({ id: 'ChIJIQBpAG2ahYAR_6128GcTUEo', // San Francisco, CA }); // Define a computeRoutes request. const request = { origin: originPlace, destination: destinationPlace, fields: ['path'], };
Coordenadas de latitude/longitude
Para especificar um local como coordenadas de latitude/longitude, crie uma nova instância de google.maps.LatLngLiteral
, google.maps.LatLngAltitude
ou google.maps.LatLngAltitudeLiteral
. O snippet a seguir mostra a criação de
novas instâncias de google.maps.LatLngLiteral
para origin
e destination
,
e depois o uso delas em um computeRoutesRequest
:
// Create new LatLngLiteral objects for the origin and destination. // Mountain View, CA const originLatLng = {lat: 37.422000, lng: -122.084058}; // San Francisco, CA const destinationLatLng = {lat: 37.774929, lng: -122.419415}; // Define a computeRoutes request. const request = { origin: originLatLng, destination: destinationLatLng, fields: ['path'], };
String de endereço
As strings de endereço são endereços literais representados por uma string (como "1600 Amphitheatre Parkway, Mountain View, CA"). A geocodificação é o processo de converter uma string de endereço em coordenadas de latitude e longitude (como latitude 37.423021 e longitude -122.083739).
Quando você transmite uma string de endereço como o local de um ponto de referência, a biblioteca Routes faz a geocodificação interna da string para convertê-la em coordenadas de latitude e longitude.
O snippet a seguir mostra a criação de um ComputeRoutesRequest
com uma string de endereço para origin
e destination
:
// Define a computeRoutes request. const request = { origin: '1600 Amphitheatre Parkway, Mountain View, CA', destination: '345 Spear Street, San Francisco, CA', fields: ['path'], };
Defina a região do endereço
Se você transmitir uma string de endereço incompleta como o local de um ponto de parada, a API poderá usar as coordenadas de latitude/longitude geocodificadas erradas. Por exemplo, você faz uma solicitação especificando "Toledo" como a origem e "Madrid" como o destino de um trajeto de carro:
// Define a request with an incomplete address string. const request = { origin: 'Toledo', destination: 'Madrid', };
Neste exemplo, "Toledo" é interpretada como uma cidade no estado de Ohio, nos Estados Unidos, e não na Espanha. Portanto, a solicitação retorna uma matriz vazia, o que significa que não há rotas.
É possível configurar a API para retornar resultados direcionados a uma região específica incluindo o parâmetro regionCode. Esse parâmetro especifica o código regional como um valor de dois caracteres 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").
Uma solicitação de rotas de "Toledo" para "Madri" que inclui o parâmetro regionCode retorna resultados adequados porque "Toledo" é interpretada como uma cidade na Espanha:
const request = { origin: 'Toledo', destination: 'Madrid', region: 'es', // Specify the region code for Spain. };
Plus Code
Muitas pessoas não têm um endereço preciso, o que dificulta o recebimento de entregas. Ou, pessoas com um endereço podem preferir receber entregas em locais mais específicos, como uma entrada dos fundos ou um cais de carga.
O Plus Code é como um endereço para pessoas ou lugares que não têm um endereço físico. Em vez de nomes de rua, os Plus Codes têm como base coordenadas de latitude/longitude e são exibidos como números e letras.
O Google desenvolveu os Plus Codes para oferecer o benefício dos endereços a todos. Um plus code é uma referência de local codificada, derivada de coordenadas de latitude/longitude, que representa uma área: 1/8000 de um grau por 1/8000 de um grau (aproximadamente 14m x 14m na Linha do Equador) ou menor. Você pode usar os Plus Codes em vez de endereços nos lugares em que não existem, ou seja, quando os imóveis não estão numerados ou as ruas não têm nome.
Os Plus Codes precisam ser formatados como um código global ou um código composto:
- O código global é composto por um código de área com quatro caracteres e um código local com, pelo menos, seis caracteres. Por exemplo, para o endereço "1600 Amphitheatre Parkway, Mountain View, CA", o código global é "849V" e o local é "CWC8+R9". Em seguida, use o código de 10 caracteres para especificar o valor do local como "849VCWC8+R9".
- O código composto é formado por um código local com, pelo menos, seis caracteres combinado com um local explícito. Por exemplo, o endereço "450 Serra Mall, Stanford, CA 94305, EUA" tem um código local "CRHJ+C3". Para um endereço composto, combine o código local com a cidade, o estado, o CEP e o país no formato "CRHJ+C3 Stanford, CA 94305, EUA".
O snippet a seguir mostra como calcular um trajeto especificando um ponto de referência para a origem e o destino usando Plus Codes:
const request = { origin: '849VCWC8+R9', // Mountain View, CA destination: 'CRHJ+C3 Stanford, CA 94305, USA', // Stanford, CA fields: ['path'], };