8
votes

Comment obtenir la localisation actuelle la latitude et la longitude dans iOS SDK 8.0

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];

}


0 commentaires

4 Réponses :


0
votes

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 CLLOCITMANAGER Comportement.

Le problème est que lorsque vous appelez startutupdatingLocation , cela ne signifie pas que vous pouvez extraire immédiatement l'emplacement . (Je pense que vous trouverez que c'est soit nil ou a un négatif horizontalcuracy , ce qui signifie que l'emplacement n'a pas encore été déterminé.)

Vous devez être conforme au cllouerManagerdelegate et implémentez EmplacementManager: DidupDaTelocations: , 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 DÉPLÔTURE D'UN EMELAGE mise à jour à une autre).


Évidemment, vous souhaitez probablement mettre en œuvre EmplacementManager: DidfailwithError: aussi, afin que des problèmes puissent être détectés. Vous devriez probablement aussi vérifier autorisationStatus , locativesserviciesSenAcéder à et appelez requêteQueinUneAuthoriorisation , avant d'appeler startupdatingLocation . .


0 commentaires

0
votes

Il semble que nous devons faire plus de tâche pour mettre en œuvre des services de localisation dans iOS8. Suivez cette discussion


3 commentaires

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.



5
votes

Je comprends la question dans iOS 8.0

NslocalationAglescédationdescription 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 NslocactoringwaywaySuscriptions Sauf si vous n'avez pas ajouté que cette méthode de délégation ne fonctionnera pas. Le code restant est identique. avec ajouter des méthodes de déléguement à la classe de contrôleur.

Ajoutez cette ligne de code dans le code de déclaration EmplacementManager. Pour iOS 8.0 [EmplacementManager Demandalwayshatorization];


0 commentaires

3
votes

dans iOS 8, ce code échoue silencieusement i.e vous n'obtiendrez aucune erreur ni aucun avertissement.

Vous devez faire deux choses supplémentaires pour obtenir l'emplacement de travail:

  1. ajoutez une clé à votre info.Plist
  2. Demande autorisation du gestionnaire de localisation lui demandant de commencer.

    Toutes les touches ci-dessous doivent être ajoutées dans Info.Plist File.

    1. nslocationQueinUtiliseDescriptions
    2. NslocalationAglesDescription

      Ceux-ci sont de type de chaîne et de valeur peuvent être n'importe quel message description ou vide.

      Vous devez maintenant demander une autorisation de méthode de localisation correspondante. Utilisez n'importe lequel des appels ci-dessous:

      1. [Self.elocouplacementManager requierQueinUneAuthoriorisation]
      2. [self.elocollationManager requiertAuthorior]

0 commentaires