[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 和 Google Map 获取楼层信息的问题
CLLocation + Weather(Alamofire) 问题