Comment puis-je obtenir l’emplacement actuel de l’utilisateur dans l’iOS ?
Réponses
Trop de publicités?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]
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.
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);
------*/
}];
}
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