CLLocation 类 Swift
Posted
技术标签:
【中文标题】CLLocation 类 Swift【英文标题】:CLLocation Class Swift 【发布时间】:2018-03-29 22:05:21 【问题描述】:我目前一直在尝试使用 Google 地图,并发现了 Apple 提供的 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")
【问题讨论】:
【参考方案1】:CLLocation 的distance(from: CLLocation)
函数使用两个位置之间的直线进行计算(考虑到地球的曲率)。
https://developer.apple.com/documentation/corelocation/cllocation/1423689-distance
此方法通过追踪来测量两个位置之间的距离 它们之间的一条线,沿着地球的曲率。这 产生的圆弧是平滑曲线,不考虑 两个位置之间的特定高度变化。
【讨论】:
【参考方案2】:点之间的距离有不同的、同样有效的定义。位置管理器计算“如乌鸦飞翔”或沿地球球面的距离。 (也称为“大圆”距离。)
然后是行驶距离。这说明了你必须走的路线,它总是比“直线”距离长(实际上是在地球表面的曲线上)。
【讨论】:
有道理!对不起,如果这个问题看起来很基本。以上是关于CLLocation 类 Swift的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 iPhone 的 CLLocation 类将纬度和经度分配给变量?
将 CLLocation 对象转换为 MKMapPoint 结构