我正在尝试以编程方式将 MKMapView 重新定位到用户的当前位置。
以下是重新进入recenter的代码
fileprivate func recenterToCurrentLocation() {
var userLocation: CLLocationCoordinate2D = self.mapView.userLocation.coordinate
let region: MKCoordinateRegion = MKCoordinateRegion(center: userLocation, span: self.mapView.region.span)
self.mapView.setRegion(region, animated: true)
}
当我通过触摸/捏合手动将 MKMapView 放大到最大级别,然后尝试点击“Recenter”按钮(实际上运行上面提到的代码)。新区域稍微缩小了一点。它和以前的不一样。
我正在尝试在不更改缩放级别的情况下使 MKMapView 重新居中。
但只有当放大级别达到最大时,我才会遇到这个问题。
以编程方式设置区域同时更改缩放级别。
这只发生在 iPad 上,在 iPhone 上,相同的代码工作得很好。
以下是我的 ViewController 的样子。
import UIKit
import MapKit
import CoreLocation
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
let locationManager: CLLocationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
mapView.showsUserLocation = true
locationManager.requestAlwaysAuthorization()
// Do any additional setup after loading the view.
}
@IBAction func recenterButtonTapped(_ sender: UIButton) {
recenterToCurrentLocation()
}
fileprivate func recenterToCurrentLocation() {
var userLocation: CLLocationCoordinate2D = self.mapView.userLocation.coordinate
let region: MKCoordinateRegion = MKCoordinateRegion(center: userLocation, span: self.mapView.region.span)
self.mapView.setRegion(region, animated: true)
}
}
以下是通过 Touch/Pinch 对当前位置进行最大放大的屏幕截图
以下是我在屏幕右下角点击 Recenter 按钮时的屏幕截图,当我设置 MKCoordinateRegion 时最终运行 recenter 代码
可以很明显的看到这个明显的原因稍微大一点