mislata
Mislata
Bien, en el tutorial de hoy quieremos hacer una pequeña introducción a la librería CoreLocation, que es la que permite obtener las coordenadas GPS de nuestro iPhone.
Introducción
La librería Core Location funciona por eventos. Esto quiere decir que el teléfono manda un evento “update” cuando Core Location esta en marcha y una nueva posición esta disponible. Para usar Core Location, hay que configurar la aplicación para interceptar estos eventos.
Nuestra aplicación configurará donde se mandan estos eventos creando una instancia de la clase CLLocationManager, y asignadole un CLLocationManagerDelegate (clase que intercepta los updates). Bien, empezemos.
Crear un controlador de la clase Core Location
Lo primero que tenemos que hacer es añadir el framework necesario para tener acceso a las clases. Por tanto botón derecho en la carpeta “frameworks” de nuestro proyecto>Add>Existing framwork y buscamos CoreLocation.framework>Add.
Bien, ahora añadimos una nueva clase a nuestro proyecto, del tipo NSObject y le llamamos MyCLController. Modificar-la para que quede así:
MyCLController.h
MyCLController.m
Bien, con esto ya tenemos una clase capaz de recibir los eventos que explicabamos en la introducción.
Ahora tenemos que usar esta clase en nuestro controlador de vista donde queramos mostrar la ubicación actual.
Usando la clase MyCLController:
MyViewController.h
MyViewController.m
Bien, ahora ya podéis iniciar la aplicación, si todo va bien deberías ver en la consola la posición actual. Tener en cuenta que cuando usamos Core Location es mejor probarlo desde el dispositivo puesto que el simulador tiene una ubicación predeterminada y simpre muestra la misma.
Espero que os sirva de ayuda este tutorial para iniciaros con Core Location y la localización GPS.
Introducción
La librería Core Location funciona por eventos. Esto quiere decir que el teléfono manda un evento “update” cuando Core Location esta en marcha y una nueva posición esta disponible. Para usar Core Location, hay que configurar la aplicación para interceptar estos eventos.
Nuestra aplicación configurará donde se mandan estos eventos creando una instancia de la clase CLLocationManager, y asignadole un CLLocationManagerDelegate (clase que intercepta los updates). Bien, empezemos.
Crear un controlador de la clase Core Location
Lo primero que tenemos que hacer es añadir el framework necesario para tener acceso a las clases. Por tanto botón derecho en la carpeta “frameworks” de nuestro proyecto>Add>Existing framwork y buscamos CoreLocation.framework>Add.
Bien, ahora añadimos una nueva clase a nuestro proyecto, del tipo NSObject y le llamamos MyCLController. Modificar-la para que quede así:
MyCLController.h
Código:
01
...
02
#import <CoreLocation/CoreLocation.h>
03
04
interface MyCLController : NSObject <CLLocationManagerDelegate> {
05
CLLocationManager *locationManager;
06
}
07
08
property (nonatomic, retain) CLLocationManager *locationManager;
09
10
- (void)locationManager:(CLLocationManager *)manager
11
didUpdateToLocation:(CLLocation *)newLocation
12
fromLocation:(CLLocation *)oldLocation;
13
14
- (void)locationManager:(CLLocationManager *)manager
15
didFailWithError:(NSError *)error;
16
17
end
MyCLController.m
Código:
01
#import "MyCLController.h"
02
03
implementation MyCLController
04
05
synthesize locationManager;
06
07
- (id) init {
08
self = [super init];
09
if (self != nil) {
10
self.locationManager = [[[CLLocationManager alloc] init] autorelease];
11
self.locationManager.delegate = self; // send loc updates to myself
12
}
13
return self;
14
}
15
16
- (void)locationManager:(CLLocationManager *)manager
17
didUpdateToLocation:(CLLocation *)newLocation
18
fromLocation:(CLLocation *)oldLocation
19
{
20
NSLog("Location: %", [newLocation description]);
21
}
22
23
- (void)locationManager:(CLLocationManager *)manager
24
didFailWithError:(NSError *)error
25
{
26
NSLog("Error: %", [error description]);
27
}
28
29
- (void)dealloc {
30
[self.locationManager release];
31
[super dealloc];
32
}
33
34
end
Bien, con esto ya tenemos una clase capaz de recibir los eventos que explicabamos en la introducción.
Ahora tenemos que usar esta clase en nuestro controlador de vista donde queramos mostrar la ubicación actual.
Usando la clase MyCLController:
MyViewController.h
Código:
1
#import...
2
#import "MyCLController.h"
3
4
interface MyViewController : UIViewController {
5
MyCLController *locationController;
6
}
7
8
end
MyViewController.m
Código:
01
#import "MyViewController.h"
02
03
implementation MyViewController
04
05
- (void)viewDidLoad {
06
//inicializamos la clase
07
locationController = [[MyCLController alloc] init];
08
//le decimos que empieza a recibir los updates
09
[locationController.locationManager startUpdatingLocation];
10
}
11
12
- (void)didReceiveMemoryWarning {
13
[super didReceiveMemoryWarning];
14
}
15
16
- (void)dealloc {
17
[locationController release];
18
[super dealloc];
19
}
20
end
Bien, ahora ya podéis iniciar la aplicación, si todo va bien deberías ver en la consola la posición actual. Tener en cuenta que cuando usamos Core Location es mejor probarlo desde el dispositivo puesto que el simulador tiene una ubicación predeterminada y simpre muestra la misma.
Espero que os sirva de ayuda este tutorial para iniciaros con Core Location y la localización GPS.