如何根据iOS/swift中当前位置的方位/航向值绘制直线?

如何根据iOS/swift中当前位置的方位/航向值绘制直线?,ios,swift,Ios,Swift,我做了大量的研究,但什么也没发现。有了MapKit,我得到了一张地图,上面显示了当前位置,还有一个计算航向/方位值(不一定是实际航向)的函数。我如何在地图上画一条线,从当前位置开始,指向给定航向的方向?(不管直线有多长,因为它没有有意义的端点)。我不是要求你为我写代码,但如果你能提供一些详细的指导,我将不胜感激。希望这对其他人也有帮助 干杯你的坐标是,这意味着你有方向和长度。您只需要将它们转换为笛卡尔坐标,这将为您提供一个水平偏移和一个垂直偏移。你可以用一点三角法 let origin = CG

我做了大量的研究,但什么也没发现。有了MapKit,我得到了一张地图,上面显示了当前位置,还有一个计算航向/方位值(不一定是实际航向)的函数。我如何在地图上画一条线,从当前位置开始,指向给定航向的方向?(不管直线有多长,因为它没有有意义的端点)。我不是要求你为我写代码,但如果你能提供一些详细的指导,我将不胜感激。希望这对其他人也有帮助

干杯

你的坐标是,这意味着你有方向和长度。您只需要将它们转换为笛卡尔坐标,这将为您提供一个水平偏移和一个垂直偏移。你可以用一点三角法

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
}

伟大的这可能适用于long/lat坐标?很抱歉我不擅长三角。是的,但是你需要把它们转换成地图点。另一个问题:由于我目前有long和lat双精度,我是否必须将此公式转换为map point,然后将其转换回long/lat以绘制MKPolyline?这可能是最简单的,因为map kit中提供了所有转换工具。当然,所有的计算都可以在球坐标系下进行,但是如果笛卡尔三角法令人不舒服,那么球三角法可能会更令人困惑。干杯-我决定使用一个完整的公式,它需要长/宽。谢谢你的指导。