Calcolare il riepilogo del calcolo del percorso
Per utilizzare la ricerca di testo (novità) o la ricerca nelle vicinanze (novità) per calcolare la durata del viaggio e la distanza da ciascun luogo nella risposta:
-
Passa il parametro
RoutingParameters
nella richiesta, utilizzandosetOrigin()
per specificare le coordinate di latitudine e longitudine dell'origine del calcolo itinerario. Questo parametro è necessario per calcolare la durata e la distanza di ogni luogo nella risposta. -
Quando crei l'oggetto della richiesta, aggiungi
.setRoutingSummariesIncluded(true)
.
Utilizzare la ricerca di testo (novità)
Nella richiesta seguente, calcoli la durata del viaggio e la distanza da ogni luogo nella risposta di Ricerca di testo (nuova):
// 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
rappresenta la risposta a una richiesta di ricerca.
Puoi chiamare SearchByTextResponse.getRoutingSummaries()
per restituire l'elenco dei riepiloghi di routing.
Un oggetto SearchByTextResponse
contiene anche:
- Un elenco di oggetti
Place
che rappresentano tutti i luoghi corrispondenti, con un oggettoPlace
per ogni luogo corrispondente. - Ogni oggetto
Place
contiene solo i campi definiti dall'elenco di campi passato nella richiesta.
Utilizzare la ricerca nelle vicinanze
In questo esempio, calcoli la durata del viaggio e la distanza da ogni luogo nella risposta della Ricerca nelle vicinanze. Questo esempio cerca ristoranti a Sydney, Australia e imposta la limitazione della località e l'origine del percorso sulle stesse coordinate di latitudine e longitudine:
// 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
rappresenta la risposta a una richiesta di ricerca.
Puoi chiamare SearchNearbyResponse.getRoutingSummaries()
per restituire l'elenco dei riepiloghi di routing.
Un oggetto SearchNearbyResponse
contiene anche:
- Un elenco di oggetti
Place
che rappresentano tutti i luoghi corrispondenti, con un oggettoPlace
per ogni luogo corrispondente. - Ogni oggetto
Place
contiene solo i campi definiti dall'elenco di campi passato nella richiesta.
Non è necessario utilizzare le stesse coordinate per la limitazione di località e per l'origine del routing. Ad esempio, puoi impostare la limitazione delle località sul centro di Sydney per limitare i risultati di ricerca a quel cerchio. Tuttavia, imposti l'origine del percorso sulle coordinate della tua casa, ovvero su una località diversa all'interno del cerchio di ricerca. La richiesta limita quindi i risultati di ricerca al cerchio e calcola i riepiloghi dei percorsi in base alla posizione della tua casa.
Specificare le opzioni di viaggio
Per impostazione predefinita, i calcoli di durata e distanza si riferiscono a un'auto. Tuttavia, puoi controllare il tipo di veicolo, oltre ad altre opzioni, nella ricerca.
-
Usa
routingParameters.setTravelMode()
per impostare la modalità di trasporto suDRIVE
,BICYCLE
,WALK
oTWO_WHEELER
. Per ulteriori informazioni su queste opzioni, consulta la sezione Tipi di veicoli disponibili per le route. -
Utilizza
routingParameters.setRoutingPreference()
per impostare l'opzione di preferenza di routing suTRAFFIC_UNAWARE
(predefinito),TRAFFIC_AWARE
oTRAFFIC_AWARE_OPTIMAL
. Ogni opzione presenta livelli diversi di qualità e latenza dei dati. Per saperne di più, consulta Specificare come e se includere i dati sul traffico. -
Utilizza
routingParameters.setRouteModifiers()
per specificareavoidTolls
,avoidHighways
,avoidFerries
eavoidIndoor
. Per ulteriori informazioni su queste opzioni, consulta la sezione Specificare elementi del percorso da evitare.
Nell'esempio seguente, specifichi la modalità di viaggio come DRIVE
e di evitare le autostrade:
// 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(); });