- Étape 4: Bouton Localiser: Afficher l’emplacement sur la Carte
- Ajouter une annotation à la carte
- Ajoutez l’adresse complète de l’emplacement comme titre à l’annotation
- Ajouter un repère à partir d’une adresse de chaîne à la carte
- Étape 6: Afficher l’emplacement en temps réel sur la carte
- Étape 7: Construire & Exécuter
Étape 4: Bouton Localiser: Afficher l’emplacement sur la Carte
Première étape, nous récupérons l’emplacement actuel lorsque l’utilisateur appuie sur le bouton Localiser-moi 🧭.
Le gestionnaire de localisation vous donne l’emplacement actuel dans un objet CLLocation
avec locationManager.location
. Cet objet contient différentes informations, y compris les valeurs de coordonnées de latitude et de longitude.
Ajouter une annotation à la carte
Créons une nouvelle fonction qui ajoutera une annotation à la carte aux coordonnées données.
La fonction suivante crée un nouvel objet MKPointAnnotation
et l’ajoute à la carte après avoir supprimé toutes les annotations précédentes. Il zoome et fait également défiler la carte pour placer l’annotation nouvellement ajoutée au centre de l’écran.
Maintenant que nous avons cette fonction, vous pouvez l’appeler avec les informations de localisation actuelles que vous souhaitez afficher, dans votre fonction de bouton IBAction. Pour l’instant, nous allons mettre nil
comme titre car nous n’avons pas encore cette information.
updateLocationOnMap(to: locationManager.location, with: nil)
Ajoutez l’adresse complète de l’emplacement comme titre à l’annotation
Maintenant, nous allons ajouter l’adresse complète de l’emplacement comme titre à l’annotation. CoreLocation nous permet de le faire facilement avec CLGeocoder
.
Créez une extension à CLLocation
et ajoutez la fonction suivante:
Il inversera l’emplacement du géocode et vous donnera un CLPlacemark
, contenant toutes les informations nécessaires pour extraire l’adresse postale complète.
Les informations d’adresse sont stockées comme ci-dessous dans l’objet Repère. Pour obtenir une valeur de chaîne de l’adresse complète, vous devrez concaténer les composants dont vous avez besoin. Voici un exemple pour l’adresse du siège social d’Apple dans le tableau ci-dessous:
Ajoutons une fonction à notre extension CLLocation
qui nous donnera directement l’adresse complète. Pour plus de commodité, vous pouvez ajouter une nouvelle propriété dans une extension CLPlacemark
. Dans cet exemple, cette propriété est appelée stringValue
.
Maintenant, mettons à jour l’appel à updateLocationOnMap
avec notre nouvelle fonction lookUpLocationName
.
Créez et exécutez votre application: maintenant, lorsque vous appuyez sur le bouton Localiser-moi, votre emplacement actuel est ajouté sur la carte, affichant votre adresse complète de localisation actuelle!
Ajouter un repère à partir d’une adresse de chaîne à la carte
La plupart des fonctions que nous avons écrites à l’étape 3 pour le bouton localiser-moi seront également utilisées dans cette partie. Nous ajouterons seulement une nouvelle fonction updatePlaceMark(to address: String)
et l’appellerons lors de la validation de TextField.
Dans cette fonction, nous obtiendrons d’abord des repères à partir de la valeur de chaîne saisie par l’utilisateur, puis nous mettrons à jour la carte avec le premier repère avec sa valeur d’adresse complète.
Notez que geocodeAddressString
n’est pas une fonction de recherche d’emplacement, donc pour que cela fonctionne, il faudra soit une adresse valide, soit un emplacement identifiable, une ville, un état ou un pays dans le champ pour avoir un résultat.
Étape 6: Afficher l’emplacement en temps réel sur la carte
Pour afficher l’emplacement en temps réel, ajoutez la fonction déléguée suivante dans l’extension CLLocationManagerDelegate
que nous avons déjà créée.
Le Gestionnaire de localisation appellera cette fonction automatiquement lors des mises à jour de localisation, selon la stratégie définie au début.
Étape 7: Construire & Exécuter
Construire et exécuter votre application: Vous disposez désormais d’une application de carte qui vous indique votre position actuelle, affiche l’adresse complète en temps réel, vous localise sur un bouton localiser-moi et vous permet de rechercher des emplacements à partir d’un champ de texte.