2016-08-17 5 views
0

Итак, в моем текущем project Im делает метод, который вычисляет сохраненную эмиссию при управлении мопедом по сравнению со средним автомобилем. Функция состоит из двух частей: method (расчет) и tracker function. Основная проблема заключается в том, что функция трекера как-то , похоже, вообще не отслеживает.Рассчитать общее расстояние swift 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

Смежные вопросы