2016-08-02 4 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

직면 한 문제에 대한 추가 정보가 필요합니다. 또한 'locationManager'의 'startUpdatingLocation'메소드에 대한 호출이 2 건 있음을 알았습니다. – tek3

+1

info.plist에 필수 입력란을 설정 했습니까? – Rikh

답변

6

,

locationManager.requestAlwaysAuthorization() 

뿐만 아니라

locationManager.requestWhenInUseAuthorization() 

은 전경에 원활 위치를 사용합니다!

startupdatinglocation을 호출하기 위해 두 개의 인스턴스가 필요하지 않습니다. 하나를 유지하십시오. 범위 전체에서 위치를 가져 오려면 local 대신 instance 또는 global 변수를 사용해야합니다.

는 업데이트 : 당신은 그것으로 NSLocationAlwaysUsageDescription 같은 info.plistNSLocationWhenInUseUsageDescription에 두 개의 키를 설정해야

은 사용 설명입니다.

+0

감사합니다. 이러한 변경 사항을 적용했지만 위에 설명한 내용의 오류가 여전히 발생하고 있습니다. – Steve

+0

@ 캐 일럽 : 답변을 확인하십시오 !! – Lion

+0

요청이있는 지점이 나옵니다. – Steve

2

info.plist에 NSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescription이 설정되어 있어도 동일한 문제가 발생했습니다. 내 디버거도 NSLocationAlwaysAndWhenInUseUsageDescription을 설정하라고 말했습니다 ... 그래서 해냈습니다. 그것은 효과가있다!