如何在当前位置上设置 MKMapView 区域并遵循用户位置



我有一个按钮,用于使地图居中并根据用户的当前位置设置区域,然后将用户跟踪模式设置为跟随。我在移动时跟随用户,如果他们移动地图或缩小地图,则会将用户跟踪模式设置为无。

这就是我所拥有的

guard let currentLocation = locationManager.location else { return }
let coordinateRegion = MKCoordinateRegion(center: currentLocation.coordinate,
                                          latitudinalMeters: regionRadius,
                                          longitudinalMeters: regionRadius)
map.setRegion(coordinateRegion, animated: true)
map.setUserTrackingMode(MKUserTrackingMode.follow, animated: true)

成功地将区域设置回用户的当前位置,然后是要遵循的用户跟踪模式,但由于某种原因它不再遵循。

您需要等待 setRegion 动画完成,这样它就不会弄乱 setUserTrackingMode。

guard let currentLocation = locationManager.location else { return }
let coordinateRegion = MKCoordinateRegion(center: currentLocation.coordinate, latitudinalMeters: regionRadius, longitudinalMeters: regionRadius)
MKMapView.animate(withDuration: 0.5, animations: {
    self.map.setRegion(coordinateRegion, animated: true)
}) { _ in
    self.map.setUserTrackingMode(MKUserTrackingMode.follow, animated: false)
}