Calculer le résumé de l'itinéraire
Pour utiliser Text Search (nouvelle version) ou Nearby Search (nouvelle version) afin de calculer la durée et la distance du trajet jusqu'à chaque lieu de la réponse :
-
Transmettez le paramètre
RoutingParametersdans la requête, en utilisantsetOrigin()pour spécifier les coordonnées de latitude et de longitude du point de départ de l'itinéraire. Ce paramètre est obligatoire pour calculer la durée et la distance jusqu'à chaque lieu de la réponse. -
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 et la distance du trajet jusqu'à chaque lieu de la réponse Text Search (nouvelle version) :
// 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 d'une requête de recherche.
Vous pouvez appeler SearchByTextResponse.getRoutingSummaries() pour renvoyer la liste des résumés d'itinéraire.
Un objet SearchByTextResponse contient également les éléments suivants :
- Une liste d'objets
Placequi représentent tous les lieux correspondants, avec un objetPlacepar lieu correspondant. - Chaque objet
Placene contient que les champs définis par la liste de champs transmise dans la requête.
Utiliser Nearby Search
Dans cet exemple, vous calculez la durée et la distance du trajet jusqu'à chaque lieu de la réponse Nearby Search. Cet exemple recherche des restaurants à Sydney, en Australie, et définit la restriction de lieu et le point de départ de l'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 renvoyer la liste des résumés d'itinéraire.
Un objet SearchNearbyResponse contient également les éléments suivants :
- Une liste d'objets
Placequi représentent tous les lieux correspondants, avec un objetPlacepar lieu correspondant. - Chaque
Placeobjet ne contient que les champs définis par la liste de champs transmise dans la requête.
Vous n'êtes pas obligé d'utiliser les mêmes coordonnées pour la restriction de lieu et le point de départ de l'itinéraire. Par exemple, vous définissez la restriction de lieu sur le point central de Sydney pour limiter les résultats de recherche à ce cercle. Vous définissez ensuite le point de départ de l'itinéraire sur les coordonnées de votre domicile, c'est-à-dire sur un autre lieu dans le cercle de recherche. La requête limite alors les résultats de recherche au cercle et calcule les résumés d'itinéraire en fonction de l'emplacement de votre domicile.
Spécifier les options de voyage
Par défaut, les calculs de durée et de distance concernent une voiture. Toutefois, vous pouvez contrôler le type de véhicule, ainsi que d'autres options, dans la recherche.
-
Utilisez
routingParameters.setTravelMode()pour définir le mode de transport surDRIVE,BICYCLE,WALK, ouTWO_WHEELER. Pour en savoir plus sur ces options, consultez Types de véhicules disponibles pour les itinéraires. -
Utilisez
routingParameters.setRoutingPreference()pour définir l'option de préférence d'itinéraire surTRAFFIC_UNAWARE(par défaut),TRAFFIC_AWAREouTRAFFIC_AWARE_OPTIMAL. Chaque option présente des niveaux de qualité et de latence des données différents. Pour en savoir plus, consultez Spécifier comment et si inclure des données sur le trafic. -
Utilisez
routingParameters.setRouteModifiers()pour spécifieravoidTolls,avoidHighways,avoidFerries, etavoidIndoor. Pour en savoir plus sur ces options, consultez Spécifier les caractéristiques d'itinéraire à éviter.
Dans l'exemple suivant, vous spécifiez le mode de transport 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(); });