Синяя точка не отображается на карте.Похоже, что между менеджером CLLocation и значением self.mapView.userLocation.coordinate имеется некоторое разъединение.
Менеджер CLLocation правильно возвращает координаты Apple Campus, но значение mapView.userLocation.coordinate возвращает 0,0 дляи широта и долгота.
Я отлаживал это часами.
Дополнительная информация ниже:
В viewDidAppear и viewDidLoad я распечатал текущее местоположение пользователя на консоли следующим образом:
print(self.mapView.userLocation.coordinate)
Этовывод, отображаемый в консоли:
CLLocationCoordinate2D (широта: 0.0, долгота: 0.0)
Вот как выглядит мой MapViewController:
import UIKit
import CoreLocation
import MapKit
class MapViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
var manager: CLLocationManager? = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// map stuff
manager?.delegate = self
manager?.desiredAccuracy = kCLLocationAccuracyBest
self.mapView.delegate = self
// print user's current location to console
print("user location in view did load:")
print(self.mapView.userLocation.coordinate)
}
override func viewDidAppear(_ animated: Bool) {
manager?.requestAlwaysAuthorization()
manager?.startUpdatingLocation()
self.mapView.showsUserLocation = true
self.mapView.userTrackingMode = .follow
// print user's current location to console
print("user location in view did appear:")
print(self.mapView.userLocation.coordinate)
animateMapToUserLocation()
}
}
Примечания:
Я добавил соответствующие сообщения о конфиденциальности в файл Info.plist.
MapView в раскадровке соединен сплошным кружком с правильным ViewController.
MapViewController создается следующим образом:
let storyboard = UIStoryboard (имя: "Main", комплект: Bundle.main) let mapVC = storyboard.instantiateViewController (withIdentifier: "MapVC") как?MapViewController self.present (mapVC !, анимация: true, завершение: ноль)