Question

Je reçois des lectures étranges lors de l'utilisation CLLocationManager. Le Lat / long sont rapporté sur place, mais la distance parcourue est loin. J'ai mis la méthode suivante en tant que délégué si:

.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);
}

Et quand je lance sur mon appareil que je reçois le texte suivant (lat / long masqué pour protéger le heh coupable):

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

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

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

Je ne comprends pas pourquoi le dire que je suis passé + 376m..that est comme + 1200ft!

Était-ce utile?

La solution

Si vous aussi vous connectez votre newLocation.horizontalAccuracy, vous verrez probablement que pour les deux premières mises à jour c'est sur 400 m. Il n'utilise pas GPS (vous êtes à l'intérieur et il vous donne -1 pour une précision verticale de l'altitude), et la triangulation de téléphone cellulaire peut être assez mauvais départ. Parfois, ma position de départ est seulement une précision de 10 miles, mais il met toujours en baisse sa meilleure estimation. Une fois qu'il obtient un meilleur verrouillage, ce point peut se déplacer assez loin assez vite.

Une partie de la rouerie à l'aide CoreLocation consiste à déterminer votre propre heuristique pour accepter ou rejeter une mise à jour. Certaines choses à considérer sont la précision horizontale, la mise à jour le temps passé, et le nombre de mises à jour précédentes que vous avez reçus. Je l'ai vu tout à fait quelques régimes ont été discutés sur ce site auparavant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top