如何为startUpdatingLocation请求启动?

时间:2015-05-19 20:22:41

标签: swift mapkit locationmanager

我正在使用此代码打开视图时启动位置管理器:

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()。

有人有解决方案吗?

1 个答案:

答案 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()
}