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