相当于 macOS 10.15 的地图结构?

Equivalent of map struct for macOS 10.15?

我一直在学习 Xcode (link) 的教程,直到我到达“MapView”部分,此时我被指示使用 Map(coordinateRegion: $region)。我在 Mac Mini 上 运行ning Xcode 12.4,它只能 运行 到 macOS 10.15,所以我收到了 'Map' is only available in macOS 11.0 or newer.我尝试浏览 Apple 文档以查找与我的 MacOS 版本等效的代码,但找不到任何内容。我可以使用什么等效代码来完成教程的这一部分?

完整示例代码:

import SwiftUI
import MapKit

struct MapView: View {
    @State private var region = MKCoordinateRegion(
        center: CLLocationCoordinate2D(latitude: 34.011_286, longitude: -116.166_868),
        span: MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2)
    )

    var body: some View {
        Map(coordinateRegion: $region)
    }
}

struct MapView_Previews: PreviewProvider {
    static var previews: some View {
        MapView()
    }
}

您需要将 MKMapView 包装在 NSViewRepresentable 中。

以下是它的基本表示。请注意,SwiftUI 2.0 Map 可以做更多的事情,但这会让您开始使用您显示的示例代码:

struct MapView: View {
    @State private var region = MKCoordinateRegion(
        center: CLLocationCoordinate2D(latitude: 34.011_286, longitude: -116.166_868),
        span: MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2)
    )
    
    var body: some View {
        MapCompat(coordinateRegion: $region)
    }
}

struct MapCompat : NSViewRepresentable {
    @Binding var coordinateRegion : MKCoordinateRegion
    
    func makeNSView(context: Context) -> MKMapView {
        let mapView = MKMapView()
        mapView.delegate = context.coordinator
        return mapView
    }
    
    func updateNSView(_ view: MKMapView, context: Context) {
        view.region = coordinateRegion
    }
    
    func makeCoordinator() -> Coordinator {
        return Coordinator(self)
    }
    
    class Coordinator : NSObject, MKMapViewDelegate {
        var parent : MapCompat
        
        init(_ parent: MapCompat) {
            self.parent = parent
        }
        
        func mapViewDidChangeVisibleRegion(_ mapView: MKMapView) {
            DispatchQueue.main.async {
                self.parent.coordinateRegion = mapView.region
            }
        }
    }
}

已更新以修复我最初错误的 UIKit (UIViewRepresentable) 等效项而不是 AppKit (NSViewRepresentable)