180 votes

Comment puis-je l’emplacement actuel de l’utilisateur dans l’iOS

Comment puis-je obtenir l’emplacement actuel de l’utilisateur dans l’iOS ?

343voto

dplusm Points 1943

La réponse de RedBlueThing très bien fonctionné pour moi. Voici un exemple de code de comment je l'ai fait.

L'en-tête

#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>

@interface yourController : UIViewController <CLLocationManagerDelegate> {
    CLLocationManager *locationManager;
}

@end

MainFile

Dans la méthode init

locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];

Fonction de rappel

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    NSLog(@"OldLocation %f %f", oldLocation.coordinate.latitude, oldLocation.coordinate.longitude);
    NSLog(@"NewLocation %f %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude);
}

iOS 6

Dans iOS 6, la fonction de délégué était obsolète. Le nouveau délégué est

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations

Par conséquent, pour obtenir la nouvelle position d'utilisation

[locations lastObject]

80voto

Ryan Wu Points 1081

Dans iOS 6, la

est déconseillée.

Utilisez plutôt suite code

61voto

RedBlueThing Points 21332

Vous utilisez le framework CoreLocation à accéder à l'emplacement de l'information au sujet de votre utilisateur. Vous aurez besoin d'instancier un CLLocationManager objet et l'appel asynchrone startUpdatingLocation message. Vous recevrez des rappels avec l'emplacement de l'utilisateur via le CLLocationManagerDelegate que vous fournissez.

31voto

SVMRAJESH Points 1685

Essayez ce Simple Étapes....

REMARQUE: Veuillez vérifier l'emplacement de l'appareil de latitude et de longitude si vous utilisez le simulateur de moyens. Par défaut son non seulement.

Étape 1: Importer CoreLocation - cadre .h Fichier

#import <CoreLocation/CoreLocation.h>

Étape 2: Ajouter le délégué CLLocationManagerDelegate

@interface yourViewController : UIViewController<CLLocationManagerDelegate>
{
    CLLocationManager *locationManager;
    CLLocation *currentLocation;
}

Étape 3: Ajoutez ce code dans le fichier de classe

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self CurrentLocationIdentifier]; // call this method
}

Étape 4: Méthode pour détecter l'emplacement actuel

//------------ Current Location Address-----
-(void)CurrentLocationIdentifier
{
    //---- For getting current gps location
    locationManager = [CLLocationManager new];
    locationManager.delegate = self;
    locationManager.distanceFilter = kCLDistanceFilterNone;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [locationManager startUpdatingLocation];
    //------
}

Étape 5: Obtenir la localisation à l'aide de cette méthode

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    currentLocation = [locations objectAtIndex:0];
    [locationManager stopUpdatingLocation];
    CLGeocoder *geocoder = [[CLGeocoder alloc] init] ;
    [geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error)
     {
         if (!(error))
         {
             CLPlacemark *placemark = [placemarks objectAtIndex:0];
             NSLog(@"\nCurrent Location Detected\n");
             NSLog(@"placemark %@",placemark);
             NSString *locatedAt = [[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "];
             NSString *Address = [[NSString alloc]initWithString:locatedAt];
             NSString *Area = [[NSString alloc]initWithString:placemark.locality];
             NSString *Country = [[NSString alloc]initWithString:placemark.country];
             NSString *CountryArea = [NSString stringWithFormat:@"%@, %@", Area,Country];
             NSLog(@"%@",CountryArea);
         }
         else
         {
             NSLog(@"Geocode failed with error %@", error);
             NSLog(@"\nCurrent Location Not Detected\n");
             //return;
             CountryArea = NULL;
         }
         /*---- For more results 
         placemark.region);
         placemark.country);
         placemark.locality); 
         placemark.name);
         placemark.ocean);
         placemark.postalCode);
         placemark.subLocality);
         placemark.location);
          ------*/
     }];
}

12voto

defbyte Points 589

Xcode Documentation a une richesse de connaissances et d'exemples d'applications - vérifier l' Emplacement de Sensibilisation du Guide de Programmation.

Le LocateMe exemple de projet illustre les effets de la modification de la CLLocationManager's différents paramètres de précision

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X