【问题标题】:SwiftUI: GMSMapView does not conform to protocol UIViewRepresentableSwiftUI:GMSMapView 不符合协议 UIViewRepresentable
【发布时间】:2021-01-09 14:51:20
【问题描述】:

我正在尝试将来自 google maps api 的 GMS Mapview 添加到我的应用程序中。 当我按照如何实现它的教程进行操作时,Xcode 似乎无法理解 GMSMapview 是 UIView。

这是我的代码

import SwiftUI
import GoogleMaps

struct MapsView: UIViewRepresentable {

private let zoomLevel: Float = 10.0
@ObservedObject var locationManager = LocationService()

func makeUIView(context: Context) -> some GMSMapView {
    let camera = GMSCameraPosition.camera(withLatitude: locationManager.lat, longitude: locationManager.lat, zoom: zoomLevel)
    let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
    return mapView
}

func updateUIView(_ mapView: GMSMapView, context: Context) {
    mapView.animate(toLocation: CLLocationCoordinate2D(latitude: locationManager.lat, longitude: locationManager.lon))
}

}

Xcode 也没有为我提供任何类型的解决方案来使其符合要求。

在我的 Podfile 中,我只添加了没有版本号的“GoogleMaps”。所以我相信我使用的是最新版本。

这是 Google 地图包中的已知错误还是我做错了什么?

【问题讨论】:

    标签: ios swiftui google-maps-sdk-ios


    【解决方案1】:

    删除some 字。

    func makeUIView(context: Context) -> GMSMapView { //<-- here
        let camera = GMSCameraPosition.camera(withLatitude: locationManager.lat, longitude: locationManager.lat, zoom: zoomLevel)
        let mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
        return mapView
    }
    

    【讨论】:

    • 谢谢!这非常有效。我对“some”关键字以及何时应该使用它有点陌生。
    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多