Standort des Benutzers abrufen
Empfangen Sie Standortaktualisierungen mit CLLocationManager.
Standort des Benutzers abrufen ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Standortaktualisierungen starten
Sobald die Autorisierung erteilt wurde, rufen Sie startUpdatingLocation() auf, um fortlaufend neue Positionsbestimmungen zu empfangen. Der Manager übermittelt sie über den Delegate. Rufen Sie immer stopUpdatingLocation() auf, wenn Sie die Aktualisierungen nicht mehr benötigen, um den Akku zu schonen.
manager.startUpdatingLocation()
// ... later
manager.stopUpdatingLocation()Standortdaten im Delegate empfangen
Neue Positionsbestimmungen treffen in locationManager(_:didUpdateLocations:) ein. Das Array ist von der ältesten zur neuesten Position sortiert, daher ist das letzte Element die aktuellste Position.
func locationManager(_ m: CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
guard let latest = locations.last else { return }
print(latest.coordinate.latitude, latest.coordinate.longitude)
}Das CLLocation-Objekt
Jede Positionsbestimmung ist ein CLLocation-Objekt, das weit mehr als Koordinaten enthält: coordinate, altitude, speed, course, timestamp und Genauigkeitswerte. Prüfen Sie diese Werte, um zu entscheiden, ob eine Positionsbestimmung zuverlässig genug ist.
func describe(_ loc: CLLocation) {
print("lat:", loc.coordinate.latitude)
print("lon:", loc.coordinate.longitude)
print("alt:", loc.altitude)
print("when:", loc.timestamp)
}Gewünschte Genauigkeit
Setzen Sie desiredAccuracy, um Core Location mitzuteilen, wie präzise die Positionsbestimmungen sein müssen. Eine höhere Genauigkeit verbraucht mehr Energie. Zu den Konstanten gehören kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters und kCLLocationAccuracyKilometer.
manager.desiredAccuracy = kCLLocationAccuracyNearestTenMetersEntfernungsfilter
Verwenden Sie distanceFilter, um Aktualisierungen zu unterdrücken, bis sich das Gerät um eine Mindestanzahl von Metern bewegt hat. Das reduziert Störungen und spart Energie bei Anwendungsfällen, die nicht jede noch so kleine Bewegung benötigen.
manager.distanceFilter = 50 // metersQualität einer Positionsbestimmung beurteilen
Die Eigenschaft horizontalAccuracy gibt den Vertrauensradius in Metern an. Ein negativer Wert bedeutet, dass die Positionsbestimmung ungültig ist. Verwerfen Sie außerdem veraltete Positionsbestimmungen, indem Sie prüfen, wie lange der timestamp zurückliegt.
func isUsable(_ loc: CLLocation) -> Bool {
guard loc.horizontalAccuracy >= 0 else { return false }
let age = -loc.timestamp.timeIntervalSinceNow
return age < 15 && loc.horizontalAccuracy < 100
}Eine einmalige Standortbestimmung anfordern
Wenn Sie nur eine einzelne Positionsbestimmung und keinen kontinuierlichen Datenstrom benötigen, rufen Sie requestLocation() auf. Der Manager übermittelt eine Position an den Delegate und beendet sich anschließend automatisch. Das ist akkuschonender, als kontinuierliche Aktualisierungen zu starten.
manager.requestLocation()Standortfehler behandeln
Fehler treffen in locationManager(_:didFailWithError:) ein. Ein häufiger Fehler ist CLError.locationUnknown, der oft vorübergehend auftritt — warten Sie in diesem Fall weiter. CLError.denied bedeutet, dass die Berechtigung entzogen wurde und Sie die Aktualisierungen beenden sollten.
func locationManager(_ m: CLLocationManager,
didFailWithError error: Error) {
if let clErr = error as? CLError, clErr.code == .denied {
m.stopUpdatingLocation()
}
}Überwachung signifikanter Standortänderungen
Für energiesparendes, grobes Tracking, das Ihre App im Hintergrund aktivieren kann, verwenden Sie startMonitoringSignificantLocationChanges(). Die Methode wird erst ausgelöst, wenn sich das Gerät ungefähr 500 Meter bewegt hat, und eignet sich ideal für regionenbezogene Funktionen.
manager.startMonitoringSignificantLocationChanges()Heading und Kursrichtung
Für Kompassfunktionen liefert startUpdatingHeading() über locationManager(_:didUpdateHeading:) die magnetische oder geografische Richtung. Beachten Sie, dass sich CLLocation.course (die Bewegungsrichtung) vom Heading (der Geräteausrichtung) unterscheidet.
func locationManager(_ m: CLLocationManager,
didUpdateHeading newHeading: CLHeading) {
print("Heading:", newHeading.trueHeading)
}Entfernung zwischen Punkten berechnen
CLLocation kann mit distance(from:) die Luftlinienentfernung zu einem anderen Standort messen und in Metern zurückgeben. Das ist praktisch für Näherungslogik ohne eine Kartenansicht.
let a = CLLocation(latitude: 41.0, longitude: 28.9)
let b = CLLocation(latitude: 41.1, longitude: 29.0)
let meters = a.distance(from: b)
print("Distance:", meters)Kurztest: Standortdaten empfangen
Prüfen Sie, wie gut Sie das Empfangen von Positionsbestimmungen beherrschen.
Zusammenfassung: Standort des Benutzers ermitteln
Sie wissen jetzt, wie Sie Koordinaten erhalten:
startUpdatingLocation()für einen Datenstrom undrequestLocation()für eine einzelne Positionsbestimmung.- Lesen Sie die neueste Positionsbestimmung mit
locations.lastim Delegate aus. - Passen Sie
desiredAccuracyunddistanceFilteran, um Energieverbrauch und Genauigkeit abzuwägen. - Validieren Sie
horizontalAccuracyundtimestamp, bevor Sie eine Positionsbestimmung verwenden.
Lerne Swift mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 122
- Lektionen
- 409
Häufig gestellte Fragen
Ist die Lektion „Standort des Benutzers abrufen“ kostenlos?
Ja — der vollständige Text von „Standort des Benutzers abrufen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Standort des Benutzers abrufen“?
Empfangen Sie Standortaktualisierungen mit CLLocationManager. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Standort des Benutzers abrufen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Standortberechtigung anfordern
- Standort des Benutzers abrufen
- Karten in SwiftUI anzeigen
- Geocoding und Regionen