Geolokalisierung und Karten in Swift: CoreLocation und MapKit für 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: Überblick über CoreLocation und MapKit



Die Entwicklung von Apps für iOS und macOS erfordert oft die Arbeit mit geografischen Daten und der Visualisierung von Karten. Im Apple-Ökosystem gibt es dafür zwei leistungsstarke Frameworks: CoreLocation (zur Standortermittlung, Geokodierung und Überwachung von Regionen) und MapKit (zum Anzeigen von Karten, Hinzufügen von Annotationen und Erstellen von Routen). In diesem Artikel werden wir ihre Funktionen im Detail besprechen und praktische Beispiele in Swift zeigen.



1. CoreLocation: Koordinaten des Geräts abrufen



CoreLocation bietet Zugriff auf die Hardware zur Standortermittlung: GPS, WLAN und Mobilfunknetze. Zu Beginn müssen Sie das Framework importieren und die Berechtigung des Benutzers anfordern.



Berechtigungen einrichten

Fügen Sie in die Datei Info.plist die folgenden Schlüssel ein:

  • NSLocationWhenInUseUsageDescription — für die Nutzung der App im aktiven Modus
  • NSLocationAlwaysAndWhenInUseUsageDescription — für die Hintergrundüberwachung


Beispiel zum Abrufen des aktuellen Standorts

import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate { private let manager = CLLocationManager() override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest } func requestPermission() { manager.requestWhenInUseAuthorization() } func startUpdating() { manager.startUpdatingLocation() } // MARK: - Delegate func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let location = locations.last else { return } print("Breitengrad: \\(location.coordinate.latitude), Längengrad: \\(location.coordinate.longitude)") } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Fehler: \\(error.localizedDescription)") }}


2. MapKit: Karten anzeigen und Annotationen



MapKit ermöglicht es, Apple Maps in die App einzubetten. Die Hauptklasse ist MKMapView. Wir betrachten die grundlegende Einrichtung und das Hinzufügen von Markierungen.



Karte im Code erstellen

import MapKitimport SwiftUI

struct MapView: UIViewRepresentable { @Binding var region: MKCoordinateRegion func makeUIView(context: Context) -> MKMapView { let mapView = MKMapView() mapView.delegate = context.coordinator return mapView } func updateUIView(_ uiView: MKMapView, context: Context) { uiView.setRegion(region, animated: true) } // Coordinator zur Ereignisbehandlung func makeCoordinator() -> Coordinator { Coordinator(self) } class Coordinator: NSObject, MKMapViewDelegate { var parent: MapView init(_ parent: MapView) { self.parent = parent } }}


Annotation hinzufügen (Pin auf der Karte)

import MapKit

class CustomAnnotation: NSObject, MKAnnotation { var coordinate: CLLocationCoordinate2D var title: String? var subtitle: String? init(coordinate: CLLocationCoordinate2D, title: String, subtitle: String) { self.coordinate = coordinate self.title = title self.subtitle = subtitle }}

// Verwendung:let annotation = CustomAnnotation( coordinate: CLLocationCoordinate2D(latitude: 55.7558, longitude: 37.6173), title: "Moskau", subtitle: "Roter Platz")mapView.addAnnotation(annotation)


3. Geokodierung: Adresse in Koordinaten umwandeln



Die Klasse CLGeocoder ermöglicht es, eine Textadresse in Koordinaten umzuwandeln (Vorwärtsgeokodierung) und umgekehrt (Rückwärtsgeokodierung).



import CoreLocation

l

Empfehlungen