2017-09-09 1 views
-2

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

+1

Déjà répondu ici: https://stackoverflow.com/questions/25296691/get-users-current-location-coordinates – Martheli

Répondre

0

Mise à jour Solution:

Pour obtenir l'emplacement des utilisateurs en longitude et la latitude d'abord, vous devrez

  1. Ajouter import CoreLocation à votre classe
  2. Ajouter CLLocationManagerDelegate à votre déclaration de classe
  3. Ajoutez NSLocationWhenInUseUsageDescription ou NSLocationAlwaysUsageDescription à 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.
  4. 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() 
    
  5. 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

  1. Ajouter import AddressBookUI à votre classe
  2. Créer une CLGeocoder tels que let geocoder: CLGeocoder = CLGeocoder()
  3. 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.