Tutorial iPhone SDK: CoreLocation

Para dar las gracias debes entrar o registrarte en el foro

iMiembro 3G
iMiembro 3G
Mensajes: 55 Agradecido: 5
31 May 2011, 00:51# 1

SABER TU UBICACIÓN EN TU IPHONE
Esto te va a servir para saber a donde estas, nos pidieron usuarios de nuestra web.
El objetivo de este tutorial es para generar la aplicación super simple, ¿Dónde estoy? Esta aplicación hace una cosa, que le diga a su ubicación actual y la actualización de sí mismo cuando se mueve. Hay mucho más que puedes hacer con esta API, este ejemplo solo muestra lo básico. Usted puede ver la interfaz con la información de ubicación a continuación.
Comenzamos con la interface de Builder primero colocamos 2 Label para los nombres de Latitud y Longitud. Ponemos 2 Label  para señalar la cantidad de nuestra Locación.
Primero en el H.
Primero pondremos el framework CoreLocation.
Importamos CoreLocation. Y el delegado de esta misma.
Colocamos CLLocation Manager (para nuestra locación).
Y colocamos los 2 Label de longitud y latitud.
#import
#import
@interface WhereAmIViewController : UIViewController
{
CLLocationManager *locationManager;
IBOutlet UILabel *latLabel;
IBOutlet UILabel *longLabel;
}
@end
Eso es todo el edificio interfaz que tenemos que hacer. En este punto es necesario agregar el marco Core Location, usted puede hacer esto haciendo clic derecho sobre el “Marcos” y de ir a Agregar> marcos existentes … Se abrirá una ventana de exploración, CoreLocation.framework debe ser una opción en el lado derecho. Este es el marco utilizado para obtener una bodega de datos de localización.
La localización marco básico sólo tiene unas pocas clases en ella, siendo la más importante CLLocationManager . El CLLocationManager clase controla el envío de actualizaciones a un delegado en cualquier momento la ubicación ha cambiado. Puesto que utiliza el patrón delegado tenemos que decir que nuestro controlador implementa el CLLocationManagerDelegate protocolo – esto se hace en la cabecera. Lo único que tenemos que añadir a la cabecera es una variable de instancia para el gerente de locación. Nuestro archivo completo de cabecera está por debajo.
Pondremos en ViewDidLoad las propiedades vamos a marcar LocationManager para que nos de la igualdad de nuestra Locación.
La Distancia y el cambio de lugar de la locación.
- (void)viewDidLoad {
[super viewDidLoad];
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
[locationManager startUpdatingLocation];
}
Las propiedades de segundo y tercer definir con qué frecuencia se actualizará el gestor de la ubicación. distanceFilter define en qué medida la ubicación tiene que moverse antes de que se enviará una actualización, kCLDistanceFilterNone significa que siempre le enviará una actualización no importa cuán lejos se mueve ubicación. La última propiedad, desiredAccuracy , decide la precisión de la localización en el teléfono debe estar en orden para ser incluido como una actualización, la he ajustado a kCLLocationAccuracyHundredMeters (100 m).
Si nos fijamos en el protocolo de delegado que se va a ver que hay varios métodos que pueden aplicarse, pero en realidad el único que tenemos que aplicar es la siguiente:
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
El método delegado arriba se llama cuando hay una nueva ubicación disponible. Usted se dará cuenta de que conseguir ambos y nuevos lugares antiguos entrando como CLLocation objetos. Un CLLocation objeto tiene las coordenadas, la precisión, la altitud, y una marca de tiempo. Sólo estamos interesados en las coordenadas – que tiene la latitud y longitud. El código completo de nuestro método es delegado a continuación, voy a entrar en más detalles epílogos.
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
int degrees = newLocation.coordinate.latitude;
double decimal = fabs(newLocation.coordinate.latitude – degrees);
int minutes = decimal * 60;
double seconds = decimal * 3600 – minutes * 60;
NSString *lat = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
latLabel.text = lat;
degrees = newLocation.coordinate.longitude;
decimal = fabs(newLocation.coordinate.longitude – degrees);
minutes = decimal * 60;
seconds = decimal * 3600 – minutes * 60;
NSString *longt = [NSString stringWithFormat:@"%d° %d' %1.4f\"",
degrees, minutes, seconds];
longLabel.text = longt;
}
Básicamente, tomamos la ubicación y el giro de los grados en grados, minutos y segundos y luego mostrar el valor de la etiqueta correcta. Estamos usando fabs en vez de abs para obtener el valor absoluto, ya que necesitamos el valor decimal. La matemática es muy simple. Cada grado es de 60 minutos o segundos 3600. Comenzamos cortando los títulos a continuación, calcular el número total de minutos y terminar el cálculo de segundos. Uso sencillo NSString stringWithFormat creamos una bonita salida de cadena de ubicación bonita. La última cosa que hacemos es establecer el texto de la etiqueta correcta.
Hemos concluido con este Tutorial espero que les guste.
Nos vemos
Web:http://tecnologiaiphoneapp.wordpress.com/
Mis App: http://itunes.apple.com/es/artist/jorgearnold/id404204455

No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Gracias  
Etiquetado en: