Hey est-ce que quelqu'un sait comment créer un bouton qui remplit un UITextField avec l'adresse actuelle de l'utilisateur? Je suis ouvert à tous les frameworks ou API que j'ai juste besoin de pousser dans la bonne direction, peut-être un tutoriel. Merci.Swift UserLocation UITextField
Répondre
Mise à jour Solution:
Pour obtenir l'emplacement des utilisateurs en longitude et la latitude d'abord, vous devrez
- Ajouter
import CoreLocation
à votre classe - Ajouter
CLLocationManagerDelegate
à votre déclaration de classe - Ajoutez
NSLocationWhenInUseUsageDescription
ouNSLocationAlwaysUsageDescription
à votre fichier info.plist. Vous faites simplement cela en appuyant sur le bouton Ajouter et copiez et collez l'un d'entre eux. Il devrait corriger automatiquement àPrivacy - Location When In Use Usage Description
et vous pouvez ensuite ajouter une description dans la boîte à droite de celui-ci. Cette description apparaîtra dans la fenêtre contextuelle lorsque l'application demande à utiliser l'emplacement de l'utilisateur. Vous devez ensuite lancer le gestionnaire de position. Vous pouvez le faire en utilisant
let manager = CLLocationManager() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest manager.requestAlwaysAuthorization() manager.startUpdatingLocation()
Vous pouvez alors obtenir l'emplacement de l'utilisateur à l'aide
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { let locat = manager.location
}
Maintenant que vous avez l'emplacement de l'utilisateur en longitude et latitude, vous Je vais devoir utiliser le géocodage pour le convertir en adresse. Pour ce faire, vous devez
- Ajouter
import AddressBookUI
à votre classe - Créer une
CLGeocoder
tels quelet geocoder: CLGeocoder = CLGeocoder()
Mettre en oeuvre une fonction inverse de géocodage
geocoder.reverseGeocodeLocation(locat!, completionHandler: { (placemarks, error) in if (error != nil) { //geocoding failed } else { let pm = placemarks! as [CLPlacemark] if pm.count > 0 { let pm = placemarks![0] let address = (pm.subThoroughfare + ", " + pm.thoroughfare + ", " + pm.locality + ", " + pm.subLocality + ", " + pm.country + ", " + pm.postalCode) print(address) manager.stopUpdatingLocation() } } })
Cette fonction prend les utilisateurs emplacement actuel que nous avons déjà compris avant, puis prend chaque morceau de l'emplacement, les commandes co correctement, et l'imprime dans la console. Il arrête alors la mise à jour de l'emplacement de l'utilisateur. Puis finalement, vous pouvez simplement changer le texte de l'UIButton à cette chaîne contenant l'adresse.
Déjà répondu ici: https://stackoverflow.com/questions/25296691/get-users-current-location-coordinates – Martheli