首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLLocation类Swift

CLLocation类Swift
EN

Stack Overflow用户
提问于 2018-03-30 06:05:22
回答 2查看 33关注 0票数 0

我最近一直在试用谷歌地图,偶然发现了苹果提供的一种适用于CoreLocation的方法。

方法是:

func distance( from : CLLocation)返回从接收器位置到指定位置的距离(以米为单位)。

现在,我最感兴趣的是,在将米转换为英里后,此方法如何得出输出结果。我将结果与谷歌地图计算的距离进行了比较,发现两者有很大的不同。我的问题是,距离函数是否计算出直线上的距离,并忽略转弯(即道路,高速公路等),这本质上增加了计算的距离。

这是我的实现,使用了上面提到的方法。

代码语言:javascript
复制
 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")

    }
EN

回答 2

Stack Overflow用户

发布于 2018-03-30 06:36:57

CLLocation的distance(from: CLLocation)函数使用两个位置之间的一条直线进行计算(考虑地球的曲率)。

https://developer.apple.com/documentation/corelocation/cllocation/1423689-distance

这种方法通过跟踪两个位置之间的一条跟随地球曲率的线来测量两个位置之间的距离。由此产生的弧线是一条平滑的曲线,没有考虑两个位置之间的特定高度变化。

票数 0
EN

Stack Overflow用户

发布于 2018-03-30 06:37:27

对于点之间的距离,有不同的、同样有效的定义。位置管理器“像乌鸦飞一样”或沿着地球的球面计算距离。(也称为“大圆”距离。)

然后是驾驶距离。这就解释了你必须走的路线,它总是比“直线”距离长(实际上是在地球表面的曲线上)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49565684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档