2016-10-25 7 views
1

Я пытаюсь вычислить пройденное расстояние с помощью CLLocationManager и отобразить расстояние внутри метки. Запрос на использование работы с местоположением, но на этикетке ничего не отображается. Я попытался имитировать движение на драйвере внутри симулятора xCode, но безрезультатно. У меня есть карта, отображающая внутри приложения, и это работает, она отслеживает мое местоположение, но это все, что работает.Расстояние не рассчитывается в Swift 3

Heres мой метод locationManager:

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

    // Map 

    theLabel.text = "\(locations[0])" 
    myLocations.append(locations[0] as! CLLocation) 

    let spanX = 0.007 
    let spanY = 0.007 
    let newRegion = MKCoordinateRegion(center: theMap.userLocation.coordinate, span: MKCoordinateSpanMake(spanX, spanY)) 
    theMap.setRegion(newRegion, animated: true) 

    if (myLocations.count > 1){ 
     let sourceIndex = myLocations.count - 1 
     let destinationIndex = myLocations.count - 2 

     let c1 = myLocations[sourceIndex].coordinate 
     let c2 = myLocations[destinationIndex].coordinate 
     var a = [c1, c2] 
     let polyline = MKPolyline(coordinates: &a, count: a.count) 
     theMap.add(polyline) 
    } 

    // Labels 

    let latestLocation: AnyObject = locations[locations.count - 1] 
    lat.text = String(format: "%.4f", latestLocation.coordinate.latitude) 
    long.text = String(format: "%.4f", latestLocation.coordinate.longitude) 
    horizAcc.text = String(format: "%.4f", latestLocation.horizontalAccuracy) 
    altitude.text = String(format: "%.4f", latestLocation.altitude) 
    vertAcc.text = String(format: "%.4f", latestLocation.verticalAccuracy) 

    if startLocation == nil { 
     startLocation = latestLocation as! CLLocation 
    } 

    let distanceBetween = (latestLocation.distance(from: startLocation)) 

    distance.text = String(format: "%.2f", distanceBetween) 

} 

Любая помощь очень ценится! При необходимости я могу предоставить больше кода.

+0

Не можете описать, что именно не работает? Широко говорить «все, что работает» – alexburtnik

+0

Я вычисляю расстояние и помещаю его в ярлык, но ярлык никогда не меняется. –

+0

do 'print (distanceBetween)' наконец и сообщить вывод –

ответ

0

Похоже, что у вас нет свойства делегата, установленного правильно для вашего экземпляра CLLocationManager. Вы должны сообщить ему, какой объект содержит вашу реализацию методов CLLocationManagerDelegate, например, тот, который вы указали.

Таким образом, предполагается, что ваш контроллер представления соответствует CLLocationManagerDelegate и содержит метод, который вы отправлен и предполагая, что вы дали свое мнение контроллер CLLocationManager свойство «locationManager», вы просто настроить его так:

self.locationManager.delegate = self 
    self.locationManager.startUpdatingLocation() 

Вы может поместить это в viewDidLoad: или где это подходит для ваших нужд, и ваш метод делегирования didUpdateLocation должен быть вызван.