Я запускаю новое приложение, которое использует рамки coreLocation и рамки mapkit.
Моя проблема заключается в том, чтобы получить текущую скорость, всегда возвращает мне отрицательное значение, я беру свой iPhone со мной в места с хорошим сигналом 3g, и это не имеет значения, значение location.speed всегда равно -1.
вот код, который имеет значение:
#define kRequiredAccuracy 1500.0 //meters
#define kMaxAge 60.0 //seconds
в методе init:
self.locationManager=[[CLLocationManager alloc] init];
self.locationManager.delegate=self;
self.locationManager.desiredAccuracy=kCLLocationAccuracyNearestTenMeters;
then didUpdateToLocation:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
NSTimeInterval ageInSeconds = [newLocation.timestamp timeIntervalSinceNow];
NSLog(@"Location: %@", [newLocation description]);
if( newLocation.horizontalAccuracy > kRequiredAccuracy || fabs(ageInSeconds) > kMaxAge )
{
NSLog(@"inacurate position");
[self.delegate inacuratePosition];
}
else {
[self.delegate locationUpdate:newLocation andOldLocation:oldLocation];
location=newLocation.coordinate;
}
if(tracking)
{
[self updatePosition];
}
if(firstTime)
{
[self placeStartMark];
firstTime=FALSE;
}
}
и, наконец, в контроллере представления, в котором я реализую протокол:
- (void)locationUpdate:(CLLocation *)newLocation andOldLocation:(CLLocation*)oldLocation{
double speed = [newLocation speed] *3.6;
double altitude= [newLocation altitude];
[self checkMaxSpeedAndAltitude:speed :altitude];
if(speed< 0)
speed=0;
locationLabel.text=[NSString stringWithFormat:@"speed: %f km/h altitude: %f m", speed,altitude];
}
Im сходит с ума, поэтому, если кто-нибудь знает какое-либо решение, это будет полезно. Благодаря