如何在 SwiftUI 上声明 GMSMapViewDelegate

How to declare GMSMapViewDelegate on SwiftUI

我是 SwiftUI 的新手,正在尝试使用带有地图的 GoogleMapsApi 实施解决方案,用户可以在其中触摸地图并执行操作。为此,我知道必须实现委托,但我不知道如何使用 SwifUI 实现它。网上有很多代码示例,在 Swift 甚至 Objective C 中,但我在 SwifUI.

上找不到任何代码示例

这是我所做的(我试图让这段代码尽可能简单):


struct GoogleMapsHomeView: UIViewRepresentable {

    func makeUIView(context: Self.Context) -> GMSMapView {

        let mapView = GMSMapView.map()

        return mapView

    }

    func updateUIView(_ mapView: GMSMapView, context: Context) {

    }

}

struct HomeView: View {

    var body: some View {
        GoogleMapsHomeView()
    }

}

struct HomeView_Previews: PreviewProvider {
    static var previews: some View {
        HomeView()
    }
}

谁能帮我声明 GMSMapViewDelegate 和相关的用户地图移动检测侦听器?

如有任何帮助,提前 10 倍。

常见的模式是使用协调器作为委托

struct GoogleMapsHomeView: UIViewRepresentable {

    func makeUIView(context: Self.Context) -> GMSMapView {

        let mapView = GMSMapView.map()
        mapView.delegate = context.coordinator
        return mapView

    }

    func makeCoordinator() -> Coordinator {
       Coordinator(owner: self)
    }

    func updateUIView(_ mapView: GMSMapView, context: Context) {
    }

    class Coordinator: NSObject, GMSMapViewDelegate {
       let owner: GoogleMapsHomeView       // access to owner view members,

       init(owner: GoogleMapsHomeView) {
         self.owner = owner
       } 

         // ... delegate methods here
    }
}