2016-03-07 54 views
1

我想獲得設備的標題信息,以便使用磁性和真實標題之間的差異來確定用戶位置的偏角。爲此,我有一個助手類和我的MainVc(mvc)。在我的輔助類init方法我做到以下幾點:didUpdateHeading沒有在快速調用

... 
... 
locationManager = CLLocationManager() 
switch CLLocationManager.authorizationStatus() { 
    case .AuthorizedAlways: 
    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
    locationManager.startUpdatingLocation() 
    case .NotDetermined: 
    locationManager.requestAlwaysAuthorization() 
    case .AuthorizedWhenInUse, .Restricted, .Denied: 
    mvc.alertDenied(); 
} 

if (!initialized) 
{ 
    initialized = true; 
    self.performSelector("finishUpdatingLocation", withObject: nil, afterDelay: 2.0); 
} 

} 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    print ("didUpdateLocations") 
    var userLocation:CLLocation = locations[0] as! CLLocation 
    longitude = Float(userLocation.coordinate.longitude); 
    latitude = Float(userLocation.coordinate.latitude); 
    } 


func finishUpdatingLocation() { 
    locationManager.stopUpdatingLocation(); 
    NSObject.cancelPreviousPerformRequestsWithTarget(self, selector: "finishUpdatingLocation", object: nil); 
    mvc.goingToUpdateHeading(); 
    locationManager.startUpdatingHeading(); 
} 

didUpdateLocations被調用,我成功獲取該設備的座標。不過,雖然我已經加入didUpdateHeading,在它的第一行沒有被打印出來,貼在這一點上設備的:

func locationManager(manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) { 
print("didUpdateHeading"); 

if (newHeading.headingAccuracy > 0) { 
    variation = newHeading.trueHeading - newHeading.magneticHeading; 
    doneLoading = true; 
    locationManager.stopUpdatingHeading(); 
    mvc.goingToCalculateData(); 

    if (calcData) { 
    calculateData(); 
    print ("Calculating data"); 
    calcData = false; 
    } 
} 
print(newHeading.magneticHeading) 
} 

任何想法,爲什麼沒有被稱爲startUpdatingHeading?

+0

你解決了這個? –

回答

1

你必須調用locationManager.startUpdatingHeading()

... 
... 
locationManager = CLLocationManager() 
switch CLLocationManager.authorizationStatus() { 
    case .AuthorizedAlways: 
    locationManager.delegate = self 
    locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
    locationManager.startUpdatingLocation() 
    locationManager.startUpdatingHeading() 
    case .NotDetermined: 
    locationManager.requestAlwaysAuthorization() 
    case .AuthorizedWhenInUse, .Restricted, .Denied: 
    mvc.alertDenied(); 
} 
+0

我打電話給我,停止更新位置後,第一塊代碼的最後一行! – rkh