Я разрабатываю приложение, которое вычисляет расстояние, пройденное пользователем. Для этого я использую класс CLLocationManager, но сначала получаю кэшированные данные, а также переменная расстояния увеличивается с внезапной скоростью. Пожалуйста, помогите мне ... Я использовал следующий код ....Corelocation неправильные расстояния
Примечание: расстояние является статическим var. здесь
- (void)viewDidLoad {
[super viewDidLoad];
//bestEffortAtLocation = nil;
oldLocat = [[CLLocation alloc]init];
newLocat = [[CLLocation alloc]init];
locationManager =[[CLLocationManager alloc]init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation{
// test that the horizontal accuracy does not indicate an invalid measurement
if (newLocation.horizontalAccuracy < 0) return;
NSLog(@"accuracy %d",newLocation.horizontalAccuracy);
// test the age of the location measurement to determine if the measurement is cached
// in most cases you will not want to rely on cached measurements
NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
//NSLog(@"time %d",locationAge);
if (locationAge > 5.0) return;
self.oldLocat = oldLocation;
self.newLocat = newLocation;
double latDegrees = newLocation.coordinate.latitude;
NSString *lat = [NSString stringWithFormat:@"%1.5f°",latDegrees];
latLabel.text = lat;
double longDegrees = newLocation.coordinate.longitude;
NSString *longt = [NSString stringWithFormat:@"%1.5f°",longDegrees];
longLabel.text = longt;
[self computeDistanceFrom:oldLocat tO:newLocat];
}
-(void)computeDistanceFrom:(CLLocation *)oldL tO:(CLLocation *)newL
{
NSLog(@"oldd %@",oldL);
NSLog(@"new %@",newL);
distance = distance + [oldL getDistanceFrom:newL];
NSLog(@"distance %f",distance);
}
Консоль отображает следующие данные .......
точности 0 oldd (нуль) новый < +28,62114850, +77.37001021> +/- 80.00m (скорость -1.00/MPS Конечно -1,00) @ 2010-06-22 19:21:59 +0530 расстояние 0,000000
точность 0 oldd < +28,62114850, +77.37001021> +/- 80.00m (скорость -1.00 /MPS курс -1.00) @ 2010-06-22 19:21:59 +0530 новый < +28,61670485, +77,37068155> +/- 80.00m (скорость -1.00/MPS Конечно -1,00) @ 2010-06-22 19:22:00 +0530 расстояние 498,211345
точность 0 oldd < +28,61670485, +77.37068155> +/- 80.00m (скорость -1.00 mps/курс -1.00) @ 2010-06-22 19:22:00 +0530 < +28.62112748, +77.36998540> +/- 80.00m (скорость -1.00 м/с/курс -1.00) @ 2010-06-22 19:23:02 +0530 Расстояние 994.432508
спасибо progrmr, но может у меня точно узнать, как удалить кешированные данные с помощью временных меток ........ и если вышеприведенный подход к вычислению расстояния неправильный, то как мне следует продолжить ...... есть любой другой способ вычислить расстояние ..... coz Я видел много приложений в магазине приложений, которые выполняют ту же работу, что и вычисление расстояния, скорость и т. д. дают мне ваши ценные предложения. – Siddharth
Я добавил образец кода, чтобы показать, как удалить старые кэшированные данные, но вы уже делаете это в своем коде. – progrmr