Calcolare il riepilogo del routing
Per utilizzare Ricerca di testo (nuova) o Ricerca nelle vicinanze (nuova) per calcolare la durata e la distanza del viaggio verso ogni luogo nella risposta:
-
Trasmetti il parametro
RoutingParameters
nella richiesta utilizzandosetOrigin()
per specificare le coordinate di latitudine e longitudine dell'origine dell'itinerario. Questo parametro è necessario per calcolare la durata e la distanza da ogni luogo nella risposta. -
Quando crei l'oggetto richiesta, aggiungi
.setRoutingSummariesIncluded(true)
.
Utilizzare la ricerca testuale (novità)
Nella seguente richiesta, calcoli la durata e la distanza del viaggio per ogni luogo nella risposta di 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
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 Nearby Search
In questo esempio, calcoli la durata e la distanza del viaggio per ogni luogo nella risposta della ricerca nelle vicinanze. Questo esempio cerca ristoranti a Sydney, in Australia, e imposta la limitazione della località e l'origine del percorso sulla stessa coordinata 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 dei campi trasmesso nella richiesta.
Non devi utilizzare le stesse coordinate per la limitazione della località e per l'origine del routing. Ad esempio, imposti la limitazione delle località sul punto centrale di Sydney per limitare i risultati di ricerca a quel cerchio. ma poi imposti l'origine dell'itinerario sulle coordinate della tua casa, ovvero su una posizione diversa all'interno del cerchio di ricerca. La richiesta limita quindi i risultati di ricerca al cerchio e calcola i riepiloghi dell'itinerario 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, nonché altre opzioni, nella ricerca.
-
Utilizza
routingParameters.setTravelMode()
per impostare la modalità di trasporto suDRIVE
,BICYCLE
,WALK
oTWO_WHEELER
. Per ulteriori informazioni su queste opzioni, vedi Tipi di veicoli disponibili per i percorsi. -
Utilizza
routingParameters.setRoutingPreference()
per impostare l'opzione di preferenza di routing suTRAFFIC_UNAWARE
(impostazione predefinita),TRAFFIC_AWARE
oTRAFFIC_AWARE_OPTIMAL
. Ogni opzione ha diversi livelli di qualità dei dati e latenza. Per maggiori informazioni, vedi Specificare come e se includere i dati sul traffico. -
Utilizza
routingParameters.setRouteModifiers()
per specificareavoidTolls
,avoidHighways
,avoidFerries
eavoidIndoor
. Per ulteriori informazioni su queste opzioni, vedi Specificare le caratteristiche del percorso da evitare.
Nell'esempio successivo, 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(); });