CLLocation возвращает отрицательную скорость - PullRequest
11 голосов
/ 06 декабря 2010

Я запускаю новое приложение, которое использует каркас 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;

затем 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];
}

Я схожу с ума, так что если кто-то знаетЛюбое решение будет полезно наверняка.Спасибо

1 Ответ

15 голосов
/ 10 февраля 2011

Обычно вы получаете отрицательную высоту и скорость, если используемый механизм определения местоположения не поддерживает это.Например, когда используется Wi-Fi или сотовая триангуляция.Вы уверены, что вы получаете обновления GPS, так что вы тестируете под свободным небом?Даже в этом случае вы все равно будете получать обновления местоположения Wi-Fi и вышки сотовой связи, поэтому вам придется их отфильтровывать.

65 м Горизонтальная точность типична для обновлений местоположения Wi-Fi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...