CLLocationManager startUpdatingLocation funktioniert nicht

8

So, jetzt bekomme ich zumindest Rückrufe mit dem folgenden Code ...

%Vor%

Ich kann Haltepunkte in der zweiten Methode setzen und NSLog meldet fortwährende Standortaktualisierungen, aber aus irgendeinem Grund funktioniert der Zoom mit span nicht. Irgendeine Idee warum? Es hat meine Koordinaten und alles. Irgendwie kratze ich meinen Kopf an diesem.

    
Coltrane 28.07.2012, 02:23
quelle

7 Antworten

15

Weisen Sie den CLLocationManager einer (starken) Eigenschaft Ihrer Klasse zu. (Ich nehme an, Sie verwenden ARC BTW.) Momentan lebt der CLLocationManager nicht über das Ende der viewDidLoad-Methode hinaus, so dass er Ihre Delegate-Methode auch nicht aufrufen kann.

    
Johan Kool 28.07.2012, 14:38
quelle
14

Stellen Sie sicher, dass Sie <CLLocationManagerDelegate> in der @interface -Datei hinzugefügt haben.

Bearbeiten :

Wenn der Delegat richtig eingerichtet ist, vergewissern Sie sich, dass Sie Ihre locationManager -Eigenschaft verwenden:

In der Datei .h :

%Vor%

In viewDidLoad :

%Vor%     
nevan king 28.07.2012 09:29
quelle
5

Ich denke, Sie können dies auf zwei Arten tun:

  1. Verwendung des CLLocation-Frameworks

Überprüfen Sie, ob Sie den VIEWController mit CLLocationManagerDelegate-Methoden übernommen haben

%Vor%

In ViewController.m:

%Vor%

2.Verwenden des gleichen MKMapKit-Frameworks Sie können dies tun, indem Sie die MKMapViewDelegate-Methode mit dem Namen didUpdateUserLocation verwenden: Hier brauchen Sie den CLLocaionManager nicht, Dies geschieht durch: In ViewController.h:

%Vor%

und In ViewController.m Datei:

%Vor%     
Shanmugaraja G 28.07.2012 06:13
quelle
1

Zunächst einmal können Sie nie sicherstellen, dass der Standortmanager den Standort überhaupt aktualisieren kann. Während des Updates konnte ein Fehler auftreten oder Sie haben keinen Zugriff auf den Standort des Benutzers.

Implementieren Sie diese CLLocationManager-Delegatmethode und überprüfen Sie den Fehler.

%Vor%
  

"Die Implementierung dieser Methode ist optional. Sie sollten diese Methode jedoch implementieren ."

    
0x8b4df00d 28.07.2012 04:05
quelle
1

Wenn Sie dies nur im Simulator ausführen, müssen Sie möglicherweise aufgefordert werden, die Koordinaten zu ändern. In Xcode gibt es eine Leiste über dem Debug-Ausgabefenster mit dem typischen Pfeil für die Ortungsdienste. Daneben ist eine Dropdown-Liste mit Standorten. Sobald die App ausgeführt wird, wechseln Sie den zu simulierenden Speicherort und sehen Sie, ob diese Änderung Ihren Code auslöst. Dann testen Sie es auf einem echten Gerät.

    
Craig 28.07.2012 14:18
quelle
0

In meinem Fall wurde didChangeAuthorization nicht eingegeben. Ich habe versucht, ein echtes Gerät.

Ich habe die Anwendung vom Telefon gelöscht und erneut installiert. Und es funktioniert!

Hoffe das hilft jemandem:)

    
Dx_ 15.10.2016 17:48
quelle
0

Für Swift 3

Die Methode wurde geändert in:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])

von:

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [AnyObject]!)

Beachten Sie das '_' und die Besetzung von 'Standorten' auf [CLLocation] und nicht auf [AnyObject]!

Wenn Sie die alte Methode verwenden, wird sie nie aufgerufen und Sie erhalten keine Warnung, dass sie sich geändert hat.

    
Chris 29.12.2016 20:42
quelle