[CLLocation] 和 CLLocation 的区别

Posted

技术标签:

【中文标题】[CLLocation] 和 CLLocation 的区别【英文标题】:Difference between [CLLocation] and CLLocation 【发布时间】:2017-02-16 06:10:32 【问题描述】:

我正在尝试查找我从用户那里获取的位置与我硬编码的位置之间的距离,但我收到一个错误,无法将 [CLLocation] 转换为 CLLocation。

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
    let location = CLLocationCoordinate2D(latitude: locations[0].coordinate.latitude, longitude: locations[0].coordinate.longitude)
     longitude = locations[0].coordinate.longitude
     latitude = locations[0].coordinate.latitude
    let coordinate₀ = CLLocation(latitude: 5.0, longitude: 5.0)

    let distanceInMeters = coordinate₀.distance(from: locations)
    print(distanceInMeters)

【问题讨论】:

[CLLocation]CLLocation 的数组 访问locations数组中的最后一个对象,获取用户的当前位置。 谢谢你。我不敢相信我没有意识到这一点。 【参考方案1】:

在我看来,您仍然不了解 Swift 语言的基础知识。或许你应该先去here 阅读 Swift 文档。

您正在使用一个 CLLocation 数组,而函数 distance(from: ) 接受单个 CLLocation 的参数。

看起来你想要做的是替换你的

let distanceInMeters = coordinate.distance(from: locations)

let distanceInMeters = coordinate.distance(from: location)

【讨论】:

【参考方案2】:

您需要在下面的行中传递location 而不是locations

let distanceInMeters = coordinate₀.distance(from: locations)

【讨论】:

【参考方案3】:

[CLLocation] 是一个 CLLocation 数组,试试下面

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
    let location = CLLocationCoordinate2D(latitude: locations[0].coordinate.latitude, longitude: locations[0].coordinate.longitude)
     let loc = locations[0]
     longitude = loc[0].coordinate.longitude
     latitude = loc[0].coordinate.latitude
    let coordinate₀ = CLLocation(latitude: 5.0, longitude: 5.0)

    let distanceInMeters = coordinate₀.distance(from: loc)
    print(distanceInMeters)

【讨论】:

以上是关于[CLLocation] 和 CLLocation 的区别的主要内容,如果未能解决你的问题,请参考以下文章

字符串到 CLLocation 纬度和经度

CLLocation 如何实现 Equatable 协议?

使用 CLLocation 和 Google Map 获取楼层信息的问题

CLLocation + Weather(Alamofire) 问题

如何使用 iPhone 的 CLLocation 类将纬度和经度分配给变量?

从浮点 lat long 创建的 CLLocation 显示更高的精度