Calcular o resumo do trajeto
Para usar a Text Search (novo) ou a Nearby Search (novo) e 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 do trajeto. Esse parâmetro é necessário para calcular a duração e a distância até cada lugar na resposta. -
Ao criar o objeto de solicitação, adicione
.setRoutingSummariesIncluded(true)
.
Usar a pesquisa por texto (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 (novo):
// 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 rotas.
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 por proximidade. Este exemplo pesquisa restaurantes em Sydney, na Austrália, e define a restrição de local e a origem do trajeto 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 rotas.
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 trajeto. Por exemplo, defina a restrição de locais para o ponto central de Sydney e restrinja os resultados da pesquisa a esse círculo. Mas você define a origem do trajeto para as coordenadas da sua casa, ou seja, para um local diferente dentro do círculo de pesquisa. Em seguida, a solicitação restringe os resultados da pesquisa ao círculo e calcula os resumos de rotas 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, além de 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 rotas. -
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 diferentes de qualidade de dados e latência. 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 para evitar.
No exemplo a seguir, 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(); });