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.
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.
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
:
In viewDidLoad
:
Ich denke, Sie können dies auf zwei Arten tun:
Ü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%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 ."
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.
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.
Tags und Links iphone ios zoom mkmapview cllocationmanager