我最近一直在试用谷歌地图,偶然发现了苹果提供的一种适用于CoreLocation的方法。
方法是:
func distance( from : CLLocation)返回从接收器位置到指定位置的距离(以米为单位)。
现在,我最感兴趣的是,在将米转换为英里后,此方法如何得出输出结果。我将结果与谷歌地图计算的距离进行了比较,发现两者有很大的不同。我的问题是,距离函数是否计算出直线上的距离,并忽略转弯(即道路,高速公路等),这本质上增加了计算的距离。
这是我的实现,使用了上面提到的方法。
func testDistance(lat0: Double, long0: Double, lat1: Double, long1: Double){
let coordinate₀ = CLLocation(latitude: lat0, longitude: long0)
let coordinate₁ = CLLocation(latitude: lat1, longitude: long1)
let distanceInMeters = coordinate₀.distance(from: coordinate₁)
let distanceInMile = distanceInMeters/1609.344
print("\(distanceInMile) miles")
}发布于 2018-03-30 06:36:57
CLLocation的distance(from: CLLocation)函数使用两个位置之间的一条直线进行计算(考虑地球的曲率)。
https://developer.apple.com/documentation/corelocation/cllocation/1423689-distance
这种方法通过跟踪两个位置之间的一条跟随地球曲率的线来测量两个位置之间的距离。由此产生的弧线是一条平滑的曲线,没有考虑两个位置之间的特定高度变化。
发布于 2018-03-30 06:37:27
对于点之间的距离,有不同的、同样有效的定义。位置管理器“像乌鸦飞一样”或沿着地球的球面计算距离。(也称为“大圆”距离。)
然后是驾驶距离。这就解释了你必须走的路线,它总是比“直线”距离长(实际上是在地球表面的曲线上)。
https://stackoverflow.com/questions/49565684
复制相似问题