Есть ли способ получить ETA для нескольких .transportTypes с помощью одного запроса в MapKit?

#ios #swift #mapkit #directions

#iOS #swift #mapkit #указания

Вопрос:

Я пытаюсь предоставить пользователю ETA для ходьбы, если прогулка занимает менее 15 минут, и для вождения в других случаях. Я бы хотел сделать это в одном 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;
}
  

Вид переменной отладчика