我正在使用此代码打开视图时启动位置管理器:
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
var userLocation: CLLocation = locations[0] as! CLLocation
userLatitude = userLocation.coordinate.latitude
userLongitude = userLocation.coordinate.longitude
if (userLocation.horizontalAccuracy < 80) {
manager.stopUpdatingLocation()
} else {
addMapRegionAndAnnotation()
}
}
因此,这意味着如果在80米半径内检测到位置,则locationManager会停止。 现在,如果我按下updateLocation按钮,我想再次启动此locationManager:
@IBAction func updatePostMapView(sender: AnyObject) {
manager.startUpdatingLocation()
}
然后应用程序shuold更新用户位置,直到半径再小于80米... 但正如您所料,这不起作用,因为我无法从locationManager外部调用manager.startUpdatingLocation()。
有人有解决方案吗?
答案 0 :(得分:0)
您可以从任何方法内部调用startUpdatingLocation()或stopUpdatingLocation()。首先您必须在班级中创建位置管理器,
class
let locationManager = CLLocationManager()
func initializeLocationManager()
{
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.distanceFilter=kCLLocationAccuracyNearestTenMeters
}
func anyMethod()
{
locationManager.stopUpdatingLocation()
locationManager.startUpdatingLocation()
}