2012-01-25 18 views
5

estoy usando el siguiente código para obtener la ubicación actual, he añadido el marco CoreLocationcómo obtener la ubicación actual en latitud y longitud en el objetivo c

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m 
    [locationManager startUpdatingLocation]; 

} 

- (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]; 
    NSLog(@" Current Latitude : %@",lat); 
    //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]; 
    NSLog(@" Current Longitude : %@",longt); 
    //longLabel.text = longt; 
} 

pero estoy consiguiendo los valores predeterminados, es decir, Latitud: 42 ° 17 '36.8898 "y Longitud: -71 ° 27' 43.1003" donde mi Latitud actual: N 12 ° 56 '11.5624 "y Longitud: E 77 ° 32' 41.0834". Cómo obtener la latitud y la longitud exactas. donde estoy cometiendo el error o necesito agregar cualquier otro método o función o marco.

Gracias de antemano.

+1

¿Has probado en un dispositivo real o simulador? –

+0

¿Ha habilitado servicios de ubicación en su dispositivo? –

+0

@XSlash He probado en el simulador. – shasha

Respuesta

2

Pruebe la aplicación en un dispositivo real. El simulador siempre le mostrará el valor predeterminado para Latitud y Longitud. También asegúrese de que los servicios de ubicación estén habilitados en su dispositivo.

+0

Incluso en el simulador no debería ser un problema. Dentro del área de depuración puede ver junto a los botones de depuración, puede seleccionar diferentes áreas. Hay algunas posiciones predeterminadas que puede elegir antes de la prueba. ¡O creas la tuya! –

1

Necesita probarlo en un dispositivo para obtener la latitud y la longitud de su ubicación actual, supongo que está obteniendo la latitud y la longitud de Cupertino, que es un valor predeterminado.

2

Tiene que probar el servicio de ubicación en el dispositivo, no en el simulador, aunque puede habilitar la simulación de ubicación en el simulador, consulte el adjunto de mi imagen, el icono en un círculo. ¡Pero no será su ubicación exacta! Pero al menos se puede verificar su código está trabajando Image

+0

Estoy usando xcode 4, donde no puedo ver el icono en un círculo – shasha

+0

ejecute su aplicación, entonces aparecerá –

+0

@X Slash, después de ejecutar mi aplicación solo lo revisé, pero no muestra ningún icono como lo mostró . – shasha

11

Puede agregar este método en el que usted necesita para obtener la latitud y longitud:

-(CLLocationCoordinate2D) getLocation{ 
    CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    [locationManager startUpdatingLocation]; 
    CLLocation *location = [locationManager location]; 
    CLLocationCoordinate2D coordinate = [location coordinate]; 

    return coordinate; 
} 

Y llamarlo utilizar:

CLLocationCoordinate2D coordinate = [self getLocation]; 
NSString *latitude = [NSString stringWithFormat:@"%f", coordinate.latitude]; 
NSString *longitude = [NSString stringWithFormat:@"%f", coordinate.longitude]; 

NSLog(@"*dLatitude : %@", latitude); 
NSLog(@"*dLongitude : %@",longitude); 
+1

Tengo el extraño comportamiento de que las 'coordenadas' son (nulas) cuando intento acceder a ellas directamente. Y la impresión, si el código tiene algún tiempo las coordenadas se entregan. Parece un problema de tiempo. – jerik

+0

Esto devuelve 0.000000 para Latitud y Longitud. Estoy usando el simulador de Xcode 6.1.1 y iPhone 5s. ¿Porque? –

+0

Muchas gracias por publicar esta respuesta. Really Really Help para principiantes. –

0

Primero Debe habilitar el servicio de ubicación en su simulador. Depurar -> Ubicación. En la mayoría de los casos obtendrás valores latitudinales y largos de Cupertino. Y puede establecer ubicaciones personalizadas para esta opción seleccionando la segunda opción (Ubicación personalizada). Estas opciones se activarán automáticamente cuando estamos seleccionando la ubicación cuando el tiempo de ejecución en el área de depuración.

+0

Gracias .... Luché mucho para encontrarlo :) – vijeesh

Cuestiones relacionadas