mkmapview.userslocation propriété est définie sur 0,0 après avoir laissé application d'utiliser l'emplacement actuel
-
19-09-2019 - |
Question
La première fois que l'utilisateur essaie d'utiliser l'emplacement actuel de la propriété map.userslocation a des coordonnées de 0,0. La prochaine fois que je charge la vue contenant la carte l'emplacement des utilisateurs se trouve toujours.
Je suis en train de la propriété map.showsUserLocation OUI sur viewDidLoad et lorsque les charges de carte sur l'écran le point bleu est là, mais lorsque je tente d'obtenir les coordonnées avec map.userlocation.coorinate ils sont 0,0.
Le déroulement du programme passe - (void) viewDidLoad: 1) fixé à showUserLocation OUI 2) Régler une minuterie pour appeler une méthode 6 secondes plus tard, qui saisit l'emplacement des utilisateurs de la propriété map.userLocation
- (void) getUsersLocation 1) imprimer l'emplacement des utilisateurs
Ce processus fonctionne très bien après la première fois que je charge la vue, mais la première fois la vue est laoded et l'utilisateur doit accorder la permission d'utiliser leur emplacement les coordonnées reviennent 0,0
Quelqu'un a une idée pourquoi cela se produit et comment je peux travailler autour d'elle?
Merci!
La solution
plutôt que d'attendre arbitrairement six secondes, vous devriez implémentez CLLocationManagerDelegate
et en remarquant quand
locationManager:didUpdateToLocation:fromLocation:
est appelé à vous donner la première mise à jour de localisation, ce qui pourrait prendre plus ou moins de temps que cela.
Autres conseils
David est juste, mais je l'ai remarqué que je ne reçois parfois cette méthode appelée avec un emplacement de 0,0. Vous devez ignorer tels appels, sauf si vous pensez que votre application peut être utilisé dans la mer au large de la côte ouest de l'Afrique.