Скорость перемещения
-
21-09-2019 - |
Вопрос
Я разрабатываю приложение GPS.Знаете ли вы о том , как определить скорость мобильного устройства?
На самом деле, мне нужно определять скорость каждые 2 секунды.
Я знаю didUpdateToLocation
метод вызывается при изменении местоположения.
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
Но я думаю, что этот метод не подходит для моей проблемы.
Итак, нужно ли мне проверять скорость [CLLocationManager location]
за 2 секунды ?
Есть какие - нибудь предложения ?
Заранее благодарю.
Решение
Как насчет приведенного ниже кода, который работает из метода делегирования?В качестве альтернативы, если вы действительно хотели провести опрос, сохраните свое предыдущее местоположение и проверьте расстояние, измененное с момента последнего опроса, и используйте ручной метод (также показанный ниже) для расчета скорости.
Скорость рассчитывается / предоставляется в м / с, поэтому умножьте на 3,6 для км/ч или 2,23693629 для миль/ч.
-(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;
}
}
Другие советы
Вы действительно можете использовать только метод делегирования, который вы предложили в своем вопросе.
Даже если вы обращаетесь к [местоположению CLLocationManager] каждые 2 секунды, вы будете получать только координаты, которые вы в последний раз получали в описанном выше методе делегирования.
Зачем проводить опрос каждые две секунды?В некоторых случаях iphone может обновлять свои координаты за меньшее время.
HTH