MapKit Step折线在哪里?

Where is MapKit Step polyline?

我正在尝试打印所有路线步骤的坐标,类似于 Google Maps SDK 的 "legs"。

但是它告诉我不能用polyline 属性获取坐标?

试试这个:

for step in self.route!.steps as [MKRouteStep] {

否则它会将 step 视为 AnyObject(没有定义 polyline 属性,因此您会收到编译器错误)。


顺便说一句,请注意 polyline.coordinate 只是给出折线的平均中心或一个端点。一条折线可以有多个线段。

如果需要获取所有沿折线的线段和坐标,请参见latitude and longitude points from MKPolyline(Objective-C)。

这是 Swift 的一种可能翻译(在 this answer 的帮助下):

for step in route!.steps as [MKRouteStep] {
    let pointCount = step.polyline.pointCount

    var cArray = UnsafeMutablePointer<CLLocationCoordinate2D>.alloc(pointCount)

    step.polyline.getCoordinates(cArray, range: NSMakeRange(0, pointCount))

    for var c=0; c < pointCount; c++ {
        let coord = cArray[c]
        println("step coordinate[\(c)] = \(coord.latitude),\(coord.longitude)")
    }

    cArray.dealloc(pointCount)
}

正如第一个链接答案所警告的那样,根据路线,您每一步可能会获得成百上千个坐标。

Swift 4.1,截至 2018 年 7 月,基于 .

let pointCount = step.polyline.pointCount
let cArray = UnsafeMutablePointer<CLLocationCoordinate2D>.allocate(capacity: pointCount)
step.polyline.getCoordinates(cArray, range: NSMakeRange(0, pointCount))

for c in 0..<pointCount {
    let coord = cArray[c]
    print("step coordinate[\(c)] = \(coord.latitude),\(coord.longitude)")
}

cArray.deallocate()