2017-02-04 2 views
0

Mon application dépend EXTRÊMEMENT de l'emplacement de l'utilisateur, à tel point que la précision est très importante pour l'utilisation de l'application. En parlant avec mon équipe, nous avons réalisé que si un utilisateur est proche d'une autre zone géographique que nous avons créée, CoreLocation peut ne pas reconnaître la différence. Existe-t-il actuellement des frameworks qui fonctionnent mieux pour CL ou LocationManager dans iOS. Je vérifie la bibliothèque de Cocoapods mais ils semblent tous assez proches les uns des autres en termes de fonctionnalité.Détermination de l'emplacement de l'utilisateur avec une précision proche des points noirs iOS

Répondre

2

Vous ne pouvez pas surmonter les limites physiques et technologiques du système GPS. Si vous appelez requestLocation de CLLocationManager lorsque le gestionnaire d'emplacement est configuré avec le plus haut degré souhaité de desiredAccuracy (à savoir kCLLocationAccuracyBestForNavigation), la réponse dans locationManager(_:didUpdateLocations:) est aussi précise que vous allez obtenir. Utiliser une "bibliothèque" ne va pas changer cela.

0

Vous pouvez définir la précision sur kCLLocationAccuracyBestForNavigation et vous obtiendrez les meilleures données disponibles. Si vous n'êtes pas satisfait de la gestion des geofences par iOS, vous pouvez essayer de mettre en œuvre la solution geofence vous-même en vous abonnant simplement aux méthodes déléguées. De cette façon, vous pouvez également filtrer les CLLocations avec une faible précision et les ignorer par exemple.

0

Comme d'autres l'ont dit, il n'y a pas de solution miracle pour vous donner une précision meilleure que ce que le GPS est capable de fournir.

Qu'est-ce que vous pouvez faire est

  1. Réglez le desiredAccuracy au maximum
  2. Vérifiez la valeur de précision que vous revenez des mises à jour de localisation et rejetez lectures avec une valeur « précision » horizontale qui est trop grand (puisque la "précision" de lecture est en fait un "cercle de confusion" ou un rayon en mètres où le téléphone peut être localisé

Notez que l'étape 2 peut prendre beaucoup de temps pour obtenir une localisation acceptable , ou vous ne pouvez pas être en mesure d'obtenir un lecture acceptable du tout. D'après les tests que j'ai faits il y a plusieurs années, exiger une précision horizontale de 16 mètres était le meilleur que je pouvais atteindre, et je ne pouvais obtenir cette qualité de signal que dans un espace ouvert sans bâtiments et sans arbres. (Je ne l'ai pas essayé dans une prairie ouverte, cependant.)