2016-08-02 125 views
3

我想让我的程序在地图上显示用户的位置。它一开始工作,然后随机停止,所以我添加了下面的代码来尝试修复它,但我遇到了问题。提前致谢!位置权限检查和授权

override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     self.locationManager.delegate = self 
     self.locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     if CLLocationManager.locationServicesEnabled() 
     { 

      let status: CLAuthorizationStatus = CLLocationManager.authorizationStatus() 
      if status == CLAuthorizationStatus.NotDetermined 
      { 
       locationManager.requestAlwaysAuthorization() 
      } 
      } else { 

       print("locationServices disenabled") 
      } 
      locationManager.startUpdatingLocation() 
      self.locationManager.startUpdatingLocation() 
      self.mapView.showsUserLocation = true 
      mapView.delegate = self 
      centerMapOnLocation(initialLocation) 
      addBoundry() 
    } 
+0

你有什么问题? – eMKa

+0

我们需要更多关于您面临的问题的信息。另外我注意到有2个调用'locationManager'的'startUpdatingLocation'方法。 – tek3

+1

您是否在info.plist中设置了必填字段? – Rikh

回答

6

你需要打电话,

locationManager.requestAlwaysAuthorization() 

以及

locationManager.requestWhenInUseAuthorization() 

在前台顺手的位置也!

并且您不应该需要两个实例才能拨打startupdatinglocation。保持一个。您应该使用实例或全局变量而不是本地来获取整个范围的位置。

更新:

你有info.plist一样,NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription用它来设置两个键的用法说明。

+0

谢谢我做了这些改变,但我仍然收到上面提到的错误 – Steve

+0

@Caleb:检查我的更新回复! – Lion

+0

我得到一个突破点,我现在请求 – Steve

2

我遇到了同样的问题,即使在info.plist中设置了NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription。我的调试器告诉我也设置NSLocationAlwaysAndWhenInUseUsageDescription ...所以我做到了。有效!