Calculer le résumé du routage

Pour utiliser Text Search (nouvelle version) ou Nearby Search (nouvelle version) afin de calculer la durée du trajet et la distance jusqu'à chaque lieu dans la réponse:

  1. Transmettez le paramètre RoutingParameters dans la requête, à l'aide de setOrigin() pour spécifier les coordonnées de latitude et de longitude de l'origine du calcul d'itinéraire. Ce paramètre est obligatoire pour calculer la durée et la distance de chaque lieu dans la réponse.

  2. Lorsque vous créez l'objet de requête, ajoutez .setRoutingSummariesIncluded(true).

Utiliser Text Search (nouvelle version)

Dans la requête suivante, vous calculez la durée du trajet et la distance jusqu'à chaque lieu dans la réponse Text Search (New) :

// 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 classe SearchByTextResponse représente la réponse à une requête de recherche. Vous pouvez appeler SearchByTextResponse.getRoutingSummaries() pour obtenir la liste des résumés de l'itinéraire. Un objet SearchByTextResponse contient également:

  • Liste d'objets Place représentant tous les lieux correspondants, avec un objet Place par lieu correspondant.
  • Chaque objet Place ne contient que les champs définis par la liste de champs transmise dans la requête.

Dans cet exemple, vous calculez la durée du trajet et la distance à chaque lieu dans la réponse de la recherche à proximité. Cet exemple recherche des restaurants à Sydney, en Australie, et définit la restriction de zone géographique et l'origine du calcul d'itinéraire sur les mêmes coordonnées de latitude et de 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();
    });

La classe SearchNearbyResponse représente la réponse d'une requête de recherche. Vous pouvez appeler SearchNearbyResponse.getRoutingSummaries() pour obtenir la liste des résumés de l'itinéraire. Un objet SearchNearbyResponse contient également:

  • Liste d'objets Place représentant tous les lieux correspondants, avec un objet Place par lieu correspondant.
  • Chaque objet Place ne contient que les champs définis par la liste de champs transmise dans la requête.

Vous n'avez pas besoin d'utiliser les mêmes coordonnées pour la restriction de zone géographique et pour l'origine du calcul d'itinéraire. Par exemple, vous définissez la restriction d'emplacement sur le point central de Sydney pour limiter les résultats de recherche à ce cercle. Vous définissez ensuite l'origine du calcul d'itinéraire sur les coordonnées de votre maison, c'est-à-dire sur un autre emplacement dans le cercle de recherche. La requête limite ensuite les résultats de recherche au cercle et calcule les résumés des itinéraires en fonction de l'emplacement de votre maison.

Indiquer les options de transport

Par défaut, les calculs de durée et de distance sont effectués pour une voiture. Toutefois, vous pouvez contrôler le type de véhicule, ainsi que d'autres options, dans la recherche.

Dans l'exemple suivant, vous spécifiez le mode de déplacement comme DRIVE et évitez les autoroutes:

// 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();
    });