Calcula el resumen de enrutamiento
Para usar Text Search (nueva) o Nearby Search (nueva) para calcular la duración del viaje y la distancia a cada lugar de la respuesta, haz lo siguiente:
-
Pasa el parámetro
RoutingParameters
en la solicitud y usasetOrigin()
para especificar las coordenadas de latitud y longitud del origen de planificación de ruta. Este parámetro es obligatorio para calcular la duración y la distancia a cada lugar en la respuesta. -
Cuando compiles el objeto de solicitud, agrega
.setRoutingSummariesIncluded(true)
.
Cómo usar Text Search (nueva)
En la siguiente solicitud, calculas la duración del viaje y la distancia a cada lugar en la respuesta de Text Search (nuevo):
// 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(); });
La clase SearchByTextResponse
representa la respuesta de una solicitud de búsqueda.
Puedes llamar a SearchByTextResponse.getRoutingSummaries()
para mostrar la lista de resúmenes de enrutamiento.
Un objeto SearchByTextResponse
también contiene lo siguiente:
- Es una lista de objetos
Place
que representan todos los lugares coincidentes, con un objetoPlace
por lugar coincidente. - Cada objeto
Place
solo contiene los campos definidos por la lista de campos que se pasa en la solicitud.
Cómo usar Nearby Search
En este ejemplo, calculas la duración del viaje y la distancia a cada lugar en la respuesta de la Búsqueda cercana. En este ejemplo, se buscan restaurantes en Sídney, Australia, y se establece la restricción de ubicación y el origen de planificación de ruta en la misma coordenada de latitud y longitud:
// 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(); });
La clase SearchNearbyResponse
representa la respuesta de una solicitud de búsqueda.
Puedes llamar a SearchNearbyResponse.getRoutingSummaries()
para mostrar la lista de resúmenes de enrutamiento.
Un objeto SearchNearbyResponse
también contiene lo siguiente:
- Es una lista de objetos
Place
que representan todos los lugares coincidentes, con un objetoPlace
por lugar coincidente. - Cada objeto
Place
solo contiene los campos definidos por la lista de campos que se pasó en la solicitud.
No es necesario que uses las mismas coordenadas para la restricción de ubicación y para el origen de enrutamiento. Por ejemplo, estableces la restricción de ubicaciones en el punto central de Sydney para restringir los resultados de la búsqueda a ese círculo. Sin embargo, luego estableces el origen del enrutamiento en las coordenadas de tu casa, es decir, en una ubicación diferente dentro del círculo de búsqueda. Luego, la solicitud restringe los resultados de la búsqueda al círculo y calcula los resúmenes de planificación de ruta en función de la ubicación de tu casa.
Especifica las opciones de viaje
De forma predeterminada, los cálculos de duración y distancia son para un automóvil. Sin embargo, puedes controlar el tipo de vehículo, así como otras opciones, en la búsqueda.
-
Usa
routingParameters.setTravelMode()
para establecer el modo de transporte enDRIVE
,BICYCLE
,WALK
oTWO_WHEELER
. Para obtener más información sobre estas opciones, consulta Tipos de vehículos disponibles para las rutas. -
Usa
routingParameters.setRoutingPreference()
para establecer la opción de preferencia de enrutamiento enTRAFFIC_UNAWARE
(predeterminada),TRAFFIC_AWARE
oTRAFFIC_AWARE_OPTIMAL
. Cada opción tiene diferentes niveles de calidad de los datos y latencia. Para obtener más información, consulta Cómo especificar si se incluyen datos de tráfico y cómo hacerlo. -
Usa
routingParameters.setRouteModifiers()
para especificaravoidTolls
,avoidHighways
,avoidFerries
yavoidIndoor
. Para obtener más información sobre estas opciones, consulta Especifica las características de la ruta que se deben evitar.
En el siguiente ejemplo, especificas el modo de viaje como DRIVE
y evitar las autopistas:
// 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(); });