Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

253
Vistas
¿Cómo obtener correctamente las coordenadas del usuario?

Hago que MapViewController adopte el protocolo CLLocationManagerDelegate esta manera:

 extension MapViewController:CLLocationManagerDelegate{ func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { let usrLocation:CLLocation = locations[0] as CLLocation // readable print("lat = \(usrLocation.coordinate.latitude)") print("lon = \(usrLocation.coordinate.longitude)") self.userLocation = usrLocation locationManager.stopUpdatingLocation() } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print("Error \(error)") } func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { switch status { case .restricted, .denied, .notDetermined: // no issue here because I make a very generic request to a server // AND I don't need user coordinates break case .authorizedWhenInUse, .authorizedAlways: // here I need user coordinates because I need to request content to a server // based on user coordinates but when I check for userLocation // at first I find <+0.00000000,+0.00000000> +/- 0.00m (speed -1.00 mps / course -1.00 print("----------------") print(userLocation) print("----------------") break } }

Necesito datos de ubicación del usuario en el cuerpo del caso .authorizedWhenInUse/.autorizeAlways porque necesito enviar las coordenadas actuales del usuario a un servidor. El problema es que cuando los necesito, al principio obtengo una ubicación de usuario como esta:

 <+0.00000000,+0.00000000> +/- 0.00m (speed -1.00 mps / course -1.00>

userLocation es miembro de la clase viewcontroller y su valor se establece en locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) . ¿Debo mover la solicitud a esta función? ¿Y cómo verifico el estado del usuario en ese contexto? Solo quiero hacer solicitudes para que los usuarios que autorizaron la aplicación recuperen su posición. Espero que la solución no sea un temporizador y varias comprobaciones, pero se agradece cualquier ayuda :-)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El hecho de que haya recibido .authorizedWhenInUse o .authorizedAlways no significa que ya haya iniciado los servicios de ubicación. Simplemente significa que ha sido autorizado. No debe intentar recuperar la ubicación del usuario en didChangeAuthorization .

Por lo tanto, debe llamar a startUpdatingLocation y mover su código que envía esta ubicación al servidor a su método didUpdateLocations .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda