Transit MKDirectionsRequest产生空错误Error Domain = MKErrorDomain Code = 5“(null)”

bay*_*yar 3 mapkit ios swift

我正在尝试使用MapKit方向请求获取两个坐标之间的公交路线。

当我切换到其他类型(非Transit)时,下面的代码有效,但是当我切换到Transit时,它将引发一个错误,该错误在Apple文档中没有显示。

这两个位置(来源和目的地)都在纽约市,因此绝对应该有可用的公交路线。

错误信息:

Error Domain=MKErrorDomain Code=5 "(null)"
Run Code Online (Sandbox Code Playgroud)

程式码片段:

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)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

关于特定运输案例我可能做错了什么的任何建议?谢谢!

Wil*_*ill 5

当前不支持公交路线指引(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 }
}
Run Code Online (Sandbox Code Playgroud)