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()
我正在尝试打印所有路线步骤的坐标,类似于 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()