Я пытаюсь go из VC1 на VC2 с картой по кнопке 1 через segue, и он должен сфокусировать булавку на моем местоположении в центре карты, и это имеет ошибку. он не фокусируется на пользователе, но если я нажимаю кнопку 2, go назад и нажимаю кнопку 1, он фокусируется на пользователе. И я не могу понять, где мне нужно это исправить.
И последний баг: если я установил огромное значение regionInMeters, например, на 10000 м, и я увеличу масштаб, он покажет названия мест, улиц с ошибкой (изображение) в обоих случаях, когда я пытаюсь использовать этот метод с пользователем. Если я установлю низкое значение - 500, в этих случаях будет показано правильное закрытие, но только местоположение вокруг пользователя, если я переключусь туда в другой город и увеличу масштаб, у него все равно будет эта ошибка. И та же история с акцентом на месте. На огромной высоте - названия стран, городов, рек верны везде .
let annotationIdentifire = "annotationIdentifire"
let locationManager = CLLocationManager()
let regionInMeters = 500.00
var incomeSegueIdentifire = ""
override func viewDidLoad() {
super.viewDidLoad()
addressLabel.text = ""
mapView.delegate = self
setupMapView()
checkLocationServices()
}
private func checkLocationServices(){
if CLLocationManager.locationServicesEnabled() {
setupLocationManager()
checkLocationAuthorization()
} else{...}
private func checkLocationAuthorization() {
switch CLLocationManager.authorizationStatus() {
case .authorizedWhenInUse:
mapView.showsUserLocation = true
if incomeSegueIdentifire == "getAddress" { showUserLocation() }
break
//other cases
}
Также у меня есть еще одна кнопка2 с переходом на VC1, которая открывает VC2 с картой и фокусируется на место, с адресом, который я установил, и в этом случае у меня есть button3 на карте, которая фокусируется на мне правильно:
@IBAction func centerViewInUserLocation() {
showUserLocation()
}
Есть метод, который я использую, чтобы сосредоточиться на пользователе.
private func showUserLocation() {
if let location = locationManager.location?.coordinate {
let region = MKCoordinateRegion(center: location,
latitudinalMeters: regionInMeters,
longitudinalMeters: regionInMeters)
mapView.setRegion(region, animated: true)
}
}
Значение доходаSegueIdentifire, которое я установил в другом классе
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let identifire = segue.identifier, let mapVC = segue.destination as? MapViewController else { return }
mapVC.incomeSegueIdentifire = identifire
}