CLLocation Geschwindigkeit
-
21-09-2019 - |
Frage
Ich entwickle GPS-Anwendung. Wissen Sie, wie Geschwindigkeit des mobilen Geräts zu erkennen?
Eigentlich brauche ich die Geschwindigkeit alle 2 Sekunden zu erkennen.
Ich weiß didUpdateToLocation
Methode aufgerufen wird, wenn Lage geändert.
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
Aber ich denke, diese Methode für mein Problem nicht geeignet ist.
Also, brauche ich Geschwindigkeit von [CLLocationManager location]
zu überprüfen in 2 Sekunden?
Jeder Vorschlag?
Vielen Dank im Voraus.
Lösung
Wie über den Code, unter dem von den Delegierten Methode funktioniert. Alternativ, wenn Sie wollen Umfrage haben, dann Ihre vorherige Position halten und den Abstand von der letzten Umfrage und die manuelle Methode (auch unten gezeigt) geändert überprüfen, um die Geschwindigkeit zu berechnen.
Geschwindigkeit berechnet wird / in m vorgesehen / s so multiplizieren mit 3.6 km pro Stunde oder 2,23693629 für Meilen pro Stunde.
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
//simply get the speed provided by the phone from newLocation
double gpsSpeed = newLocation.speed;
// alternative manual method
if(oldLocation != nil)
{
CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation];
NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
double calculatedSpeed = distanceChange / sinceLastUpdate;
}
}
Andere Tipps
Sie können nur dann wirklich die delegierte Methode verwenden Sie in Ihrer Frage vorgeschlagen haben.
Auch wenn Sie die [CLLocationManager Standort] zugreifen alle 2 Sekunden, werden Sie nur erhalten die Koordinate Sie zuletzt in der Delegatmethode empfangen oben.
Warum die Notwendigkeit, alle zwei Sekunden abzufragen? Das iPhone kann es die Koordinaten in kürzerer Zeit auf einigen Fällen aktualisieren.
HTH