web-dev-qa-db-fra.com

À quoi se réfèrent horizontalAccuracy et verticalAccuracy of a CLLocation?

J'ai récemment travaillé sur une application basée sur la localisation et j'ai remarqué des valeurs étranges pour CLLocation. J'obtiens souvent un horizontalAccuracy de 1414 et un verticalAccuracy sur -1. Un indice de ce que cela indique? Autant que je sache, ces points sont souvent très précis. Quelle est la différence entre verticalAccuracy et horizontalAccuracy?

40
Alex Argo

Le -1 pour verticalAccuracy indique que l'altitude dans le CLLocation n'est pas valide. Vous n'obtenez de l'altitude qu'avec une position GPS 3D.

Le 1414 pour horizontalAccuracy indique que la position horizontale (lat/lon) pourrait être jusqu'à 1414 m (il ne s'agit que d'une erreur estimée). Il s'agit probablement d'un emplacement déterminé par la triangulation de la tour cellulaire ou les données de localisation WiFi. Les emplacements GPS indiquent généralement 100 m ou mieux.

Pour obtenir une localisation plus précise (300 m ou mieux), vous devez définir desiredAccuracy et attendre que le récepteur GPS se verrouille sur au moins 3 satellites (ou 4 pour un repère 3D). Jusqu'à ce que cela se produise, CLLocationManager vous donnera le meilleur dont il dispose, à savoir les résultats de triangulation WiFi ou Cell Tower.

66
progrmr