Géolocalisation et cartes en Swift pour iOS/macOS : guide complet

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 mobiles et de bureau pour l'écosystème Apple nécessite souvent l'intégration de fonctionnalités de géolocalisation et d'affichage de cartes. En Swift, deux frameworks puissants sont utilisés à cet effet : Core Location (pour la détermination de la position) et MapKit (pour le travail avec les cartes). Dans cet article, nous examinerons en détail leurs capacités, fournirons des exemples de code pratiques et expliquerons comment utiliser efficacement ces outils dans vos projets.



1. Core Location : obtention des coordonnées et travail avec les données géographiques



Core Location est un framework qui donne accès aux moyens matériels et logiciels de détermination de la position de l'appareil. Il prend en charge le GPS, le Wi-Fi, les antennes relais et iBeacon. Principales fonctionnalités :



  • Détermination des coordonnées actuelles (latitude, longitude)
  • Surveillance des changements significatifs de position
  • Géozones (régions) — entrée/sortie d'une zone définie
  • Détermination de la direction et de la vitesse de déplacement
  • Géocodage inverse (adresse à partir des coordonnées)


1.1. Configuration des autorisations



Pour travailler avec la géolocalisation, il est nécessaire de demander l'autorisation à l'utilisateur. Dans Info.plist, ajoutez les clés :



  • NSLocationWhenInUseUsageDescription — pour une utilisation uniquement lorsque l'application est active
  • NSLocationAlwaysAndWhenInUseUsageDescription — pour la surveillance en arrière-plan


1.2. Exemple : obtention de la position actuelle



Créons un gestionnaire de position simple :



import CoreLocation

class LocationManager: NSObject, CLLocationManagerDelegate { let manager = CLLocationManager() var currentLocation: CLLocation? override init() { super.init() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() } func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { guard let location = locations.last else { return } currentLocation = location print("Latitude : \\(location.coordinate.latitude)") print("Longitude : \\(location.coordinate.longitude)") manager.stopUpdatingLocation() } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Erreur : \\(error.localizedDescription)") }}


2. MapKit : affichage des cartes et travail avec les annotations



MapKit permet d'intégrer les cartes Apple Maps dans les applications. Il prend en charge :



  • Affichage des cartes standard, satellites et hybrides
  • Ajout d'annotations (épingles, marqueurs personnalisés)
  • Calcul d'itinéraires (voiture, à pied, transports en commun)
  • Suivi de la position de l'utilisateur sur la carte


2.1. Configuration de base de MKMapView



Ajoutez MKMapView dans le storyboard ou créez-le par programmation :



import MapKit

class MapViewController: UIViewController { @IBOutlet weak var mapView: MKMapView! override func viewDidLoad() { super.viewDidLoad() mapView.mapType = .standard mapView.showsUserLocation = true mapView.delegate = self }}


2.2. Ajout d'annotations



Créons une annotation personnalisée :



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    }}

// Ajout sur la cartelet annotation = CustomAnnotation

Recommendations