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
na solicitação usandosetOrigin()
para especificar as coordenadas de latitude e longitude da origem de roteamento. Esse parâmetro é necessário para calcular a duração e a distância de cada lugar na resposta. -
Ao criar o objeto de solicitação, adicione
.setRoutingSummariesIncluded(true)
.
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):
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
A classe SearchByTextResponse
representa a resposta de uma solicitação de pesquisa.
Chame SearchByTextResponse.getRoutingSummaries()
para retornar a lista de resumos de roteamento.
Um objeto SearchByTextResponse
também contém:
- Uma lista de objetos
Place
que representam todos os lugares correspondentes, com um objetoPlace
por lugar correspondente. - Cada objeto
Place
contém apenas os campos definidos pela lista de campos transmitida na solicitação.
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:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the search area as a 500 meter diameter circle in Sydney, Australia. LatLng center = new LatLng(-33.8688, 151.1957362); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 500); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .build(); // Use the builder to create a SearchNearbyRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchNearbyRequest searchNearbyRequest = SearchNearbyRequest.builder(/* location restriction = */ circle, placeFields) .setIncludedTypes(includedTypes) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchNearby() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchNearby(searchNearbyRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = response.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });
A classe SearchNearbyResponse
representa a resposta de uma solicitação de pesquisa.
Chame SearchNearbyResponse.getRoutingSummaries()
para retornar a lista de resumos de roteamento.
Um objeto SearchNearbyResponse
também contém:
- Uma lista de objetos
Place
que representam todos os lugares correspondentes, com um objetoPlace
por lugar correspondente. - Cada objeto
Place
contém apenas os campos definidos pela lista de campos transmitida na solicitação.
Não é necessário usar as mesmas coordenadas para a restrição de local e a origem do roteamento. Por exemplo, você define a restrição de locais como o ponto central de Sydney para restringir os resultados da pesquisa a esse círculo. Mas você definiu a origem do roteamento como as coordenadas da sua casa, ou seja, um local diferente dentro do círculo de pesquisa. A solicitação restringe os resultados da pesquisa ao 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
routingParameters.setTravelMode()
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
routingParameters.setRoutingPreference()
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. -
Use
routingParameters.setRouteModifiers()
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:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define the routing modifiers object. RouteModifiers routeModifiers = RouteModifiers.builder() .setAvoidHighways(true) .build(); // Define the routing parameters object and pass the routing origin. RoutingParameters routingParameters = RoutingParameters.builder() .setOrigin(toLatLng("-33.8688, 151.1957362")) .setTravelMode(DRIVE) .setRouteModifiers(routeModifiers) .build(); // Use the builder to create a SearchByTextRequest object and pass the routing parameters. // Set setRoutingSummariesIncluded to true. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food in Sydney, Australia", placeFields) .setMaxResultCount(10) .setRoutingParameters(routingParameters) .setRoutingSummariesIncluded(true) .build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned Lists of Place objects, RoutingSummary objects, and Leg objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); List<RoutingSummary> routingSummaries = result.getRoutingSummaries(); List<Leg> legs = routingSummaries.get(0).getLegs(); Duration duration = legs.get(0).getDuration(); });