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 activeNSLocationAlwaysAndWhenInUseUsageDescription— 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 Aussi dans la bibliothèque
Travailler avec CSV en C++ : bibliothèque libcsv et outils standard
Validation des données en TypeScript : Zod, Yup et autres outils
Spring Data JPA Java : guide complet avec exemples concrets