Prima libreria di importazione Corelocation e MapKit:
import MapKit
import CoreLocation
ereditare da CLLocationManagerDelegate alla nostra classe
class ViewController: UIViewController, CLLocationManagerDelegate
crea una variabile locationManager, questi saranno i tuoi dati sulla posizione
var locationManager = CLLocationManager()
crea una funzione per ottenere le informazioni sulla posizione, sii specifico che questa sintassi esatta funzioni:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
nella tua funzione crea una costante per la posizione corrente degli utenti
let userLocation:CLLocation = locations[0] as CLLocation // note that locations is same as the one in the function declaration
interrompere l'aggiornamento della posizione, questo impedisce al dispositivo di modificare costantemente la finestra per centrare la posizione durante lo spostamento (è possibile ometterlo se si desidera che funzioni diversamente)
manager.stopUpdatingLocation()
ottenere le coordinate degli utenti da userLocatin appena definito:
let coordinations = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude,longitude: userLocation.coordinate.longitude)
definisce quanto ingrandito vuoi che sia la tua mappa:
let span = MKCoordinateSpanMake(0.2,0.2)
combina questi due per ottenere la regione:
let region = MKCoordinateRegion(center: coordinations, span: span)//this basically tells your map where to look and where from what distance
ora imposta la regione e scegli se vuoi che ci vada con l'animazione o no
mapView.setRegion(region, animated: true)
chiudi la tua funzione
}
dal tuo pulsante o da un altro modo in cui desideri impostare locationManagerDeleget su sé stesso
ora consenti di mostrare la posizione
designare l'accuratezza
locationManager.desiredAccuracy = kCLLocationAccuracyBest
autorizzare:
locationManager.requestWhenInUseAuthorization()
per poter autorizzare il servizio di localizzazione devi aggiungere queste due righe al tuo plist
ottenere posizione:
locationManager.startUpdatingLocation()
mostralo all'utente:
mapView.showsUserLocation = true
Questo è il mio codice 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
nella definizione della classe.