Obliczanie podsumowania wyznaczania trasy
Aby obliczyć czas podróży i odległość do każdego miejsca w odpowiedzi za pomocą wyszukiwania tekstowego (nowość) lub wyszukiwania w pobliżu (nowość):
-
W żądaniu przekaż parametr
RoutingParameters
, używającsetOrigin()
, aby określić współrzędne geograficzne punktu początkowego trasy. Ten parametr jest wymagany do obliczenia czasu trwania i odległości do każdego miejsca w odpowiedzi. -
Podczas tworzenia obiektu żądania dodaj
.setRoutingSummariesIncluded(true)
.
Korzystanie z wyszukiwania tekstowego (nowość)
W tym żądaniu obliczasz czas podróży i odległość do każdego miejsca w odpowiedzi na wyszukiwanie tekstowe (nowe):
// 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(); });
Klasa SearchByTextResponse
reprezentuje odpowiedź na żądanie wyszukiwania.
Aby zwrócić listę podsumowań routingu, możesz wywołać funkcję SearchByTextResponse.getRoutingSummaries()
.
Obiekt SearchByTextResponse
zawiera też:
- Lista obiektów
Place
, które reprezentują wszystkie pasujące miejsca. Każde pasujące miejsce jest reprezentowane przez jeden obiektPlace
. - Każdy obiekt
Place
zawiera tylko pola zdefiniowane na liście pól przekazanej w żądaniu.
Korzystanie z Wyszukiwania w pobliżu
W tym przykładzie obliczasz czas trwania podróży i odległość do każdego miejsca w odpowiedzi na zapytanie Nearby Search. W tym przykładzie wyszukiwane są restauracje w Sydney w Australii, a ograniczenie lokalizacji i miejsce rozpoczęcia trasy są ustawione na te same współrzędne geograficzne:
// 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(); });
Klasa SearchNearbyResponse
reprezentuje odpowiedź na żądanie wyszukiwania.
Aby zwrócić listę podsumowań routingu, możesz wywołać funkcję SearchNearbyResponse.getRoutingSummaries()
.
Obiekt SearchNearbyResponse
zawiera też:
- Lista obiektów
Place
reprezentujących wszystkie pasujące miejsca. Każde pasujące miejsce jest reprezentowane przez jeden obiektPlace
. - Każdy obiekt
Place
zawiera tylko pola zdefiniowane na liście pól przekazanej w żądaniu.
Nie musisz używać tych samych współrzędnych w przypadku ograniczenia lokalizacji i źródła routingu. Możesz na przykład ustawić ograniczenie lokalizacji na punkt środkowy Sydney, aby ograniczyć wyniki wyszukiwania do tego okręgu. Następnie ustawiasz punkt początkowy trasy na współrzędne swojego domu, czyli na inną lokalizację w okręgu wyszukiwania. W odpowiedzi na to żądanie wyniki wyszukiwania zostaną ograniczone do okręgu, a podsumowania tras zostaną obliczone na podstawie lokalizacji Twojego domu.
Określanie opcji podróży
Domyślnie obliczenia czasu trwania i odległości dotyczą samochodu. Możesz jednak określić typ pojazdu i inne opcje w wyszukiwaniu.
-
Użyj parametru
routingParameters.setTravelMode()
, aby ustawić środek transportu naDRIVE
,BICYCLE
,WALK
lubTWO_WHEELER
. Więcej informacji o tych opcjach znajdziesz w artykule Dostępne typy pojazdów na trasach. -
Użyj
routingParameters.setRoutingPreference()
, aby ustawić opcję preferencji routingu naTRAFFIC_UNAWARE
(domyślnie),TRAFFIC_AWARE
lubTRAFFIC_AWARE_OPTIMAL
. Każda opcja ma różny poziom jakości danych i opóźnienia. Więcej informacji znajdziesz w artykule Określanie, czy i jak uwzględniać dane o ruchu. -
Użyj parametru
routingParameters.setRouteModifiers()
, aby określićavoidTolls
,avoidHighways
,avoidFerries
iavoidIndoor
. Więcej informacji o tych opcjach znajdziesz w artykule Określanie funkcji trasy, których należy unikać.
W następnym przykładzie określasz środek transportu jako DRIVE
i wybierasz opcję unikania autostrad:
// 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(); });