icon - Para google maps iOS SDK, la ubicación actual ocasionalmente se traza en 0,0
google maps swift 4 (1)
Parece que no está autorizado para acceder a la ubicación actual del dispositivo. Para eso, tendrás que agregar estas dos claves en tu lista:
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
Ahora, cuando haya terminado con esto, tendrá que solicitar una autorización como esta:
if ([locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])
{
[locationManager requestWhenInUseAuthorization];
}
Entonces, cuando haya terminado con la autorización, debe comenzar a recibir actualizaciones de ubicación. Para esto, usa esta línea:
[locationManager startUpdatingLocation];
Ahora, si desea ir a la ubicación actual, debe implementar este método aquí:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
CLLocation *location = [locations lastObject];
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:location.coordinate.latitude longitude:location.coordinate.longitude zoom:currentZoom];
[self.gMapView animateToCameraPosition:camera];
}
Esto mantendrá la actualización del mapa con la ubicación actual. Si solo quieres la ubicación actual una vez, simplemente coloca una declaración condicional para la misma.
Si el usuario niega el permiso, se llamará al siguiente método:
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
if([CLLocationManager locationServicesEnabled])
{
if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)
{
// Put your alert here.
}
}
}
No estoy seguro de por qué sucede esto, pero cuando lo haga preferimos no mostrarle al usuario que su ubicación actual es 0,0 (está en el medio del océano frente a la costa de Sudáfrica). ¿Hay alguna forma de detectar cuándo sucede esto para que podamos mostrar un mensaje de error o algo así al usuario?