Question

J'ai quelques questions au sujet de Core Location.

1) l'utilisateur refuse la permission de mon application à utiliser l'emplacement de base, ou l'emplacement de base est indisponible pour une raison quelconque, est-il une solution de repli? (Device Locale, par exemple?)

2) Puis-je mettre en cache l'emplacement d'un dispositif pour la prochaine fois? Est-ce que lui-même Core Location faire cela?

3) J'ai vraiment besoin du coucher du soleil dans la zone de l'utilisateur au cours de la mi-saison au printemps et j'ai une fonction pour le faire, une fois que je la latitude et la longitude du dispositif. Je pourrais peut-être faire une hypothèse sur le temps en fonction des paramètres régionaux? (Exemple:. Aux États-Unis, supposons environ 19h00)

EDIT:

Je suis vraiment en train de calculer le coucher du soleil dans la zone de l'utilisateur pour une application. Rien à voir avec la carte. Je considère la séquence des événements suivants:

  • Vérifiez la disponibilité Core Location. Si oui, l'utiliser et le stocker dans NSUserPreferences. Si Core Location est disponible, rendez-vous sur les solutions de repli.
  • Vérifier un emplacement enregistré. Si elle est stockée, utilisez. Sinon, rendez-vous sur ...
  • Vérifiez le temps choisi par l'utilisateur.
Était-ce utile?

La solution

1) à proprement parler, si l'utilisateur ne permet pas l'utilisation CoreLocation ou, si l'autorisation a été donnée, mais CoreLocation ne sont pas disponibles, il n'y a pas d'autre fallback pour obtenir l'emplacement de l'utilisateur comme latitude, longitude paire. En utilisant les paramètres régionaux ne fonctionne pas dans tous les cas. Tout d'abord, il va juste vous donner une approximation qui peut être trop loin de la réalité. Cependant, il est à vous de juger si cette approximation est ok pour votre application. De plus, il y a des utilisateurs qui utilisent un lieu différent de celui lié à leur pays. Et, il ne garantit pas que les gens voyagent à l'étranger ajusteront la date / heure à chaque fois.

2) caches de base de l'emplacement par défaut, le dernier emplacement récupéré de l'unité GPS. Cependant, pour les personnes voyageant à l'étranger cet endroit en cache sera certainement mal (même pour les personnes qui voyagent seulement à quelques miles), et en général, vous devez jeter la valeur mise en cache et de localiser à nouveau l'utilisateur à chaque fois. Je comprends que pour les personnes voyageant dans leur pays ce ne sera pas (en général) créer des problèmes énormes. Mais cela dépend du pays: voyage en Italie ne changera pas le temps, mais voyager à travers les Etats-Unis peuvent changer le temps jusqu'à 3 heures.

3) Je suggère d'essayer d'utiliser Core Location et, en cas de problème, il suffit de demander à l'utilisateur de saisir son / son heure locale ou l'emplacement (la ville devrait être suffisant pour votre but). Si vous choisissez de demander l'emplacement de l'utilisateur, vous pouvez obtenir la paire de latitude / longitude correspondante mais cela nécessitera une connexion réseau de travail.

Autres conseils

2) A partir de la documentation en ligne pour CLLocationManager:

  

Le service de localisation retourne un emplacement initial le plus rapidement possible, le retour d'information en cache lorsqu'elles sont disponibles.

Vous pouvez vérifier l'horodatage de CLLocation pour voir si elle est une valeur en cache ou non.

3) Si vous décidez d'utiliser locale pour une première approximation TZ, rappelez-vous que les utilisateurs se déplacent et peuvent ne pas réinitialiser leur rapidement locale. Vous pouvez obtenir l'objet TZ actuelle avec:

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