Calcolare il riepilogo del routing
Per utilizzare Ricerca testuale (nuova) o Nearby Search (nuova) per calcolare la durata e la distanza del viaggio da ogni luogo nella risposta:
-
Trasmetti il parametro
RoutingParametersnella richiesta, utilizzandosetOrigin()per specificare le coordinate di latitudine e longitudine dell'origine del routing origin. Questo parametro è obbligatorio per calcolare la durata e la distanza da ogni luogo nella risposta. -
Quando crei l'oggetto della richiesta, aggiungi
.setRoutingSummariesIncluded(true).
Utilizzare Ricerca testuale (nuova)
Nella seguente richiesta, calcoli la durata e la distanza del viaggio da ogni luogo nella risposta di Ricerca testuale (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 del routing.
Un oggetto SearchByTextResponse contiene anche:
- Un elenco di oggetti
Placeche rappresentano tutti i luoghi corrispondenti, con un oggettoPlaceper ogni luogo corrispondente. - Ogni oggetto
Placecontiene solo i campi definiti dall'elenco di campi passato nella richiesta.
Utilizzare Ricerca nelle vicinanze
In questo esempio, calcoli la durata e la distanza del viaggio da ogni luogo nella risposta di Nearby Search. Questo esempio cerca ristoranti a Sydney, in Australia, e imposta la limitazione della località e l'origine del routing 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 del routing.
Un oggetto SearchNearbyResponse contiene anche:
- Un elenco di oggetti
Placeche rappresentano tutti i luoghi corrispondenti, con un oggettoPlaceper ogni luogo corrispondente. - Ogni oggetto
Placecontiene solo i campi definiti dall'elenco di campi passato 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. Tuttavia, imposti l'origine del routing 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 del routing in base alla posizione della tua casa.
Specificare le opzioni di viaggio
Per impostazione predefinita, i calcoli di durata e distanza sono per 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 livelli variabili di qualità dei dati e latenza. Per ulteriori informazioni, vedi Specificare se e come includere i dati sul traffico data. -
Utilizza
routingParameters.setRouteModifiers()per specificareavoidTolls,avoidHighways,avoidFerrieseavoidIndoor. Per ulteriori informazioni su queste opzioni, vedi Specificare le caratteristiche del percorso da evitare.
Nell'esempio seguente, specifichi la modalità di viaggio come DRIVE e per 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(); });