Vidéo: Comment géolocaliser un visiteur 2025
La conversion d'une adresse à un ensemble de coordonnées de carte dans votre application iOS est appelée géocodage direct, tandis que la conversion d'un ensemble de coordonnées est appelé géocodage inverse. Le géocodage vers l'avant et vers l'arrière est pris en charge dans la classe CLGeocoder d'Apple, qui fait partie du framework CoreLocation d'Apple.
La classe CLGeocoder fournit des services de conversion entre une coordonnée (spécifiée en latitude et longitude) et l'adresse de cette coordonnée. La classe CoreLocation fournit également des services pour le reverse: renvoyer la valeur de coordonnée pour une chaîne de texte qui est la représentation conviviale de cette coordonnée.
Pour utiliser un objet CoreLocation, créez-le d'abord, puis envoyez-lui un message de géocodage direct ou inverse.
-
Géocodage inverse: Ces requêtes prennent une valeur de latitude et de longitude et trouvent une adresse lisible par l'utilisateur.
-
Géocodage vers l'avant: Ces requêtes prennent une adresse lisible par l'utilisateur et trouvent la latitude et la longitude correspondantes. Les demandes de géocodage vers l'avant peuvent également renvoyer des informations supplémentaires sur l'emplacement spécifié, tel qu'un point d'intérêt ou un bâtiment à cet emplacement.
Pour les deux types de requête, les résultats sont renvoyés sous la forme d'un tableau d'objets dans un bloc de gestionnaire d'achèvement. Dans le cas de demandes de géocodage vers l'avant, plusieurs objets CLPlacemark peuvent être renvoyés si les informations fournies génèrent plusieurs emplacements possibles.
Un objet CLPlacemark contient, entre autres, les propriétés suivantes:
-
location: Très utile pour le géocodage direct
-
name: Le nom du repère
-
addressDictionary: un dictionnaire contenant les clés du carnet d'adresses et les valeurs du repère
-
ISOcountryCode: le nom du pays abrégé
-
country: le nom de le pays
-
postalcode: Le code postal
-
administrativeLa région: L'état ou la province
-
subAdministrativeArea: Autres informations administratives (telles que county)
-
localité: La ville
-
subLocality: Informations supplémentaires sur la commune comme quartier ou un nom commun pour l'emplacement
-
voie de circulation: La rue
-
sous-itinéraire: Informations supplémentaires au niveau de la rue, telles que le numéro de bâtiment
-
région: La CLRegion
disponible dans l'objet CLPlacemark dans les propriétés suivantes:
-
areasofInterest: zones d'intérêt associées au repère
-
inlandWater: nom de la masse d'eau intérieure associée au repère
-
océan: nom de l'océan associé à l'endroit mark
Pour prendre des décisions intelligentes sur les types d'informations à renvoyer, le serveur géocodeur utilise toutes les informations qui lui sont fournies lors du traitement de la demande.Par exemple, si l'utilisateur se déplace rapidement le long d'une autoroute, le géocodeur peut renvoyer le nom de la région globale plutôt que le nom d'un petit parc que l'utilisateur traverse.
Voici quelques règles assez lâches (Apple) pour utiliser l'objet CLGeocoder:
-
Envoyer au plus une requête de géocodage pour une action d'utilisateur unique. C'est-à-dire, ne commencez pas une autre demande jusqu'à ce que le premier soit terminé.
-
Si l'application a besoin de l'emplacement géocodé dans plus d'un emplacement de carte, enregistrez puis réutilisez les résultats de la demande de géocodage initiale au lieu d'en faire un autre.
-
Lorsque vous souhaitez mettre à jour automatiquement l'emplacement actuel de l'utilisateur (par exemple, lorsque l'utilisateur bouge), émettez de nouvelles demandes de géocodage uniquement lorsque l'utilisateur a parcouru une distance significative, un délai raisonnable ou les deux. Par exemple, dans une situation typique, vous ne devez pas envoyer plus d'une requête de géocodage par minute.
-
Ne lancez pas une demande de géocodage si votre application est inactive ou en arrière-plan.
-
Un périphérique iOS doit avoir accès au réseau pour que l'objet CLGeocoder renvoie des informations détaillées sur les repères. Même si iOS stocke suffisamment d'informations localement pour signaler le nom du pays localisé et le code pays ISO pour de nombreux emplacements, si les informations sur le pays ne sont pas disponibles pour un emplacement spécifique, l'objet CLGeocoder peut toujours signaler une erreur.
Comme vous pouvez probablement le supposer, le géocodage est coûteux - c'est pourquoi ces règles mettent l'accent sur les données de mise en cache et non sur la mise à jour à moins que cela ne soit nécessaire.
Vous pouvez utiliser un objet CLGeocoder conjointement ou indépendamment avec les classes de l'infrastructure MapKit.
