Geolokalisierung und Karten in Swift: Core Location und MapKit (iOS/macOS)

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Geolokalisierung und Karten in Swift (iOS/macOS): Core Location und MapKit



Die Entwicklung moderner Anwendungen für iOS und macOS erfordert oft die Arbeit mit Geolokalisierung und Karten. Im Apple-Ökosystem gibt es dafür zwei leistungsstarke Frameworks: Core Location (Abruf geografischer Daten) und MapKit (Anzeige von Karten, Annotationen, Routen). In diesem Artikel werden wir ihre Möglichkeiten im Detail besprechen, praktische Beispiele in Swift zeigen und erläutern, wie Sie Geolokalisierung in Ihre Anwendung integrieren.



1. Core Location: Standortbestimmung



Core Location ist ein Framework zum Abrufen geografischer Informationen: Koordinaten, Höhe über dem Meeresspiegel, Bewegungsrichtung sowie zur Überwachung von Geofences. Es arbeitet mit GPS, WLAN, Mobilfunkmasten und iBeacon.



1.1. Berechtigungen einrichten



Um die Geolokalisierung zu nutzen, muss die Berechtigung des Benutzers eingeholt werden. Fügen Sie in der Datei Info.plist einen der folgenden Schlüssel hinzu:

  • NSLocationWhenInUseUsageDescription – zum Abrufen von Daten nur bei aktiver Nutzung der App.
  • NSLocationAlwaysAndWhenInUseUsageDescription – für die Hintergrundüberwachung (erfordert eine zusätzliche Erklärung).


1.2. Aktuelle Koordinaten abrufen



import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate { private let manager = CLLocationManager() var onLocationUpdate: ((CLLocation) -> Void)?

override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest }

func requestLocation() { manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() }

// MARK: - CLLocationManagerDelegate func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let location = locations.last else { return } onLocationUpdate?(location) manager.stopUpdatingLocation() // Stoppt Updates, wenn nur ein Wert benötigt wird }

func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Fehler beim Abrufen des Standorts: \\(error.localizedDescription)") }}

// Verwendunglet locationManager = LocationManager()locationManager.onLocationUpdate = { location in print("Breitengrad: \\(location.coordinate.latitude), Längengrad: \\(location.coordinate.longitude)")}locationManager.requestLocation()


2. MapKit: Karten anzeigen und Annotationen



MapKit ermöglicht es, interaktive Apple Maps in Anwendungen einzubetten. Die Hauptklasse ist MKMapView.



2.1. Karte in Storyboard/XIB erstellen



Fügen Sie MKMapView zur Szene hinzu und erstellen Sie einen IBOutlet im Controller. Stellen Sie sicher, dass MapKit importiert ist.



2.2. Programmgesteuerte Kartenerstellung und Hinzufügen einer Annotation



import MapKit

class MapViewController: UIViewController { var mapView: MKMapView!

override func viewDidLoad() { super.viewDidLoad() setupMap() addAnnotation() }

private func setupMap() { mapView = MKMapView(frame: view.bounds) mapView.autoresizingMask = [.flexibleWidth, .flexibleHeight] view.addSubview(mapView)

// Region festlegen (Moskau) let center = CLLocationCoordinate2D(latitude: 55.751244, longitude: 37.618423) let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05) let region = MKCoordinateRegion(center: center, span: span) mapView.setRegion(region, animated: true) }

private func addAnnotation() { let annotation = MKPointAnnotation() annotation.coordinate = CLLocationCoordinate2D(latitude: 55.751244, longitude: 37.618423) annotation.title = "Moskau" annotation.s

Empfehlungen