我有一个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中,我为...
尝试以下操作
我想我知道了。