Транзит MKDirectionsRequest выдает нулевую ошибку Error Domain=MKErrorDomain Code=5 "(null)"

Я пытаюсь использовать MapKit Directions Request для получения транзитных направлений между двумя координатами.

Когда я переключаюсь на другие (не Transit) типы, приведенный ниже код работает, но когда я переключаюсь на Transit, он выдает ошибку, которая нигде не отображается в документации Apple.

Оба места (источник и пункт назначения) находятся в Нью-Йорке, поэтому, безусловно, должны быть доступны маршруты транзита.

Сообщение об ошибке:

Error Domain=MKErrorDomain Code=5 "(null)"

Фрагмент кода:

override func viewDidLoad() {
    super.viewDidLoad()

    let request = MKDirectionsRequest()

    // Set request parameters
    request.source = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 40.7127, longitude: -74.0059), addressDictionary: nil))
    request.destination = MKMapItem(placemark: MKPlacemark(coordinate: CLLocationCoordinate2D(latitude: 40.6761, longitude: -73.9521), addressDictionary: nil))
    request.requestsAlternateRoutes = true

    // Set tranport type parameter (anything other than .Transit works)
     request.transportType = .Transit

    let directions = MKDirections(request: request)

    directions.calculateDirectionsWithCompletionHandler { response, error in
        print(response)

        guard let routes = response?.routes else {
            print(error?.description)
            return
        }

        // Prints step-by-step directions
        for r in routes {
            print("New route")
            for step in r.steps {
                print("  " + step.instructions)
            }
        }
    }
}

Любой совет, что я могу делать не так в конкретном случае с Транзитом? Спасибо!

1 ответ

Решение

Направления маршрутизации для транзита в настоящее время не поддерживаются (iOS 9). MKDirectionsRequest вернет нулевую ошибку, как вы заметили.

Это только кажется, документировано непосредственно в заголовках MapKit. Посмотрите на комментарий для Transit тип.

//  MKDirectionsTypes.h

@available(iOS 7.0, *)
public struct MKDirectionsTransportType : OptionSetType {
    public init(rawValue: UInt)

    public static var Automobile: MKDirectionsTransportType { get }
    public static var Walking: MKDirectionsTransportType { get }
    @available(iOS 9.0, *)
    public static var Transit: MKDirectionsTransportType { get } // Only supported for ETA calculations
    public static var Any: MKDirectionsTransportType { get }
}
Другие вопросы по тегам