如何在 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
}
}
我是 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
}
}