如何在SwiftUI中以编程方式计算MKMapCamera centerCoordinateDistance

问题描述 投票:0回答:1

我有一个SwiftUI MapKitView,它遵循适用于macOS的https://www.hackingwithswift.com/books/ios-swiftui/advanced-mkmapview-with-swiftui中的模式。在makeNSView中,将区域设置为要显示的位置的有趣部分,与窗口大小无关,并且无论NSWindow是横向还是纵向而不是纵向,我都可以默认默认缩放此代码。

 func makeNSView(context: Context) -> MKMapView {
    let mapView = MKMapView()
    mapView.delegate = context.coordinator
    mapView.mapType = .satellite
    mapView.pointOfInterestFilter = .excludingAll
    let region = MKCoordinateRegion(center: centroid, latitudinalMeters: 1160, longitudinalMeters: 1260)
    let fittedRegion = mapView.regionThatFits(region)
    mapView.setRegion(fittedRegion, animated: false)
}

[mapView.region似乎在返回setRegion()之后实际上并未更新

问题是我想使地图的方向不是真正的北,所以我必须设置相机。

但是,必须根据设置的区域来计算创建MKMapCamera时的fromDistance:参数,但是摄像机的视场角是多少,以确定一旦将窗口包括正确的范围,摄像机的视场角应为多高。区域设置了?我基本上希望将缩放级别设置为与通过fittedRegion相同,并希望在更改后的航向(俯仰为0)中将其复制到相机中]

[MKMapViewDelegate似乎有一个mapViewDidChangeVisibleRegion,我认为协调器是SwiftUI中的委托。我可以看到多次调用updateNSView的区域,因此在实际设置之前需要几次调用。我怀疑将相机设置在那里会创建另一个updateNSView()调用,这会带来问题。

[无论窗口大小如何,如何缩放地图以使其具有给定的区域范围,以及缩放级别和初始加载时的前进方向(但然后让用户根据自己的意愿进行操作。)。

我有一个SwiftUI MapKitView,它遵循适用于macOS的https://www.hackingwithswift.com/books/ios-swiftui/advanced-mkmapview-with-swiftui中的模式。在makeNSView中,我为...

macos swiftui mapkit
1个回答
0
投票

尝试以下操作


0
投票

我想我知道了。

© www.soinside.com 2019 - 2024. All rights reserved.