Hitung ringkasan pemilihan rute
Untuk menggunakan Text Search (Baru) atau Nearby Search (Baru) guna menghitung durasi perjalanan dan jarak ke setiap tempat dalam respons:
-
Teruskan parameter
RoutingParameters
dalam permintaan, menggunakansetOrigin()
untuk menentukan koordinat lintang dan bujur asal pemilihan rute. Parameter ini diperlukan untuk menghitung durasi dan jarak ke setiap tempat dalam respons. -
Saat mem-build objek permintaan, tambahkan
.setRoutingSummariesIncluded(true)
.
Menggunakan Text Search (Baru)
Dalam permintaan berikut, Anda menghitung durasi perjalanan dan jarak ke setiap tempat dalam respons 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(); });
Class SearchByTextResponse
mewakili respons dari permintaan penelusuran.
Anda dapat memanggil SearchByTextResponse.getRoutingSummaries()
untuk menampilkan daftar ringkasan perutean.
Objek SearchByTextResponse
juga berisi:
- Daftar objek
Place
yang mewakili semua tempat yang cocok, dengan satu objekPlace
per tempat yang cocok. - Setiap objek
Place
hanya berisi kolom yang ditentukan oleh daftar kolom yang diteruskan dalam permintaan.
Menggunakan Nearby Search
Dalam contoh ini, Anda menghitung durasi perjalanan dan jarak ke setiap tempat dalam respons Penelusuran Langsung. Contoh ini menelusuri restoran di Sydney, Australia, dan menetapkan batasan lokasi serta asal pemilihan rute ke koordinat lintang dan bujur yang sama:
// 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(); });
Class SearchNearbyResponse
mewakili respons dari permintaan penelusuran.
Anda dapat memanggil SearchNearbyResponse.getRoutingSummaries()
untuk menampilkan daftar ringkasan perutean.
Objek SearchNearbyResponse
juga berisi:
- Daftar objek
Place
yang mewakili semua tempat yang cocok, dengan satu objekPlace
per tempat yang cocok. - Setiap objek
Place
hanya berisi kolom yang ditentukan oleh daftar kolom yang diteruskan dalam permintaan.
Anda tidak harus menggunakan koordinat yang sama untuk pembatasan lokasi dan untuk asal pemilihan rute. Misalnya, Anda menetapkan pembatasan lokasi ke titik tengah Sydney untuk membatasi hasil penelusuran ke lingkaran tersebut. Namun, Anda kemudian menetapkan asal pemilihan rute ke koordinat rumah Anda, yang berarti ke lokasi yang berbeda dalam lingkaran penelusuran. Permintaan tersebut kemudian membatasi hasil penelusuran ke lingkaran, dan menghitung ringkasan pemilihan rute berdasarkan lokasi rumah Anda.
Menentukan opsi perjalanan
Secara default, penghitungan durasi dan jarak dilakukan untuk mobil. Namun, Anda dapat mengontrol jenis kendaraan, serta opsi lainnya, dalam penelusuran.
-
Gunakan
routingParameters.setTravelMode()
untuk menetapkan mode transportasi keDRIVE
,BICYCLE
,WALK
, atauTWO_WHEELER
. Untuk informasi selengkapnya tentang opsi ini, lihat Jenis kendaraan yang tersedia untuk rute. -
Gunakan
routingParameters.setRoutingPreference()
untuk menetapkan opsi preferensi pemilihan rute keTRAFFIC_UNAWARE
(default),TRAFFIC_AWARE
, atauTRAFFIC_AWARE_OPTIMAL
. Setiap opsi memiliki tingkat kualitas dan latensi data yang bervariasi. Untuk mengetahui informasi selengkapnya, lihat Menentukan cara dan apakah akan menyertakan data traffic. -
Gunakan
routingParameters.setRouteModifiers()
untuk menentukan keavoidTolls
,avoidHighways
,avoidFerries
, danavoidIndoor
. Untuk mengetahui informasi selengkapnya tentang opsi ini, lihat Menentukan fitur rute yang harus dihindari.
Pada contoh berikutnya, Anda menentukan mode perjalanan sebagai DRIVE
dan untuk menghindari jalan bebas hambatan:
// 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(); });