change SwiftUI Map position without resetting distance?

How would one update the position of a SwiftUI Map without impacting the zoom (or distance from a MapCamera point of view). So want:

a) map position being updated by incoming GPS co-ordinates b) user may then on the Map zoom in/out c) on subsequent GPS position changes I want to to keep the zoom/distance changes from the User and not reset these

From the code below the the issue seems to be when getting the current "distance" (i.e. mapCamPost.camera?distance) that this value seems to go to "nil" after the User zooms in the map.


struct GCMap: View {
    
    @StateObject var locationMgr = GcFlightState()
    @State private var mapCamPos: MapCameraPosition = .automatic
    
    var body: some View {
        ZStack {
            Map(position: $mapCamPos) {
                Annotation("UserLocation", coordinate: self.locationMgr.location.coordinate) {
                    Image(systemName: "airplane.circle").rotationEffect(.degrees(270))
                }
            }
            .onMapCameraChange() {
                print("onMapCameraChange \(mapCamPos.camera?.distance)")
            }
            .onReceive(locationMgr.$location) { location in
                mapCamPos =  .camera(MapCamera(
                    centerCoordinate: location.coordinate,
                    distance: mapCamPos.camera?.distance ?? 1000,   // <<===
                    heading: location.course
                ))
            }
            
        }
    }
}
change SwiftUI Map position without resetting distance?
 
 
Q