CLLocationManager startUpdatingLocation mit einem UIButton
Dies ist das erste Zeit bin ich mit CLLocationManager
. Ich bin nicht sicher, ob ich das richtige mache. Korrigieren Sie mich, wenn ich falsch bin.
Initialisiere ich den locationManager in meinem viewDidLoad
Methode und sagen, der locationManager zu startUpdatingLocation in der gleichen Methode.
Wenn der Delegat erhält
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
[locationManager stopUpdatingLocation];
//do stuff with the coordinates
}
vermeiden Sie wiederholte Aufrufe an das delegate-Methode.
Ich habe eine UIButton
wo Benutzer klicken können, um update der Lage
//called by user action
-(IBAction)updateLocation{
//start updating delegate
locationManager.delegate=self;
[locationManager startUpdatingLocation];
}
Aber, wenn sich die Lage ändert und wenn ich auf die UIbutton
, die Standort-Koordinaten nicht ändern. 🙁
Was mache ich falsch? Ist dies das richtige zu tun, oder soll ich nicht aufhören, den locationManager ?
Hilfe würde geschätzt.
InformationsquelleAutor Neelesh | 2011-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
CLLocationManager
speichert Ihre Letzte Position und gibt es zurück, sobald Sie anrufen-startUpdatingLocation
. Also, beginnen Sie, updates, Erhalt der alten Stelle, und dann stoppen, updates.Dies ist nicht, wie
-startUpdatingLocation/-stopUpdatingLocation
bestimmt sind. Da fragte ich oben, was ist falsch mit dem Aufruf der delegate-Methode mehrere Male? Wenn Sie nur wollen, um die Lage, wenn der Benutzer auf eine Schaltfläche tippt, lassen Sie dieCLLocationManager
aktualisieren, und überprüfen Sie einfachCLLocationManger
'slocation
- Eigenschaft, wenn der Benutzer tippt auf die Schaltfläche.Wenn der Grund, den Sie versuchen zu vermeiden, mehrere Aufrufe an das delegate-Methode ist, weil Sie besorgt sind über den Stromverbrauch, etc., passen Sie die
desiredAccuracy
Eigenschaft desCLLocationManager
mit so etwas wie:locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters
.Alle sagten, es könnte in etwa so Aussehen...
.h-Datei:
.m-Datei:
Nein, die Anwendung wird automatisch start die Aktualisierung der Lage. Ich werde mein edit beantworten, um zu zeigen, das mehr klar...
aber ich möchte die user auch starten, die Standort-updates..
sry ich weiß sehen, keine updates 🙁
Und Sie wollen, dass Sie auch in der Lage sein zu stoppen Standort-updates?
InformationsquelleAutor GarlicFries
Gehe davon aus, dass Sie
#import <CoreLocation/CoreLocation.h>
Rahmen. Dies ist, wie Sie beginnen, immer den aktuellen Standort.Sind Sie richtig hier. Danach starten Sie immer den aktuellen Standort, hier in dieser Delegat-
InformationsquelleAutor Srikar Appalaraju