如何在 SwiftUI MapKit 的 updateUIView 中添加“.setRegion”?

Posted

技术标签:

【中文标题】如何在 SwiftUI MapKit 的 updateUIView 中添加“.setRegion”?【英文标题】:How do I add ".setRegion" in updateUIView in SwiftUI MapKit? 【发布时间】:2020-09-16 21:21:50 【问题描述】:

我需要在 SwiftUI 中使用 MapKit。以前我使用的是故事板。在调用“updateUIView”函数使用 MapKit 后,我​​无法执行“uiView.setRegion”。我该如何解决这个问题?

func updateUIView(_ uiView: UIViewType, context: Context) 
        let span = MKCoordinateSpan(latitudeDelta: 2.0, longitudeDelta: 2.0)
        let region = MKCoordinateRegion(center: coordinate, span: span)
        uiView.setRegion(region, animated: true)
    

我收到此错误消息:“某些 UIView”类型的值没有成员“setRegion”

【问题讨论】:

你的 UIViewType 应该是 MKMapView,但我认为它不应该在 updateUIView 中,在 makeUIView 中进行。 【参考方案1】:

请将func updateUIView(_ uiView: UIViewType, context: Context) 更新为func updateUIView(_ uiView: MKMapView, context: Context)

为了让updateUIView 接收uiView: as MKMapView,您必须在makeUIView 函数中返回 MKMapView,所以像这样 func makeUIView(context: Context) -> MKMapView

struct MapView: UIViewRepresentable 
    func makeUIView(context: Context) -> MKMapView 
        MKMapView(frame: .zero)
    
    
    func updateUIView(_ uiView: MKMapView, context: Context) 

        let span = MKCoordinateSpan(latitudeDelta: 2.0,
                                    longitudeDelta: 2.0)
        let region = MKCoordinateRegion(center: coordinate,
                                        span: span)
        uiView.setRegion(region,animated: true)
    

【讨论】:

以上是关于如何在 SwiftUI MapKit 的 updateUIView 中添加“.setRegion”?的主要内容,如果未能解决你的问题,请参考以下文章

Swift:SwiftUI中MapKit的使用体验

如何使用 MapKit (SwiftUI) 将工具提示添加到地图注释以在地图上显示位置名称

使用 SwiftUI 和 MapKit 检索用户当前位置

在 swiftUI 2 中向 MapKit 添加 MapMarker

使用 SwiftUI 将单个引脚添加到 Mapkit

你能从 SwiftUI 中的 MapKit 数据库中获取纬度和经度吗