Calcular o resumo do roteamento
Para usar o Text Search (novo) ou o Nearby Search (novo) para calcular a duração e a distância da viagem até cada lugar na resposta:
-
Transmita o parâmetro
routingParameters.origin
na solicitação para especificar as coordenadas de latitude e longitude da origem do roteamento. Esse parâmetro é necessário para calcular a duração e a distância de cada lugar na resposta. -
Inclua
routingSummaries
na máscara de campo para que a resposta inclua a matrizroutingSummaries
. Essa matriz contém a duração e a distância da origem do roteamento até cada lugar na resposta.
Usar o Text Search (novo)
Na solicitação a seguir, você calcula a duração e a distância da viagem até cada lugar na resposta da pesquisa de texto (nova):
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia", "routingParameters": { "origin": { "latitude": -33.8688, "longitude": 151.1957362 } } }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \ 'https://places.googleapis.com/v1/places:searchText'
A resposta contém duas matrizes JSON: a matriz places
contém os lugares correspondentes e a matriz routingSummaries
contém a duração e a distância para viajar até cada lugar:
{ "places": [ { object (Place) } ] "routingSummaries": [ { object (RoutingSummary) } }
Cada elemento na matriz routingSummaries
está no local de matriz
correspondente como o lugar na matriz places
. Ou seja, o elemento em
routingSummaries[0]
corresponde ao lugar em places[0]
.
O comprimento da matriz de routingSummaries
é igual ao comprimento da matriz de
places
. Se o routingSummary
de um lugar não estiver disponível,
a entrada da matriz vai estar vazia.
Como este exemplo calcula a duração e a distância da origem do roteamento para cada lugar, o campo routingSummaries.legs
na resposta contém um único objeto Leg
que contém o duration
e o distanceMeters
da origem do roteamento para o lugar.
{ "places": [ { "formattedAddress": "1, Westfield Sydney Central Plaza, 450 George St, Sydney NSW 2000, Australia", "displayName": { "text": "Gözleme King Sydney", "languageCode": "en" } }, { "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia", "priceLevel": "PRICE_LEVEL_MODERATE", "displayName": { "text": "Mother Chu's Vegetarian Kitchen", "languageCode": "en" } }, … ] "routingSummaries": [ { "legs": [ { "duration": "597s", "distanceMeters": 2607 } ], "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3fa97cd745:0x6aecf365bf497c08!3e0" }, { "legs": [ { "duration": "562s", "distanceMeters": 2345 } ], "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3da97f60c1:0x845f3273bd764f6c!3e0" }, … ] }
Neste exemplo, você pode conferir que a duração e a distância da origem do roteamento até o primeiro lugar nos resultados são 597 segundos e 2.607 metros.
Usar o Nearby Search
Neste exemplo, você calcula a duração e a distância da viagem até cada lugar na resposta da Pesquisa nas proximidades. Este exemplo pesquisa restaurantes em Sydney, Austrália, e define a restrição de local e a origem do roteamento para a mesma coordenada de latitude e longitude:
curl -X POST -d '{ "includedTypes": ["restaurant"], "maxResultCount": 10, "locationRestriction": { "circle": { "center": { "latitude": -33.8688, "longitude": 151.1957362}, "radius": 500.0 } }, "routingParameters": { "origin": { "latitude": -33.8688, "longitude": 151.1957362 } } }' \ -H 'Content-Type: application/json' -H "X-Goog-Api-Key:API_KEY" \ -H "X-Goog-FieldMask: places.displayName,routingSummaries" \ https://places.googleapis.com/v1/places:searchNearby
Não é necessário usar as mesmas coordenadas para o locationRestriction
e a origem do roteamento. Por exemplo, você define o locationRestriction
como o ponto central de Sydney para enviesar os resultados da pesquisa para esse círculo. Mas você definiu a origem do trajeto como as coordenadas da sua casa, ou seja, um local diferente dentro do círculo de pesquisa. A solicitação, então, distorce os resultados da pesquisa para o
círculo e calcula os resumos de roteamento com base na localização da sua
casa.
Especificar opções de viagem
Por padrão, os cálculos de duração e distância são para um carro. No entanto, você pode controlar o tipo de veículo, bem como outras opções, na pesquisa.
-
Use o parâmetro
routingParameters.travelMode
para definir o modo de transporte comoDRIVE
,BICYCLE
,WALK
ouTWO_WHEELER
. Para mais informações sobre essas opções, consulte Tipos de veículos disponíveis para trajetos. -
Use a propriedade
routingParameters.routingPreference
para definir a opção de preferência de roteamento comoTRAFFIC_UNAWARE
(padrão),TRAFFIC_AWARE
ouTRAFFIC_AWARE_OPTIMAL
. Cada opção tem níveis variáveis de qualidade e latência dos dados. Para mais informações, consulte Especificar como e se incluir dados de tráfego.A propriedade
routingParameters.routingPreference
afeta as rotas contidas no campodirectionsUri
da prévia (pré-GA), porque o Google Maps mostra as opções de trânsito quando abre o link. -
Use a propriedade
routingParameters.routeModifiers
para especificaravoidTolls
,avoidHighways
,avoidFerries
eavoidIndoor
. Para mais informações sobre essas opções, consulte Especificar recursos de rota a serem evitados.
No próximo exemplo, você especifica o modo de viagem como DRIVE
e evita
rodovias:
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia", "routingParameters": { "origin": { "latitude": -33.8688, "longitude": 151.1957362 }, "travelMode":"DRIVE", "routeModifiers": { "avoidHighways": true } } }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \ 'https://places.googleapis.com/v1/places:searchText'