Первый импорт Corelocation и библиотеки MapKit:
import MapKit
import CoreLocation
наследовать от CLLocationManagerDelegate в наш класс
class ViewController: UIViewController, CLLocationManagerDelegate
создайте переменную locationManager, это будут ваши данные о местоположении
var locationManager = CLLocationManager()
создайте функцию, чтобы получить информацию о местонахождении, конкретный синтаксис работает:
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
в вашей функции создайте постоянную для пользователей текущего местоположения
let userLocation:CLLocation = locations[0] as CLLocation // note that locations is same as the one in the function declaration
остановите обновление местоположения, это предотвратит постоянное изменение окна устройством, чтобы центрировать ваше местоположение во время движения (вы можете пропустить это, если хотите, чтобы оно функционировало иначе)
manager.stopUpdatingLocation()
получить координаты пользователей из userLocatin вы только что определили:
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)//this basically tells your map where to look and where from what distance
Теперь установите регион и выберите, хотите ли вы, чтобы он шел туда с анимацией или нет
mapView.setRegion(region, animated: true)
закрой свою функцию
}
от вашей кнопки или другим способом вы хотите установить locationManagerDeleget на себя
теперь разрешите показывать местоположение
обозначить точность
locationManager.desiredAccuracy = kCLLocationAccuracyBest
санкционировать:
locationManager.requestWhenInUseAuthorization()
Чтобы авторизовать сервис определения местоположения, вам нужно добавить эти две строки в свой список
получить местоположение:
locationManager.startUpdatingLocation()
показать это пользователю:
mapView.showsUserLocation = true
Это мой полный код:
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
в определении класса.