Tính toán thông tin tóm tắt về định tuyến
Cách sử dụng tính năng Tìm kiếm bằng văn bản (Mới) hoặc Tìm kiếm địa điểm lân cận (Mới) để tính thời gian di chuyển và khoảng cách đến từng địa điểm trong câu trả lời:
-
Truyền tham số
RoutingParameters
trong yêu cầu, sử dụngsetOrigin()
để chỉ định toạ độ vĩ độ và kinh độ của điểm xuất phát định tuyến. Bạn phải có tham số này để tính toán thời lượng và khoảng cách đến từng địa điểm trong phản hồi. -
Khi tạo đối tượng yêu cầu, hãy thêm
.setRoutingSummariesIncluded(true)
.
Sử dụng tính năng Tìm kiếm bằng văn bản (Mới)
Trong yêu cầu sau, bạn tính thời gian di chuyển và khoảng cách đến từng vị trí trong phản hồi Tìm kiếm bằng văn bản (Mới):
// 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(); });
Lớp SearchByTextResponse
đại diện cho phản hồi từ một yêu cầu tìm kiếm.
Bạn có thể gọi SearchByTextResponse.getRoutingSummaries()
để trả về danh sách tóm tắt định tuyến.
Đối tượng SearchByTextResponse
cũng chứa:
- Danh sách các đối tượng
Place
đại diện cho tất cả địa điểm trùng khớp, trong đó mỗi địa điểm trùng khớp có một đối tượngPlace
. - Mỗi đối tượng
Place
chỉ chứa các trường do danh sách trường được truyền trong yêu cầu xác định.
Sử dụng tính năng Tìm kiếm lân cận
Trong ví dụ này, bạn sẽ tính thời gian di chuyển và khoảng cách đến từng địa điểm trong phản hồi Tìm kiếm lân cận. Ví dụ này tìm kiếm nhà hàng ở Sydney, Australia và đặt giới hạn vị trí và điểm xuất phát định tuyến thành cùng một toạ độ vĩ độ và kinh độ:
// 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(); });
Lớp SearchNearbyResponse
đại diện cho phản hồi từ một yêu cầu tìm kiếm.
Bạn có thể gọi SearchNearbyResponse.getRoutingSummaries()
để trả về danh sách tóm tắt định tuyến.
Đối tượng SearchNearbyResponse
cũng chứa:
- Danh sách các đối tượng
Place
đại diện cho tất cả các địa điểm trùng khớp, trong đó mỗi địa điểm trùng khớp có một đối tượngPlace
. - Mỗi đối tượng
Place
chỉ chứa các trường do danh sách trường xác định được truyền trong yêu cầu.
Bạn không nhất thiết phải sử dụng cùng một toạ độ cho quy định hạn chế về vị trí và nguồn gốc định tuyến. Ví dụ: bạn đặt giới hạn vị trí thành tâm điểm của Sydney để giới hạn kết quả tìm kiếm trong vòng tròn đó. Nhưng sau đó, bạn đặt nguồn định tuyến thành toạ độ của nhà bạn, nghĩa là một vị trí khác trong vòng tròn tìm kiếm. Sau đó, yêu cầu này sẽ giới hạn kết quả tìm kiếm trong vòng tròn và tính toán bản tóm tắt định tuyến dựa trên vị trí của nhà bạn.
Chỉ định các lựa chọn đi lại
Theo mặc định, thời gian và quãng đường được tính cho ô tô. Tuy nhiên, bạn có thể kiểm soát loại xe cũng như các lựa chọn khác trong kết quả tìm kiếm.
-
Sử dụng
routingParameters.setTravelMode()
để đặt chế độ di chuyển thànhDRIVE
,BICYCLE
,WALK
hoặcTWO_WHEELER
. Để biết thêm thông tin về các tuỳ chọn này, hãy xem phần Các loại xe hiện có cho tuyến đường. -
Sử dụng
routingParameters.setRoutingPreference()
để đặt tuỳ chọn ưu tiên định tuyến thànhTRAFFIC_UNAWARE
(mặc định),TRAFFIC_AWARE
hoặcTRAFFIC_AWARE_OPTIMAL
. Mỗi tuỳ chọn có các mức chất lượng dữ liệu và độ trễ khác nhau. Để biết thêm thông tin, hãy xem phần Chỉ định cách và liệu có nên đưa dữ liệu lưu lượng truy cập vào hay không. -
Sử dụng
routingParameters.setRouteModifiers()
để chỉ định choavoidTolls
,avoidHighways
,avoidFerries
vàavoidIndoor
. Để biết thêm thông tin về các tuỳ chọn này, hãy xem phần Chỉ định các đặc điểm tuyến đường cần tránh.
Trong ví dụ tiếp theo, bạn chỉ định chế độ đi lại là DRIVE
và tránh xa đường cao tốc:
// 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(); });