2016-08-17 97 views
0

因此,在我目前的project我正在做一個計算駕駛摩托車時節省的排放量與一般汽車相比的方法。該功能包含兩部分,method(計算)和tracker function。主要問題是跟蹤器功能似乎根本沒有跟蹤快速計算總距離iOS

我的主要問題是,如何在應用程序啓動時獲取跟蹤器功能總是跟蹤?

這是跟蹤功能

var startLocation:CLLocation! 
var lastLocation: CLLocation! 
var traveledDistance:Double = 0 

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 

    if startLocation == nil { 
     startLocation = locations.first 
    } else { 
     if let lastLocation = locations.last { 
      let distance = startLocation.distanceFromLocation(lastLocation) 
      let lastDistance = lastLocation.distanceFromLocation(lastLocation) 
      traveledDistance += lastDistance 
      print("\(startLocation)") 
      print("\(lastLocation)") 
      print("FULL DISTANCE: \(traveledDistance)") 
      print("STRAIGHT DISTANCE: \(distance)") 
      var travelDistance = setData("distance") 
     } 
    } 
    lastLocation = locations.last 
} 

這是方法

func calculateEmission(numbers: Int...) -> Double{ 
    let recordedDistance = getData("distance") 

    let dis = recordedDistance 
    let emissionAve = 0.16 

    let calculatedEmission : Double = Double(dis) * Double(emissionAve) 

    print(calculatedEmission, "kg Co2") 
    return calculatedEmission 
} 
+0

是什麼讓你相信這個方法應該被調用?你是否在某處創建了一個'CLLocationManager',你是否將它設置爲包含此方法的類的實例? – Jonah

+0

這個問題還是很模糊的。請準確瞭解您要查找的信息。 – Sethmr

+0

您是否得到提示授予位置服務訪問權限? – MwcsMac

回答

1

確保您已經於您的info.plist以下。然後您應該被提示允許訪問位置服務。

<key>NSLocationAlwaysUsageDescription</key> 
<string>Needs access to access GPS</string> 
<key>NSLocationUsageDescription</key> 
<string>Needs access to access GPS</string> 
<key>NSLocationWhenInUseUsageDescription</key> 
<string>Needs access to access GPS</string> 

你應該在viewDidLoad中有這樣的東西。

override func viewDidLoad() { 
    self.locationManager.requestWhenInUseAuthorization() 
     if CLLocationManager.locationServicesEnabled() { 
      locationManager.delegate = self 
      locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
      locationManager.startUpdatingLocation() 
     } 
    } 
+0

因此,我試圖按照你的建議去做,它似乎工作到目前爲止,但是當我得到「需要訪問GPS」消息時,它甚至在我點擊'允許按鈕'之前就消失了。我還在控制檯中收到以下消息**「試圖在不提示位置授權的情況下啓動MapKit位置更新,必須首先調用 - [CLLocationManager requestWhenInUseAuthorization]或 - [CLLocationManager requestAlwaysAuthorization]。」** @MwcsMac – Victor

+0

您嘗試使用哪種設備上?控制檯消息是預料之中的,因爲你不能全部訪問,因爲無法訪問允許。 – MwcsMac

+0

它可以在所有模擬手機上正常工作,但在手機(iPhone 6)上試用時只會出現此錯誤。 – Victor