如何根据iOS / swift中当前位置的轴承/标题值绘制线条?

时间:2016-08-17 13:46:53

标签: ios swift

我一直在进行大量研究,但一无所获。使用MapKit,我有一个显示当前位置的地图和一个计算航向/方位值(不一定是实际航向)的函数。如何在地图上绘制一条从当前位置开始并指向给定标题方向的线? (无论线路有多长,因为它没有有意义的终点)。我不是要求你为我编写代码,而是希望得到一些详细的指导。希望这也有助于其他人。

干杯

1 个答案:

答案 0 :(得分:2)

您的坐标为polar,表示您有方向和长度。您只需要将它们转换为笛卡尔坐标,它可以为您提供水平偏移和垂直偏移。你用一点三角法做到了。

let origin = CGPoint(x: 10, y: 10)
let heading: CGFloat = CGFloat.pi
let length: CGFloat = 20

let endpoint = CGPoint(x: origin.x + cos(heading)*length,
                       y: origin.y + sin(heading)*length)

let path = UIBezierPath()
path.move(to: origin)
path.addLine(to: endpoint)

请注意,三角函数通常以弧度为单位(2 * PI =一转)。轴承通常为度(360度=一转)。然而,转换很简单:

func radians(forDegrees angle: CGFloat) -> CGFloat {
    return CGFloat.pi * angle / 180.0
}
相关问题