自 pod 更新后,地图 iOS 左上角的 Google 地图相机目标

GoogleMaps camera target in top left corner of map iOS since pod update

我有一个应用程序,我用它在 GoogleMap 上放置图钉,然后将这些点保存到 Firebase 数据库,然后在另一个应用程序中用作最终用户的参考。

我最近将申请中的 pods 更新为 Using GoogleMaps (3.3.0)。该地图之前工作正常,但现在当我转到地图时,它从我认为是 lat/long 0,0 的位置开始。一旦我与地图互动(比如拖动它),它就会弹出到我指定的任何目标开始。此外,当我放下我指定放在 camera.target 上的大头针时,它通常会按预期落在中心。标记现在落在地图的左上角。我之前使用的代码运行良好,在构建或运行时没有出现任何错误。好像是 camera.target 好像是

我在此处看到 'fleeting' 对它的引用:https://github.com/flutter/flutter/issues/24806

这里: Google Map Centers at top left corner

但这两种情况似乎都不完全相同。

编辑: 将 phone 旋转到横向和背面似乎正确地重置了所有内容,这看起来像是一个视图问题,而不是地图问题或加载时间问题,尽管当地图从 0,0 开始时适合于更多的是加载时间问题。

如果这是 pod 的错误,我想我会在整个堆栈中找到它,但我很难看出它是我的代码的问题,因为它工作得很好,而且我不知道在 SDK 的遍历中没有看到暗示我的代码现在有某种缺陷的任何变化。

加载使用IB创建的mapView 重写 func viewDidLoad() { super.viewDidLoad()

let ud = UserDefaults.standard
    let startingX = ud.double(forKey: "startingX")
    let startingY = ud.double(forKey: "startingY")

    let camera = GMSCameraPosition.camera(withLatitude: startingX, longitude: startingY, zoom: 18.0)
    googleMapView.camera = camera

    self.googleMapView.mapType = .hybrid

    self.googleMapView.settings.scrollGestures = true
    self.googleMapView.settings.rotateGestures = true
    self.googleMapView.settings.consumesGesturesInView = true
}

当我创建标记时:

@IBAction func createPinButtonPressed(_ sender: Any) {

    if self.CoordinateSelectorSegment.selectedSegmentIndex == 0
    {

        if backTeeMarker.map == nil {
        backTeeMarker.position = self.googleMapView.camera.target
        backTeeMarker.title = "back tee"
        backTeeMarker.map = googleMapView
        backTeeMarker.isDraggable = true
        backTeeMarker.icon = GMSMarker.markerImage(with: .red)
        }
    }
...
}

我发现我可以通过将地图创建添加到 ViewWillAppear 而不是将它放在 ViewDidLoad 中来解决这个问题。

 override func viewWillAppear(_ animated: Bool) {
    let ud = UserDefaults.standard
    let startingX = ud.double(forKey: "startingX")
    let startingY = ud.double(forKey: "startingY")

    let camera = GMSCameraPosition.camera(withLatitude: startingX, longitude: startingY, zoom: 18.0)
    googleMapView.camera = camera

    self.googleMapView.mapType = .hybrid

    self.googleMapView.settings.scrollGestures = true
    self.googleMapView.settings.rotateGestures = true
    self.googleMapView.settings.consumesGesturesInView = true
}