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.

CoreLocation_Library_Addition

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 :

locationOutput

Autres extensions