问题描述
如果步行时间少于15分钟,我想为用户提供ETA步行信息,在其他情况下,我希望为用户提供ETA信息。我想在单个MKDirections.Request()
中执行此操作,这样就不必在其完成处理程序中递归调用同一函数。
我可以为request.transportType传入一个数组,但是即使我在调试器中可以看到它们,也无法将两个值都取回来。
func requestDirections(coordinates:CLLocationCoordinate2D,transitType:MKDirectionsTransportType,completion:@escaping(_ travelTime:Double,_ transportType:String)-> Void){
var travelTime:Double = -1.0
let directionRequest = MKDirections.Request()
directionRequest.source = MKMapItem.forCurrentLocation()
directionRequest.destination = MKMapItem(placemark: MKPlacemark(coordinate: coordinates))
directionRequest.transportType = [.automobile,.walking]
let directions = MKDirections(request: directionRequest)
directions.calculateETA(){(ETA,error) in
if(error == nil){
if(ETA.sortedETAs[0]>15){
completion(travelTime,"car")
}else{
completion(travelTime,"figure.walk")
}
}else{
completion(travelTime,"none")
}
}
}
可以做我想做的事吗?
在调试器中,如果我右键单击并在ETA中打印“已排序ETA的描述”,则返回:
Printing description of ETA.some._sortedETAs:
<__NSArrayM 0x6040003b4dd0>(
<GEOETAResultByType: 0x60b0000a4d80> {
distance = 14530;
historicTravelTime = 786;
"static_travel_time" = 725;
status = "STATUS_SUCCESS";
transportType = AUTOMOBILE;
travelTimeBestEstimate = 784;
},<GEOETAResultByType: 0x60b0000a4cd0> {
distance = 13111;
historicTravelTime = 10362;
"static_travel_time" = 10362;
status = "STATUS_SUCCESS";
transportType = WALKING;
travelTimeBestEstimate = 10362;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)