CLLocationManager говорит, что я переместился на 1200 + фут, когда я все еще сижу на стуле - PullRequest
0 голосов
/ 03 февраля 2010

При использовании CLLocationManager я получаю странные показания. Лат / Лонг, о которых сообщают, пятно на, но пройденное расстояние ОТКЛЮЧЕНО. Я реализовал следующий метод делегата следующим образом:

.h:
    CLLocationManager *mLocationManager;
    CLLocation *mStartDistance;

И

.m:
    - (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation
    fromLocation:(CLLocation *)oldLocation
    {
        NSLog(@"%g", newLocation.coordinate.latitude);
        NSLog(@"%g", newLocation.coordinate.longitude);
        NSLog(@"%g", newLocation.altitude);
        NSLog(@"%g", newLocation.verticalAccuracy);

    if (mStartDistance == nil)
    { mStartDistance = newLocation; }

    CLLocationDistance dist = [newLocation getDistanceFrom:mStartDistance];
    NSLog(@"%gm", dist);
}

И когда я запускаю это на своем устройстве, я получаю следующее (лат / длинная маска, чтобы защитить виновного хе):

] xx.xxxx
] -yy.yyyy
] 0
] -1
] 0m

] xx.xxxx
] -yy.yyyy
] 0
] -1
] 0m

] xx.xxxx
] -yy.yyyy
] 0
] -1
] 376.133m <-- wat?

Я не понимаю, почему говорят, что я переместился на + 376 м ... это как + 1200 футов!

1 Ответ

2 голосов
/ 03 февраля 2010

Если вы также зарегистрируете свой newLocation.horizontalAccuracy, вы, вероятно, увидите, что для первых двух обновлений это более 400 метров. Он не использует GPS (вы находитесь внутри, и он дает вам -1 для вертикальной точности высоты), и триангуляция сотового телефона может быть довольно плохой изначально Иногда мое первоначальное местоположение является точным только до 10 миль, но оно все же опровергает его лучшее предположение. Как только он получит лучшую блокировку, эта точка может двигаться довольно далеко довольно быстро.

Частью хитрости в использовании CoreLocation является определение собственной эвристики для принятия или отклонения обновления. Некоторые вещи, которые следует учитывать, - это горизонтальная точность, время, потраченное на обновление, и количество предыдущих обновлений, которые вы получили. Я видел довольно много схем, которые обсуждались ранее на этом сайте.

...