Comment obtenir l'emplacement actuel latitude et longitude.
J'ai essayé ceci. Utilisation de Xcode 6.01 et iOS SDK 8.0 P>
-(CLLocationCoordinate2D) getLocation{ locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBest; locationManager.distanceFilter = kCLDistanceFilterNone; [locationManager startUpdatingLocation]; CLLocation *location = [locationManager location]; CLLocationCoordinate2D coordinate = [location coordinate]; return coordinate; } - (void)getCurrentLocation{ CLLocationCoordinate2D coordinate = [self getLocation]; NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude]; NSLog(@"Latitude = %@", latitude); NSLog(@"Longitude = %@", longitude); } - (void)viewDidLoad{ [super viewDidLoad]; [self getCurrentLocation]; }
4 Réponses :
Oui, le simulateur propose une interprétation excessive de services de localisation simplifiée. Un périphérique physique est le seul moyen de réellement tester Le problème est que lorsque vous appelez Vous devez être conforme au Évidemment, vous souhaitez probablement mettre en œuvre CLLOCITMANAGER CODE> Comportement. P>
startutupdatingLocation code>, cela ne signifie pas que vous pouvez extraire immédiatement l'emplacement
code>. (Je pense que vous trouverez que c'est soit
nil code> ou a un
négatif horizontalcuracy code>, ce qui signifie que l'emplacement n'a pas encore été déterminé.) P>
cllouerManagerdelegate code> et implémentez
EmplacementManager: DidupDaTelocations: code>, appelé appelé asynchrone. Donc, vous devez attendre que cette méthode soit appelée avant d'essayer d'utiliser les informations de localisation. Et, note, sur un périphérique réel, vous verrez probablement cette méthode appelée plusieurs fois à mesure que l'appareil affine les informations de localisation du périphérique, avec une précision croissante (par exemple, vous pouvez voir le numéro
HorizontalCurticularacy CODE> DÉPLÔTURE D'UN EMELAGE mise à jour à une autre). P>
EmplacementManager: DidfailwithError: code> aussi, afin que des problèmes puissent être détectés. Vous devriez probablement aussi vérifier
autorisationStatus code>,
locativesserviciesSenAcéder à code> et appelez
requêteQueinUneAuthoriorisation code>, avant d'appeler
startupdatingLocation p>. P>.
Il semble que nous devons faire plus de tâche pour mettre en œuvre des services de localisation dans iOS8. Suivez cette discussion P>
ajouté à la fois la méthode du délégué Didfailwitherror et DidupdateToLocation mais ces méthodes ne déclenchent pas du tout
Veuillez ajouter CllouerManagerDelegate dans votre fichier .h.
J'ai ajouté CllouerManagerDelegate, j'ai toujours un problème. Il y a quelque chose qui ne va pas après la mise à niveau SDK iOS 7 à iOS 8.
Je comprends la question dans iOS 8.0 p>
NslocalationAglescédationdescription forte> Ajoutez ceci manuellement dans le fichier de plis d'application, laissez la valeur de chaîne vide.
Cela appellera les méthodes des délégués. N'oubliez jamais d'ajouter Ajoutez cette ligne de code dans le code de déclaration EmplacementManager. Pour iOS 8.0
[EmplacementManager Demandalwayshatorization]; P>
dans iOS 8, ce code échoue silencieusement em> i.e vous n'obtiendrez aucune erreur ni aucun avertissement. P>
Vous devez faire deux choses supplémentaires pour obtenir l'emplacement de travail: p>
Toutes les touches ci-dessous doivent être ajoutées dans Info.Plist File. P>
Ceux-ci sont de type de chaîne et de valeur peuvent être n'importe quel message description ou vide. P>
Vous devez maintenant demander une autorisation de méthode de localisation correspondante. Utilisez n'importe lequel des appels ci-dessous: P>