2017-02-16 57 views
-10

我试图找到我从用户抓取的位置和硬编码的位置之间的距离,但出现错误,无法将[CLLocation]转换为CLLocation 。[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) 
} 
+5

'[CLLocation]'是'的CLLocation' –

+0

访问的最后一个对象从'locations'数组数组获取用户的当前位置。 –

+0

谢谢你。我不敢相信我没有意识到这一点。 –

回答

0

你需要传递location而不是locations在下面的线

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

[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) 
} 
1

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

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

它看起来像你想要做的是,以取代

let distanceInMeters = coordinate.distance(from: locations) 

let distanceInMeters = coordinate.distance(from: location)