2012-03-08 19 views
11

Tengo una salida mapView en mi vista (MKMapViewDelegate) con "Muestra la ubicación del usuario" habilitada.MKMapView userLocation que muestra 0,0 en el simulador?

En el viewDidLoad para ese controlador Tengo

CLLocation *userLoc = mapView.userLocation.location; 
CLLocationCoordinate2D userCoordinate = userLoc.coordinate; 
NSLog(@"user latitude = %f",userCoordinate.latitude); 
NSLog(@"user longitude = %f",userCoordinate.longitude); 
mapView.delegate=self; 

El simulador muestra la ubicación de usuario correcto en el mapa (estoy usando ubicación personalizada en el simulador de iOS)

Pero el NSLog aparezca un 0 y 0 para latitud y longitud.

¿No debería ser capaz de obtener la longitud y la latitud personalizadas en el simulador?

ACTUALIZACIÓN CON RESPUESTA:

necesarios para implementar

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    self.mapView.centerCoordinate = userLocation.location.coordinate; 
} 

Respuesta

13

Los servicios de localización no son instantáneos. Su código está en viewDidLoad, por lo que aún no ha tenido la oportunidad de resolver su situación. Debe establecer la propiedad delegate para la vista de mapa en un objeto que implemente el protocolo MKMapViewDelegate.

+0

¿Puede proporcionar algún código de muestra? ¿Establecí el delegado de MapView en el código anterior? Me gustaría que la ubicación del zoom inicial del mapa se base en la ubicación actual del usuario. – sayguh

+1

¿Implementó alguno de los métodos 'MKMapViewDelegate'? Configurar al delegado no hará nada a menos que implemente los métodos que define. Hay varios proyectos de muestra de mapa en el centro de desarrolladores. ¿Los has mirado? – Jim

+0

No se pudo encontrar el código de muestra para esto en el sitio de Apple. Me encantaría encontrar un proyecto de muestra que haga esto – sayguh

0
MKMapView *mapview=[[MKMapView alloc]initWithFrame:CGRectMake(0,0,300, 364)]; 
mapview.delegate=self; 
mapview.showsUserLocation=YES; 

Que luego llamará al delegado de mapkit, en el kit de delegado de kit intentará imprimir las coordenadas. NSLog (@ "user latitude =% f", userLocation.location.coordinate.latitude); NSLog (@ "longitud de usuario =% f", userLocation.location.coordinate.longitude);

1

Tuve que establecer una ubicación en el simulador, a través de Debug> Location. Se estableció en Ninguno, que me dejó en (0 °, 0 °) y nunca se actualizó; puede establecer una Ubicación personalizada o elegir entre otras secuencias de comandos de ubicación simulada que muevan la ubicación del usuario automáticamente a lo largo del tiempo.

Cuestiones relacionadas