Primeira importação da biblioteca Corelocation e MapKit:
import MapKit
import CoreLocation
herdar de CLLocationManagerDelegate para nossa classe
class ViewController: UIViewController, CLLocationManagerDelegate
criar uma variável locationManager, esses serão seus dados de localização
var locationManager = CLLocationManager()
crie uma função para obter as informações do local, seja específico: esta sintaxe exata funciona:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
em sua função, crie uma constante para o local atual dos usuários
let userLocation:CLLocation = locations[0] as CLLocation // note that locations is same as the one in the function declaration
parar de atualizar o local, isso impede que o dispositivo altere constantemente a janela para centralizar sua localização enquanto se move (você pode omitir isso se desejar que ele funcione de outra forma)
manager.stopUpdatingLocation()
faça com que os usuários coordenem a partir do userLocatin que você acabou de definir:
let coordinations = CLLocationCoordinate2D(latitude: userLocation.coordinate.latitude,longitude: userLocation.coordinate.longitude)
defina com o zoom que você deseja que seu mapa seja:
let span = MKCoordinateSpanMake(0.2,0.2)
combine esses dois para obter a região:
let region = MKCoordinateRegion(center: coordinations, span: span)//this basically tells your map where to look and where from what distance
agora defina a região e escolha se deseja que ela vá com animação ou não
mapView.setRegion(region, animated: true)
feche sua função
}
do seu botão ou de outra maneira que você deseja definir o locationManagerDeleget como self
agora permita que o local seja mostrado
designar precisão
locationManager.desiredAccuracy = kCLLocationAccuracyBest
autorizar:
locationManager.requestWhenInUseAuthorization()
para poder autorizar o serviço de localização, você precisa adicionar essas duas linhas ao seu plist
obter localização:
locationManager.startUpdatingLocation()
mostre ao usuário:
mapView.showsUserLocation = true
Este é o meu 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
+ acrescentandoCLLocationManagerDelegate
na definição de classe.