有没有办法计算路线的ETA而不仅仅是方向?方向的问题在于它仅显示最快路线的一个结果。
现在我只能找到这个:
directions.calculateETA { (etaResponse, error) -> Void in
if let error = error {
print("Error while requesting ETA : \(error.localizedDescription)")
//travelTime = "Not Available"
}else{
print("No error requesting ETA")
print("\(Int((etaResponse?.expectedTravelTime)!/60)) min")
}
}
答案 0 :(得分:2)
目前,MapKit
无法为单条路线计算ETA。无论如何,为单个MKRoute
调用ETA真的没有意义,因为MKRoute
调用只会得到MKDirections.calculate(completionHandler:)
个实例,此时你已经拥有了各条路线的旅行时间。存在单独的MKDirections.calculateETA
函数,以便提供快速获取ETA的方法,因为documentation states,此方法产生的结果比calculate
函数更快。
您可以像这样访问所有MKRoute
的旅行时间
directions.calculate { response, error in
guard error == nil, let response = response else {return}
for route in response.routes {
let eta = route.expectedTravelTime
}
}
请注意MKETAResponse.expectedTravelTime
incorporates traffic conditions进入其计算时MKRoute.expectedTravelTime
uses ideal conditions,但目前MapKit
没有计算具有流量的单个MKRoute
对象的ETA的方法。
答案 1 :(得分:0)
MKDirections
有一个calculate(completionHandler:)
函数,它返回返回的MKDirectionsResponse
对象中的多个路由:
directions.calculate { response, error in
var routes = response?.routes
let selectedRoute = routes[0]
let distance = selectedRoute.distance
let eta = selectedRoute.expectedTravelTime
// …
}
routes
是MKRoute
个对象的数组,然后您可以选择所需的对象。