是否有办法在MapKit中通过单个请求获取多个.transportTypes的ETA?

问题描述

如果步行时间少于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;
}

Debugger Variable View

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...