我将地图设置为旋转到用户位置。我如何允许用户与地图进行交互?

I have the map set to rotate to the users location. How do I allow the user to interact with the map?

我将地图设置为居中并旋转到用户的位置和方向,但地图视图被锁定,因为我无法与其交互。

extension MapScreen: CLLocationManagerDelegate {
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        guard let location = locations.last else { return }
        let region = MKCoordinateRegion.init(center: location.coordinate, latitudinalMeters: regionInMeters, longitudinalMeters: regionInMeters)
        mapView.setRegion(region, animated: true)


    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        checkLocationAuthorization()

    func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
        mapView.camera.heading = newHeading.magneticHeading
        mapView.setCamera(mapView.camera, animated: true)
            }
        }
    }
}

我如何让用户探索周围的环境?滚动、缩放、与图钉交互等,同时向用户居中和旋转?

通过使用 didUpdateLocations 委托方法,您可以不断更新地图视图,覆盖用户所做的任何更改。

解决方案是不使用 CLLocationManager 委托方法来更新地图视图。

只需将地图上的 userTrackingMode 设置为 .followWithHeading,地图视图就会为您完成这项工作。一旦用户与地图交互,跟踪模式将更改为 .none

您可以将按钮添加到 re-activate .followWithHeading 用户跟踪模式。

这就是我最终组合在一起的东西,而且效果很好。

func centerViewOnUserLocation() { mapView.setUserTrackingMode(.followWithHeading, animated:true)}