2017-09-09 7 views
-2

Hey weiß jemand, wie man einen Knopf macht, der ein UITextField mit der gegenwärtigen Adresse des Benutzers füllt? Ich bin offen für alle Frameworks oder APIs, die ich brauche, um in die richtige Richtung zu gehen, vielleicht ein Tutorial. Vielen Dank.Swift UserLocation UITextField

+1

Bereits beantwortet hier: https://stackoverflow.com/questions/25296691/get-users-current-location-coordinates – Martheli

Antwort

0

Aktualisiert Lösung:

Um den Benutzer Lage in der Länge zu erhalten und Breite zuerst werden Sie

  1. import CoreLocation Ihre Klasse hinzufügen haben
  2. CLLocationManagerDelegate auf Ihre Klassendeklaration hinzufügen
  3. Fügen Sie Ihrer Datei info.plist NSLocationWhenInUseUsageDescription oder NSLocationAlwaysUsageDescription hinzu. Sie tun dies einfach, indem Sie die Schaltfläche "Hinzufügen" drücken und nur einen der beiden kopieren und einfügen. Es sollte automatisch auf Privacy - Location When In Use Usage Description korrigieren und dann können Sie eine Beschreibung in das Feld rechts daneben einfügen. Diese Beschreibung wird im Popup-Fenster angezeigt, wenn die App die Verwendung des Benutzerstandorts anfordert.
  4. Anschließend müssen Sie den Standortmanager initiieren. Sie können dies tun, indem

    let manager = CLLocationManager() 
    manager.delegate = self 
    manager.desiredAccuracy = kCLLocationAccuracyBest 
    manager.requestAlwaysAuthorization() 
    manager.startUpdatingLocation() 
    
  5. verwenden, können Sie dann die

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let locat = manager.location 
    

    }

Jetzt mit Standort Benutzer erhalten, dass Sie die Position des Benutzers in Länge und Breite haben, können Sie muss Geocoding verwenden, um es in eine Adresse umzuwandeln. Um dies zu tun Sie müssen

  1. hinzufügen import AddressBookUI Ihre Klasse
  2. erstellen CLGeocoder wie let geocoder: CLGeocoder = CLGeocoder()
  3. Implementieren eine Reverse Geocoding-Funktion

    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() 
         } 
        } 
    }) 
    

Diese Funktion nimmt den Benutzer aktueller Standort, den wir schon vorher herausgefunden haben und dann jedes Stück des Ortes nehmen, bestellt es mit Richtig und druckt es in der Konsole. Es stoppt dann die Aktualisierung des Benutzerstandorts.

Dann können Sie schließlich den Text des UIButton in den String ändern, der die Adresse enthält.

Verwandte Themen