gpt4 book ai didi

ios - 如何获得 MKPolyline 上的等距位置?

转载 作者:行者123 更新时间:2023-11-30 11:34:08 26 4
gpt4 key购买 nike

我需要在 MKPolyline 上找到等距位置来添加注释,如下所示。

enter image description here

下面给出了我获取 MKPolyline 上位置的函数,我有折线的开始和结束坐标值。但位置稍微偏离折线,如下图所示

enter image description here

我查找位置的函数是

func getEquidistantPoints(from startPoint: CLLocationCoordinate2D, to endPoint: CLLocationCoordinate2D, numberOfPoints: Int) -> [CLLocationCoordinate2D] {

var midPoints: [CLLocationCoordinate2D] = []
var newPoint: CLLocationCoordinate2D = CLLocationCoordinate2DMake(0, 0)

let count = numberOfPoints + 1
let latitudeModifier = (endPoint.latitude - startPoint.latitude) / Double(count)
let longitudeModifier = (endPoint.longitude - startPoint.longitude) / Double(count)

for i in 0..<count {
newPoint.latitude = CLLocationDegrees(startPoint.latitude + (latitudeModifier * Double(i)))
newPoint.longitude = CLLocationDegrees(startPoint.longitude + (longitudeModifier * Double(i)))
midPoints.append(newPoint)
}
return midPoints
}

在 View 中加载

let coordinatesArray = getEquidistantPoints(from: sourceCoordinate, to: destinationCoordinate, numberOfPoints: 5)

for coordinate in coordinatesArray {
let annotation = MKPointAnnotation()
annotation.coordinate = coordinate
self.mapView.addAnnotation(annotation)
}

如何解决计算位置时出现的错误?

最佳答案

问题是地球是圆的。所以你的“线”不是一条线;而是一条线。它是在标称球体表面上绘制的曲线。你无法用简单的方法找到沿线的“等距”点。你需要使用一些比你正在使用的更严肃的数学。事实证明这绝非小事。

关于ios - 如何获得 MKPolyline 上的等距位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49944054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com