В настоящее время я занимаюсь разработкой приложения для iOS, и одна из его функций включает в себя поиск достопримечательностей для ночной жизни.Однако при загрузке моего MapView текущее местоположение пользователя не отображается, даже если доступ к местоположению предоставлен.
Вот мой код:
import UIKit
import MapKit
import CoreLocation
class BarMapVC: UIViewController {
@IBOutlet weak var searchBtn: UIBarButtonItem!
@IBOutlet weak var doneBtn: UIBarButtonItem!
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var locationBtn: UIButton!
@IBOutlet weak var barMapView: MKMapView!
var locationManager = CLLocationManager()
let authorizationStatus = CLLocationManager.authorizationStatus()
let regionRadius: Double = 1000
override func viewDidLoad() {
super.viewDidLoad()
searchBar.isHidden = true
barMapView.delegate = self
locationManager.delegate = self
configureLocationServices()
centerMapOnUserLocation()
}
@IBAction func searchBtnWasPressed(_ sender: Any) {
searchBar.isHidden = false
}
@IBAction func doneBtnWasPressed(_ sender: Any) {
dismiss(animated: true)
}
@IBAction func locationBtnWasPressed(_ sender: Any) {
if authorizationStatus == .authorizedAlways || authorizationStatus == .authorizedWhenInUse {
centerMapOnUserLocation()
}
}
}
extension BarMapVC: MKMapViewDelegate {
func centerMapOnUserLocation() {
guard let coordinate = locationManager.location?.coordinate else { return }
let coordinateRegion = MKCoordinateRegionMakeWithDistance(coordinate, regionRadius * 2.0, regionRadius * 2.0)
barMapView.setRegion(coordinateRegion, animated: true)
}
}
extension BarMapVC: CLLocationManagerDelegate {
func configureLocationServices() {
if authorizationStatus == .notDetermined {
locationManager.requestAlwaysAuthorization()
} else {
return
}
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
centerMapOnUserLocation()
}
}
Я использую CLLocation Manager, соответствующий mapViewDelegate, а также имею все необходимые розетки.Что-то я делаю не так?