Разработка iPhone - Точность определения местоположения - PullRequest
0 голосов
/ 16 апреля 2010

Я использую следующие условия, чтобы убедиться, что полученное местоположение имеет достаточную точность, в моем случае kCLLocationAccuracyBest. Но проблема в том, что я все еще получаю неточное местоположение.

// Filter out nil locations
if(!newLocation)
    return;

// Make sure that the location returned has the desired accuracy
if(newLocation.horizontalAccuracy < manager.desiredAccuracy)
    return;

// Filter out points that are out of order    
if([newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp] < 0)
    return;

// Filter out points created before the manager was initialized
NSTimeInterval secondsSinceManagerStarted = [newLocation.timestamp timeIntervalSinceDate:locationManagerStartDate];
if(secondsSinceManagerStarted < 0)
    return;

// Also, make sure that the cached location was not returned by the CLLocationManager (it's current) - Check for 5 seconds difference
if([newLocation.timestamp timeIntervalSinceReferenceDate] < [[NSDate date] timeIntervalSinceReferenceDate] - 5)
    return;

Когда я активирую GPS, я получаю неточные результаты, прежде чем получаю точный результат. Какие методы вы используете, чтобы получить точную / точную информацию о местоположении?

Ответы [ 2 ]

0 голосов
/ 04 мая 2010

Основная причина, по которой я получал неточные результаты, была из-за этого условия:

if(newLocation.horizontalAccuracy < manager.desiredAccuracy)

Я использовал kCLLocationAccuracyBest как желаемую точность, и это отрицательное число. Вы не должны использовать его для сравнения.

Решение: if(newLocation.horizontalAccuracy < 10.0)

0 голосов
/ 16 апреля 2010

GPS работает медленно, по крайней мере, по сравнению с терпением пользователя, поэтому менеджер местоположения возвращает лучшее, что у него есть, пока не получит новое, действительное чтение GPS. Вы можете либо заставить пользователя ждать сколько угодно времени, чтобы получить точное чтение, или получить некоторую инкрементную обратную связь, как это делают карты Google, с кружком, а не точкой.

...