MKMapView 以编程方式设置区域时缩小

问题描述 投票:0回答:0

我正在尝试以编程方式将 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 代码

可以很明显的看到这个明显的原因稍微大一点

swift mapkit mkmapview
© www.soinside.com 2019 - 2024. All rights reserved.