Première importation Corelocation et bibliothèque MapKit:
import MapKit
import CoreLocation
hériter de CLLocationManagerDelegate à notre classe
class ViewController: UIViewController, CLLocationManagerDelegate
créer une variable locationManager, ce seront vos données de localisation
var locationManager = CLLocationManager()
créer une fonction pour obtenir les informations de localisation, soyez précis, cette syntaxe exacte fonctionne:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
dans votre fonction créer une constante pour l'emplacement actuel des utilisateurs
let userLocation:CLLocation = locations[0] as CLLocation // note that locations is same as the one in the function declaration
arrêter la mise à jour de l'emplacement, cela empêche votre appareil de changer constamment la fenêtre pour centrer votre emplacement pendant le déplacement (vous pouvez l'omettre si vous souhaitez qu'il fonctionne autrement)
manager.stopUpdatingLocation()
obtenir les coordonnées des utilisateurs à partir de userLocatin que vous venez de définir:
let coordinations = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude,longitude: userLocation.coordinate.longitude)
définissez le zoom de votre carte:
let span = MKCoordinateSpanMake(0.2,0.2)
combinez ces deux pour obtenir la région:
let region = MKCoordinateRegion(center: coordinations, span: span)//this basically tells your map where to look and where from what distance
définissez maintenant la région et choisissez si vous voulez qu'elle y soit animée ou non
mapView.setRegion(region, animated: true)
fermez votre fonction
}
à partir de votre bouton ou d'une autre manière que vous souhaitez définir le locationManagerDeleget sur self
permet maintenant d'afficher l'emplacement
désigner la précision
locationManager.desiredAccuracy = kCLLocationAccuracyBest
autoriser:
locationManager.requestWhenInUseAuthorization()
pour pouvoir autoriser le service de localisation, vous devez ajouter ces deux lignes à votre liste
obtenir l'emplacement:
locationManager.startUpdatingLocation()
montrez-le à l'utilisateur:
mapView.showsUserLocation = true
Voici mon code complet:
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
dans la définition de classe.