Hallo Zusammen
Ich stehe grad auf dem Schlauch. Ich habe folgenden Code, um die zurückgelegte Distanz zu berechnen und anzuzeigen:
Das funktioniert soweit ganz gut, die Distanz wird korrekt angezeigt. Hier kommt nun aber mein Problem:
1. Ich beende das Tracking in dem ich den Stop Button drücke. Da habe ich sagen wir 200m zurückgelegt.
2. Ich laufe einfach noch 2 Kilometer ohne aktives Tracking.
3. Ich starte das Tracking neu, nun wird mir aber 2,2 Kilometer als zurückgelegtte Distanz angezeigt.
Was ich erreichen möchte:
1. Beim drücken des Stop Buttons, soll die gesamte zurückgelegte Distanz auf Null gesetztt werden, und ab erneutem drücken auch wieder bei 0 angefangen werden. Hier ist noch mein Code für den Stop Button:
Könnte mir eventuell jemand erklären, wie ich das bewerkstelligen kann?
Viele Grüsse,
Stephan
Ich stehe grad auf dem Schlauch. Ich habe folgenden Code, um die zurückgelegte Distanz zu berechnen und anzuzeigen:
Swift:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
// Track Distance
if startDate == nil {
startDate = Date()
} else {
print("elapsedTime:", String(format: "%.0fs", Date().timeIntervalSince(startDate)))
}
if startLocation == nil {
startLocation = locations.first
} else if let location = locations.last {
traveledDistance += lastLocation.distance(from: location)
print("Traveled Distance:", traveledDistance)
print("Straight Distance:", startLocation.distance(from: locations.last!))
}
lastLocation = locations.last
//Track Route
for location in locations {
coordinates.append (location.coordinate)
let numberOfLocations = coordinates.count
print (" :-) \(numberOfLocations)")
if numberOfLocations > 5{
var pointsToConnect = [coordinates[numberOfLocations - 1], coordinates[numberOfLocations - 2]]
let polyline = MKPolyline(coordinates: &pointsToConnect, count: pointsToConnect.count)
mapView.addOverlay(polyline)
}
}
}
Das funktioniert soweit ganz gut, die Distanz wird korrekt angezeigt. Hier kommt nun aber mein Problem:
1. Ich beende das Tracking in dem ich den Stop Button drücke. Da habe ich sagen wir 200m zurückgelegt.
2. Ich laufe einfach noch 2 Kilometer ohne aktives Tracking.
3. Ich starte das Tracking neu, nun wird mir aber 2,2 Kilometer als zurückgelegtte Distanz angezeigt.
Was ich erreichen möchte:
1. Beim drücken des Stop Buttons, soll die gesamte zurückgelegte Distanz auf Null gesetztt werden, und ab erneutem drücken auch wieder bei 0 angefangen werden. Hier ist noch mein Code für den Stop Button:
Swift:
@IBAction func stopButtonPressed(_ sender: Any) {
TopNotchView.topNotchViewfadeOut(duration: 1.0)
timeElapsed.fadeOut(duration: 1.0)
distanceDriven.fadeOut(duration: 1.0)
stopwatchPauseButton.fadeOut(duration: 0.5)
stopwatchResetButton.fadeOut(duration: 0.5)
startButton.ButtonViewfadeOut(duration: 0.5)
startButton.setImage(UIImage(named: "GreenButtonHighRes.png"), for: .normal)
startButton.ButtonViewfadeIn(duration: 0.5)
// Testing disabling the screen sleep mode while recording a ride (Reenabling sleep when stop is pressed)
UIApplication.shared.isIdleTimerDisabled = false
locationManager.stopUpdatingLocation()
locationManager.stopMonitoringSignificantLocationChanges()
timer.invalidate()
(hours, minutes, seconds, fractions) = (0, 0, 0, 0)
timeElapsed.fadeOut(duration: 1.0)
timeElapsed.text = "00:00:00"
distanceDriven.text = "00.00 Km"
timeElapsed.textColor = UIColor.init(red: 156/255, green: 199/255, blue: 105/255, alpha: 1.0)
startButton.isEnabled = true
distanceDriven.fadeOut(duration: 1.0)
distanceDriven.textColor = UIColor.init(red: 156/255, green: 199/255, blue: 105/255, alpha: 1.0)
distanceDriven.fadeIn(duration: 1.0)
stopwatchPauseButton.isEnabled = true
timeElapsed.fadeIn(duration: 1.0)
stopwatchResetButton.isEnabled = false
stopwatchPauseButton.isEnabled = false
// Reset traveled distance to 0 and apply on Label
self.mapView.removeOverlays(self.mapView.overlays)
coordinates.removeAll()
traveledDistance -= traveledDistance
distanceDriven.text = "0 m"
}
Könnte mir eventuell jemand erklären, wie ich das bewerkstelligen kann?
Viele Grüsse,
Stephan