/ / Tengo dificultades para recibir la ubicación actual de un usuario con Swift 2.0: swift, coordenadas, ubicación central

Estoy teniendo dificultades para recibir la ubicación actual de un usuario con Swift 2.0: swift, coordenadas, ubicación central

He estado navegando en la web en busca de métodos para obtener unala ubicación actual del usuario en Swift 2.0, desafortunadamente ninguno tiene trabajo. Aquí está el código en el que he estado trabajando, pero no puedo. He estado jugando con el archivo info.plist pero no sé qué agregar. ¿Alguien puede decirme que estoy haciendo mal?

import CoreLocation

class ViewController: UIViewController {

let locationManager = CLLocationManager()

override func viewDidLoad(){
super.viewDidLoad()
findMyLocation()
}



func findMyLocation() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.requestWhenInUseAuthorization()

locationManager.startUpdatingLocation()
}

}

extension ViewController: CLLocationManagerDelegate {

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

for location in locations {
print("THIS IS THE LATTITUDE (location.coordinate.latitude)")
}


locationManager.stopUpdatingLocation()
}
}

Respuestas

0 para la respuesta № 1

EDITAR: en tu didUpdateLocations función don "t force stopUpdatingLocation. Esta función se llama varias veces antes de que se finalice su ubicación para que se muestre en el mapa. Quita esa línea y verás que tu consola imprimirá de 3 a 5 veces con tu lat y largo.

La forma recomendada de obtener la ubicación del usuario es verificar siempre para asegurarse de que tiene el permiso para que, si no lo hace, pueda alertar al usuario y solicitar dicho permiso.

En su viewDidLoad ()

locationManager?.requestAlwaysAuthorization()

// .AuthorizedInUse or .AuthorizedAlways depending on your app
if CLLocationManager.authorizationStatus() == .AuthorizedInUse {
locationManager?.distanceFilter = 5.0
locationManager?.requestLocation()
}

Esto asegura que usted está solicitando autorización si no hay ninguna y verificando si se rechazó. Además, utilice esta función en su CLLocationManagerDelegate

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus)
{
//Again this can be .AuthorizedAlways or .AuthorizedInUse depending
if status == .AuthorizedAlways {
locationManager?.startUpdatingLocation()
// ...
}
}

Esto permite que la aplicación responda correctamente si cambian los permisos de ubicación en medio de usar sus servicios de ubicación después de la viewDidLoad().

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last
centerLocation = location

let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.02, longitudeDelta: 0.02))
userLocationRegion = region
mainMapView.showAnnotations(mainMapView.annotations, animated: true)

self.mainMapView.setRegion(region, animated: true)
}

0 para la respuesta № 2

debe agregar NSLocationWhenInUseUsageDescription y / y NSLocationAlwaysUsageDescription depende de su caso de uso