Getlocation 函数无法正确找到位置

Getlocation function not properly finding location

我的代码应该 return 设备的位置,以便放置图钉。

出于某种原因,当它被多次调用时,它总是 return 是第一次调用时 return 的值。

代码中的输出是 return 第一个值。我可能忽略了一些明显的东西,但我不知道是什么。

func getLocation ()-> CLLocation! {
    locationManager.startUpdatingLocation()
    var x = locationManager.location
    println(x.coordinate.latitude)
    println(x.coordinate.longitude)
    return x

} 

问题是位置管理器不是这样工作的。 startUpdatingLocation() 不会立即更改位置管理器的状态。相反,它 在委托方法 locationManager:didUpdateLocations: 中回叫你 。您必须设置一个委托并实现该委托的委托方法,那个就是您接收位置的地方。

此处为实际示例代码:https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch22p773location/ch35p1032location/ViewController.swift

请注意,在该代码中,我和您一样只想要一个位置。但是位置管理器将永远调用委托方法,直到我停止它,所以我也必须停止它。但是,我不能在一次调用后立即停止它,因为在我找到一个好的位置之前委托方法被调用了好几次。我一直在检查水平精度和经过的时间,当我获得足够好的位置或经过太多时间时,我会停止位置管理器(也许我们在室内,无法获得很好的精度)。