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:
-
Transmettez le paramètre
RoutingParameters
dans la requête, à l'aide desetOrigin()
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. -
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 objetPlace
par lieu correspondant. - Chaque objet
Place
ne 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 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 objetPlace
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.
-
Utilisez
routingParameters.setTravelMode()
pour définir le mode de transport surDRIVE
,BICYCLE
,WALK
ouTWO_WHEELER
. Pour en savoir plus sur ces options, consultez la section Types de véhicules disponibles pour les itinéraires. -
Utilisez
routingParameters.setRoutingPreference()
pour définir l'option de préférence de routage surTRAFFIC_UNAWARE
(par défaut),TRAFFIC_AWARE
ouTRAFFIC_AWARE_OPTIMAL
. Chaque option présente des niveaux variables de qualité des données et de latence. 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 la section Spécifier les éléments géographiques de route à éviter.
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(); });