Primero importe la biblioteca Corelocation y MapKit:
import MapKit
import CoreLocation
heredar de CLLocationManagerDelegate a nuestra clase
class ViewController: UIViewController, CLLocationManagerDelegate
crea una variable locationManager, esta será tu información de ubicación
var locationManager = CLLocationManager()
cree una función para obtener la información de ubicación, sea específico, esta sintaxis exacta funciona:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
en su función, cree una ubicación actual constante para los usuarios
let userLocation:CLLocation = locations[0] as CLLocation // note that locations is same as the one in the function declaration
deje de actualizar la ubicación, esto evita que su dispositivo cambie constantemente la ventana para centrar su ubicación mientras se mueve (puede omitir esto si desea que funcione de otra manera)
manager.stopUpdatingLocation()
haga que los usuarios coordinen desde userLocatin que acaba de definir:
let coordinations = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude,longitude: userLocation.coordinate.longitude)
defina qué tan ampliado desea que sea su mapa:
let span = MKCoordinateSpanMake(0.2,0.2)
combina estos dos para obtener la región:
let region = MKCoordinateRegion(center: coordinations, span: span)//this basically tells your map where to look and where from what distance
ahora configure la región y elija si desea que vaya allí con animación o no
mapView.setRegion(region, animated: true)
cierra tu función
}
desde su botón u otra forma en que desee establecer locationManagerDeleget en self
ahora permita que se muestre la ubicación
designar precisión
locationManager.desiredAccuracy = kCLLocationAccuracyBest
autorizar:
locationManager.requestWhenInUseAuthorization()
para poder autorizar el servicio de ubicación, debe agregar estas dos líneas a su lista
obtener ubicación:
locationManager.startUpdatingLocation()
muéstralo al usuario:
mapView.showsUserLocation = true
Este es mi código completo:
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet weak var mapView: MKMapView!
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func locateMe(sender: UIBarButtonItem) {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
mapView.showsUserLocation = true
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let userLocation:CLLocation = locations[0] as CLLocation
manager.stopUpdatingLocation()
let coordinations = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude,longitude: userLocation.coordinate.longitude)
let span = MKCoordinateSpanMake(0.2,0.2)
let region = MKCoordinateRegion(center: coordinations, span: span)
mapView.setRegion(region, animated: true)
}
}
Import MapKit
+CoreLocation
+CLLocationManagerDelegate
en la definición de clase.