Géolocalisation et cartes en Swift : Core Location et MapKit (iOS/macOS)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Géolocalisation et cartes en Swift (iOS/macOS) : Core Location et MapKit



Le développement d'applications modernes pour iOS et macOS nécessite souvent de travailler avec la géolocalisation et les cartes. Dans l'écosystème Apple, deux frameworks puissants existent à cet effet : Core Location (obtention de données géographiques) et MapKit (affichage de cartes, annotations, itinéraires). Dans cet article, nous allons détailler leurs fonctionnalités, fournir des exemples pratiques en Swift et montrer comment intégrer la géolocalisation dans votre application.



1. Core Location : Détermination de la position



Core Location est un framework permettant d'obtenir des informations géographiques : coordonnées, altitude, direction du déplacement, ainsi que la surveillance de géozones (geofencing). Il fonctionne avec le GPS, le Wi-Fi, les antennes relais et iBeacon.



1.1. Configuration des autorisations



Pour utiliser la géolocalisation, vous devez demander l'autorisation à l'utilisateur. Dans le fichier Info.plist, ajoutez l'une des clés suivantes :

  • NSLocationWhenInUseUsageDescription — pour obtenir des données uniquement lorsque l'application est activement utilisée.
  • NSLocationAlwaysAndWhenInUseUsageDescription — pour une surveillance en arrière-plan (nécessite une explication supplémentaire).


1.2. Obtention des coordonnées actuelles



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() // Arrête les mises à jour si une seule valeur est nécessaire }

func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Erreur d'obtention de la position : \\(error.localizedDescription)") }}

// Utilisationlet locationManager = LocationManager()locationManager.onLocationUpdate = { location in print("Latitude : \\(location.coordinate.latitude), Longitude : \\(location.coordinate.longitude)")}locationManager.requestLocation()


2. MapKit : Affichage des cartes et annotations



MapKit permet d'intégrer des cartes interactives Apple Maps dans les applications. La classe principale est MKMapView.



2.1. Création d'une carte dans Storyboard/XIB



Ajoutez MKMapView sur la scène et créez un IBOutlet dans le contrôleur. Assurez-vous que MapKit est importé.



2.2. Création programmatique d'une carte et ajout d'une 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)

// Définit la région (Moscou) 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 = "Moscou" annotation.s

Recommendations