Géocodage et régions
Convertissez des coordonnées en adresses et surveillez des régions.
Géocodage et régions est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Qu’est-ce que le géocodage ?
Le géocodage convertit une adresse lisible par une personne en coordonnées ; le géocodage inverse transforme des coordonnées en une adresse lisible. Core Location fournit CLGeocoder pour ces deux opérations, en communiquant avec les serveurs d’Apple.
import CoreLocation
let geocoder = CLGeocoder()Géocodage direct d’une adresse
Appelez geocodeAddressString(_:) avec une adresse saisie librement. La fonction de fin d’exécution renvoie un tableau d’objets CLPlacemark ; prenez le premier et lisez sa location.
geocoder.geocodeAddressString("Eiffel Tower, Paris") { placemarks, error in
if let coord = placemarks?.first?.location?.coordinate {
print(coord.latitude, coord.longitude)
}
}Géocodage inverse de coordonnées
À partir d’un CLLocation, reverseGeocodeLocation(_:) renvoie des repères décrivant ce point : rue, ville, pays, code postal et bien plus encore.
let loc = CLLocation(latitude: 48.8584, longitude: 2.2945)
geocoder.reverseGeocodeLocation(loc) { placemarks, error in
if let p = placemarks?.first {
print(p.name ?? "", p.locality ?? "", p.country ?? "")
}
}La structure CLPlacemark
Un CLPlacemark expose des champs détaillés : name, thoroughfare (rue), locality (ville), administrativeArea (région), postalCode, country et isoCountryCode. Beaucoup sont facultatifs ; gérez donc les valeurs absentes avec prudence.
func format(_ p: CLPlacemark) -> String {
[p.thoroughfare, p.locality, p.country]
.compactMap { $0 }
.joined(separator: ", ")
}Limites du géocodeur
CLGeocoder dépend du réseau et est soumis à une limitation de débit. Effectuez une seule demande à la fois, évitez les boucles serrées et annulez le travail en cours avec cancelGeocode() lorsque le résultat n’est plus nécessaire.
geocoder.cancelGeocode()Géocodage asynchrone avec async/await
Le Swift moderne propose des variantes asynchrones, ce qui vous permet d’écrire un code linéaire avec try await plutôt qu’avec des gestionnaires de fin d’exécution.
func coordinate(for address: String) async throws -> CLLocationCoordinate2D? {
let placemarks = try await geocoder.geocodeAddressString(address)
return placemarks.first?.location?.coordinate
}Présentation du suivi de régions
Le suivi de régions (géorepérage) permet au système d’avertir votre app lorsque l’appareil entre dans une zone circulaire définie ou qu’il en sort — même lorsque votre app n’est pas en cours d’exécution. Il nécessite l’autorisation Toujours.
// Requires NSLocationAlwaysAndWhenInUseUsageDescription
manager.requestAlwaysAuthorization()Définir une CLCircularRegion
Un géorepère est une CLCircularRegion avec un centre, un rayon (en mètres) et un identifiant unique. Définissez notifyOnEntry et notifyOnExit pour choisir les événements qui vous intéressent.
let region = CLCircularRegion(
center: CLLocationCoordinate2D(latitude: 41.0, longitude: 29.0),
radius: 200,
identifier: "OfficeZone"
)
region.notifyOnEntry = true
region.notifyOnExit = trueDémarrer le suivi de régions
Appelez startMonitoring(for:) pour commencer. L’appareil impose une limite (environ 20 régions par app) ; surveillez donc uniquement les régions les plus pertinentes à un moment donné.
if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) {
manager.startMonitoring(for: region)
}Recevoir les événements d’entrée et de sortie
Les méthodes du délégué didEnterRegion et didExitRegion sont déclenchées lorsque les limites sont franchies. Utilisez l’identifier de la région pour savoir quel géorepère a déclenché l’événement.
func locationManager(_ m: CLLocationManager, didEnterRegion region: CLRegion) {
print("Entered:", region.identifier)
}
func locationManager(_ m: CLLocationManager, didExitRegion region: CLRegion) {
print("Exited:", region.identifier)
}Interroger l’état actuel
Pour savoir si l’appareil se trouve déjà dans une région sans attendre le franchissement d’une limite, appelez requestState(for:). Le résultat est transmis dans didDetermineState sous la forme de .inside, .outside ou .unknown.
manager.requestState(for: region)
func locationManager(_ m: CLLocationManager,
didDetermineState state: CLRegionState,
for region: CLRegion) {
print(region.identifier, state == .inside ? "inside" : "outside")
}Vérification rapide : géocodage et régions
Vérifiez votre compréhension.
Récapitulatif : géocodage et régions
Vous avez appris à convertir des adresses en coordonnées et inversement, ainsi qu’à surveiller des limites géographiques :
CLGeocodereffectue le géocodage direct et inversé (des variantes asynchrones existent) ; son utilisation est limitée par un quota.CLPlacemarkcontient des champs d’adresse détaillés, tous facultatifs.CLCircularRegiondéfinit des géorepères ; le suivi nécessite l’autorisation Toujours.- Gérez
didEnterRegion/didExitRegionet interrogez l’état avecrequestState(for:).
Questions Fréquemment Posées
La leçon « Géocodage et régions » est-elle gratuite ?
Oui — le texte complet de « Géocodage et régions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Géocodage et régions » ?
Convertissez des coordonnées en adresses et surveillez des régions. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Géocodage et régions » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Demander l’autorisation de localisation
- Obtenir la position de l’utilisateur
- Afficher des cartes dans SwiftUI
- Géocodage et régions