2016-06-03 11 views
0

Ich versuche, den Standort des Benutzers in Swift zu erhalten. Verwenden Sie den folgenden Code. Aber wenn ich rufeIch kann Swift nicht dazu bringen, mir den Standort eines Benutzers zu geben

lassen currentloc = self.locationManager.location? .koordinate, gibt es einen Nullwert zurück. Der folgende Code liegt über der Let-Currentloc-Zeile im Skript.

 self.locationManager.delegate = self 
    self.locationManager.requestAlwaysAuthorization() 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    self.locationManager.requestWhenInUseAuthorization() 
    self.locationManager.startUpdatingLocation() 
+1

Wird die Delegate-Methode aufgerufen? Weil der Ort nicht "unmittelbar" ist. Sie müssen es über die Delegate-Methode abrufen. – Larme

+0

Ich bin mir nicht sicher. Was ist die Delegiertenmethode? –

+3

'self.locationManager.delegate': Warum hast du diese Zeile gesetzt? ' - locationManager: didUpdateLocations:' – Larme

Antwort

1

Stellen Sie sicher:

  1. import Corelocation + import MapKit in Ihrer Klasse.
  2. entsprechen die MKMapViewDelegate und CLLocationManagerDelegate
  3. instanziiert die Location: let locationManager = CLLocationManager() in Ihren Klassenvariablen
  4. in Ihrem viewDidLoad Versuch:

    self.locationManager.delegate = self 
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest 
    self.locationManager. requestAlwaysAuthorization() 
    self.locationManager.startUpdatingLocation() 
    self.mapView.showsUserLocation = true 
    
  5. Fügen Sie die folgenden Delegatmethode Ihren Standort drucken:

    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    print(locations.last!.coordinate) 
    } 
    
+0

Vielen Dank. Aber ich denke, es ist ein Problem in Bezug auf die Aktualisierung des Benutzerstandortes und wie es nicht sofort ist. Sehen Sie, ich habe eine Schleife, die Etiketten mit ihrer Entfernung vom Benutzer druckt, also versuche ich es sofort zu machen. Es scheint nicht zu funktionieren –

+0

Verwenden Sie einen Simulator oder ein echtes Gerät? – Hapeki

+0

Ein Simulator (iPhone 6) –

0

TLDR;

  • Produkt -> Schema -> Schema bearbeiten -> Optionen -> Zulassen Ort Simulation geprüft und versuchen werden, muss eine Standardposition bereitstellt, lassen Sie es nicht auf „none“

Wenn Sie Test auf Simulator, müssen Sie einen Standardstandort zur Verfügung stellen, überprüfen Sie bitte meine Antwort hier: https://stackoverflow.com/a/32887820/4887400

+0

Danke, aber bedeutet das, dass mein Code auf einem Gerät funktioniert, wenn ich 'locationManager.location.coordinates' anrufe und meinen Code mit dem Standort gerade habe Danach? Oder müsste ich den Rest des Codes im locationManager delegieren? –

Verwandte Themen