Tính toán tuyến đường (bao gồm cả việc định tuyến lại) sẽ trả về tuyến đường mất ít thời gian nhất để di chuyển dưới dạng tuyến đường tốt nhất mặc định. Tuy nhiên, bạn có thể thay đổi chiến lược định tuyến để trả về tuyến đường ngắn hơn trong số các tuyến đường thay thế.
Thuật ngữ ngắn hơn có nghĩa là tuyến đường ngắn nhất trong số các tuyến đường tối ưu dựa trên mô hình chi phí mặc định của chúng tôi. Tuyến đường ngắn hơn có thể không phải là tuyến đường ngắn nhất tuyệt đối, vì lựa chọn đó có thể là một lựa chọn thay thế không tốt. Ví dụ: nếu đường ngắn nhất tuyệt đối là 10 km và mất 50 phút để di chuyển, còn một đường khác là 15 km nhưng chỉ mất 20 phút để di chuyển, thì lựa chọn thứ hai là tối ưu, vì việc mất 30 phút để giảm 5 km là không đáng.
Sau khi bạn đặt chiến lược định tuyến cho một chuyến đi, chiến lược đó sẽ không thay đổi cho đến khi chuyến đi hoàn tất. Để thay đổi chiến lược định tuyến cho một chuyến đi hiện có, bạn phải xoá các đích đến rồi đặt lại các đích đến đó bằng chiến lược định tuyến mới.
Nhận thông tin chi tiết về tuyến đường
Để xác định chiến lược tuyến đường nào là lựa chọn tối ưu cho một điểm trung gian nhất định, hãy gọi getRouteInfoForDestination()
để lấy thông tin chi tiết về tuyến đường cho cả tuyến đường tốt nhất mặc định và tuyến đường ngắn hơn tuyệt đối. Thông tin chi tiết bao gồm thời lượng và khoảng cách đến điểm trung gian của điểm đến.
Những thông tin chi tiết này đến từ GMSNavigationRouteInfo
trong lệnh gọi lại.
Ví dụ:
Mã ví dụ sau đây minh hoạ cách lấy thông tin chi tiết về tuyến đường cho từng chiến lược định tuyến.
Swift
let routingOptions = GMSNavigationRoutingOptions()
navigator?.getRouteInfoForDestination(destination,
routingOptions: routingOptions) { routeInfo in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions =
[[GMSNavigationRoutingOptions alloc] init];
[navigator getRouteInfoForDestination:destination
withRoutingOptions:routingOptions
callback:^(GMSNavigationRouteInfo *routeInfo){...}];
Thiết lập chiến lược định tuyến
Bạn có thể định cấu hình chiến lược định tuyến bằng cách sử dụng GMSNavigationRoutingOptions
và đặt routingStrategy
khi gọi setDestinations()
.
routingStrategy
nhận một trong các giá trị liệt kê sau:
Giá trị liệt kê | Mô tả |
---|---|
GMSNavigationRoutingStrategyDefaultBest | Xếp hạng các tuyến đường theo mô hình chi phí mặc định của Navigation SDK. Đây là chiến lược định tuyến mặc định. |
GMSNavigationRoutingStrategyShorter | Xếp hạng các tuyến đường theo khoảng cách. Tuyến có thứ hạng cao nhất là tuyến ngắn nhất trong số các tuyến được trả về. |
Ví dụ:
Ví dụ về mã sau đây minh hoạ cách đặt chiến lược định tuyến tuyến đường ngắn hơn.
Swift
let routingOptions = GMSNavigationRoutingOptions(routingStrategy: .shorter)
navigator?.setDestinations(destinations,
routingOptions: routingOptions) { routeStatus in
...
}
Objective-C
GMSNavigationRoutingOptions *routingOptions = [[GMSNavigationRoutingOptions alloc] initWithRoutingStrategy:GMSNavigationRoutingStrategyShorter];
[navigator setDestinations:destinations
routingOptions:routingOptions
callback:^(GMSRouteStatus routeStatus){...}];
Tuyến có phà
Theo mặc định, Navigation SDK cho iOS sẽ loại trừ các tuyến có phà. Nếu muốn đưa các lựa chọn đi phà vào tuyến đường, bạn có thể điều chỉnh lựa chọn ưu tiên về định tuyến này để hiển thị chuyến đi đến các đoạn phà bằng cách đặt avoidsFerries
thành false
.
Ví dụ:
Swift
self.mapView.navigator?.avoidsFerries = false
Objective-C
self.mapView.navigator.avoidsFerries = NO
Định dạng chú thích tuyến đường
Trong chiến lược định tuyến tuyến đường ngắn hơn, chú thích dọc theo tuyến đường sẽ hiển thị thông tin chi tiết về quãng đường. Tuy nhiên, bạn có thể sử dụng chú thích về thời gian đến dự kiến.
Định cấu hình định dạng chú thích tuyến đường
Bạn có thể thay đổi định dạng chú thích tuyến đường bằng cách đặt routeCalloutFormat
trong GMSMapView
. routeCalloutFormat
nhận một trong các giá trị liệt kê sau:
Giá trị liệt kê | Mô tả |
---|---|
GMSNavigationRouteCalloutFormatDefault | Hiển thị thời gian còn lại khi sử dụng chiến lược định tuyến tuyến đường tốt nhất mặc định. Hiển thị quãng đường còn lại khi sử dụng chiến lược định tuyến tuyến đường ngắn hơn |
GMSNavigationRouteCalloutFormatTime | Hiển thị thời gian còn lại. |
GMSNavigationRouteCalloutFormatDistance | DCho biết quãng đường còn lại. |
Ví dụ:
Ví dụ về mã sau đây minh hoạ cách định cấu hình định dạng chú thích tuyến đường.
Swift
self.mapView.routeCalloutFormat = .time
Objective-C
_mapView.routeCalloutFormat = GMSNavigationRouteCalloutFormatTime;