如何在不影响缩放(或距 MapCamera 视点的距离)的情况下更新 SwiftUI 地图的位置。所以想要总体想要
问题:在我下面的代码中,这不起作用,因为当尝试从 MapCamera 获取“当前距离”(又名缩放)时,即“mapCamPost.camera?distance”,该值似乎在用户之后变为“nil”放大地图。我怎样才能解决这个问题?或者使用新的 SwiftUI Map 的另一种方法来解决这个问题? (请注意,我在 UIKit MKMapCamera 上没有遇到此问题)
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
))
}
}
}
}
您可以使用额外的
distance
来跟踪相机的 @State
:
@State private var distance = 1000.0
.onMapCameraChange(frequency: .continuous) {
distance = $0.camera.distance
}
然后您可以在创建新的
distance
时使用MapCamera
。