Opérations de localisation iOS
Introduction
Dans iOS, la localisation via CoreLocation peut obtenir la position actuelle de l'utilisateur et aussi obtenir des informations sur les mouvements de l'appareil.
Étapes de l'exemple
1. Créez une simple application basée sur une vue (view application).
2. Sélectionnez le fichier de projet, puis sélectionnez la cible, puis ajoutez CoreLocation.framework, comme indiqué ci-dessous.

3. Ajoutez deux étiquettes dans ViewController.xib, créez des étiquettes avec les noms IBOutlet latitudeLabel et longitudeLabel.
4. Maintenant, en sélectionnant " File-> New -> File... -> ", choisissez "Objective C class" et cliquez sur Next.
5. Définissez "sub class of" comme NSObject, et nommez la classe LocationHandler.
6. Sélectionnez Create.
7. Mettez à jour LocationHandler.h comme indiqué ci-dessous.
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
@protocol LocationHandlerDelegate <NSObject>
@required
-(void) didUpdateToLocation:(CLLocation*)newLocation
fromLocation:(CLLocation*)oldLocation;
@end
@interface LocationHandler : NSObject<CLLocationManagerDelegate>
{
CLLocationManager *locationManager;
}
@property(nonatomic,strong) id<LocationHandlerDelegate> delegate;
+(id)getSharedInstance;
-(void)startUpdating;
-(void) stopUpdating;
@end
8. Mettez à jour LocationHandler.m comme indiqué ci-dessous.
#import "LocationHandler.h"
static LocationHandler *DefaultManager = nil;
@interface LocationHandler()
-(void)initiate;
@end
@implementation LocationHandler
+(id)getSharedInstance{
if (!DefaultManager) {
DefaultManager = [[self allocWithZone:NULL]init];
[DefaultManager initiate];
}
return DefaultManager;
}
-(void)initiate{
locationManager = [[CLLocationManager alloc]init];
locationManager.delegate = self;
}
-(void)startUpdating{
[locationManager startUpdatingLocation];
}
-(void) stopUpdating{
[locationManager stopUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:
(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
if ([self.delegate respondsToSelector:@selector
(didUpdateToLocation:fromLocation:)])
{
[self.delegate didUpdateToLocation:oldLocation
fromLocation:newLocation];
}
}
@end
9. Mettez à jour ViewController.h comme indiqué ci-dessous.
#import <UIKit/UIKit.h>
#import "LocationHandler.h"
@interface ViewController : UIViewController<LocationHandlerDelegate>
{
IBOutlet UILabel *latitudeLabel;
IBOutlet UILabel *longitudeLabel;
}
@end
10. Mettez à jour ViewController.m comme indiqué ci-dessous.
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[[LocationHandler getSharedInstance]setDelegate:self];
[[LocationHandler getSharedInstance]startUpdating];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation{
[latitudeLabel setText:[NSString stringWithFormat:
@"Latitude: %f",newLocation.coordinate.latitude]];
[longitudeLabel setText:[NSString stringWithFormat:
@"Longitude: %f",newLocation.coordinate.longitude]];
}
@end
Sortie
Lorsque nous exécutons l'application, nous obtenons la sortie suivante :
