2010-11-30 23 views
20

Tengo una vista con un mapa y un botón (como la aplicación Mapas una vez) que permite al usuario centrar y acercar su ubicación actual en el mapa. Si no puedo usar el método locationServicesEnabled (siempre devuelve SÍ), ¿debo crear un atributo BOOL para verificar si se llama al método didFailWithError y saber si puedo llamar al método del botón?Comprobación de los servicios de ubicación iOS

Gracias por leer.

Editado:

Este código no funciona para mí. Estoy usando el simulador. Siempre recibo SÍ cuando pregunto locationServicesEnabled.

// Gets the user present location. 
- (IBAction)locateUser:(id)sender { 

    if([CLLocationManager locationServicesEnabled]) { 

     CLLocationCoordinate2D coordinate; 

     coordinate.latitude = self.mapView.userLocation.location.coordinate.latitude; 
     coordinate.longitude = self.mapView.userLocation.location.coordinate.longitude; 

     [self zoomCoordinate:coordinate]; 
    } else { 
     [[[[UIAlertView alloc] initWithTitle:@"Warning." message:@"Location services are disabled." 
            delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show];  
    } 
} 
+1

tengo publicado ** Comprobación de permiso de ubicación optimizada ** en esta publicación, esto definitivamente te ayudará http://stackoverflow.com/questions/15153074/checking-location-service-permission-on-ios/35982887#35982887 – swiftBoy

Respuesta

99

En Preferencias, tiene dos opciones para deshabilitar los servicios de ubicación. La primera opción es un interruptor global para deshabilitar el servicio de ubicación para todas las aplicaciones "[CLLocationManager locationServicesEnabled]". La segunda opción le permite desactivar el servicio de ubicación para algunas aplicaciones, pero no para todas.

para comprobar si su minusválidos a nivel mundial y si su minusválidos para su uso aplicación siguiente:

if([CLLocationManager locationServicesEnabled] && 
    [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied) 
{ 
... 
} 
+0

Estaba luchando un poco porque simplemente consultar [CLLocationManager locationServicesEnabled] no fue suficiente. ¡Gracias! – fellowworldcitizen

+0

Gracias, perfecto. Funciona bien para mí. – Jasmeet

+0

Solución fantástica ..... –

1

"locationServicesEnabled" comprueba si el usuario ha habilitado los Servicios de ubicación en Preferencias. Su MapView probablemente ya verifique este valor y no debería establecer ningún valor en "self.mapView.userLocation" si los Servicios de ubicación no están disponibles. This SO question might give you some more info.

+0

He editado mi pregunta. –

1

me encuentro con este problema también y todavía puede encontrar la respuesta.

tener cuidado de que authorizationStatus requiere iOS4.2 + y + (BOOL) locationServicesEnabled requiere iOS4.0 ... Y para las versiones de iOS anteriores, es - (BOOL) locationServicesEnabled ...

1
- (BOOL) enableLocationServices 
{ 

    if ([CLLocationManager locationServicesEnabled]) 
    { 
     self.locationManager.distanceFilter = 10; 
     self.locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
     [self.locationManager startUpdatingLocation]; 
     [self.mapview setUserTrackingMode:MKUserTrackingModeFollow animated:YES]; 
     return YES; 
    } 
    else 
    { 
     return NO; 
    } 
} 
Cuestiones relacionadas