Как предотвратить автоматическое масштабирование с помощью IOS MapKit при использовании userTrackingMode = .followWithHeading? (с использованием SwiftUI)
Как можно предотвратить автоматическое масштабирование с помощью IOS MapKit при использовании userTrackingMode = .followWithHeading? То есть я устанавливаю текущее местоположение пользователя в центре экрана и использую view.userTrackingMode = .followWithHeading, чтобы карта была ориентирована на север, но при увеличении / уменьшении масштаба вручную MapView автоматически отменяет это и возвращается назад. на тот уровень, на котором он, кажется, предпочитает находиться.
Я должен был иметь возможность увеличивать масштаб, тогда уровень масштабирования остается таким, в то время как он сохраняет карту по центру местоположения пользователя и продолжает автоповорот, чтобы карта оставалась выровненной по северу.
Я использую SwiftUI, поэтому у меня действительно есть местоположение, передаваемое в GCMapView в качестве параметра (в качестве средства для поддержания SwiftUI GCMapView в актуальном состоянии с указанием последнего местоположения пользователя). Не уверены, что это вызывает проблему?
Некоторые ключевые фрагменты (вытащили код, чтобы показать соответствующие строки) используемых мной обратных вызовов MapKit:
struct FlightView: View {
@EnvironmentObject var locationManager : GCLocationManager
@State var centreUserLocation : Bool = false
var body: some View {
GCMapView(
flight: flight,
userLocation: locationManager.userLocation,
centreUserLocation: centreUserLocation,
initalZoomDone: initalZoomDone
)
}
}
struct GCMapView : UIViewRepresentable {
let map = MKMapView()
func makeUIView(context: Context) -> MKMapView {
map.delegate = context.coordinator
map.isRotateEnabled = true
map.userTrackingMode = .followWithHeading
map.showsUserLocation = true
return map
}
func updateUIView(_ view: MKMapView, context: Context) {
if let userLocation = userLocation {
view.centerCoordinate = userLocation
view.userTrackingMode = .followWithHeading // Needed to keep map rotating to align to North
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(self)
}
class Coordinator: NSObject, MKMapViewDelegate {
var parent: GCMapView
init(_ parent: GCMapView) {
self.parent = parent
super.init()
}
}
}