我正在尝试打印所有路线步骤的坐标,类似于Google Maps SDK" leg"。
但它告诉我,我不能使用polyline
属性来获取坐标?
答案 0 :(得分:2)
试试这个:
for step in self.route!.steps as [MKRouteStep] {
否则它将step
视为AnyObject
(没有定义polyline
属性,因此您得到编译器错误)。
<小时/> 顺便说一下,请注意
polyline.coordinate
只给出折线的平均中心或一个端点。折线可以有多个线段。
如果您需要沿折线获取 all 线段和坐标,请参阅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)
}
第一个链接的答案警告说,根据路线的不同,每步可能会有数百或数千个坐标。
答案 1 :(得分:0)
基于other answer的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()