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

Posted

技术标签:

【中文标题】自 pod 更新以来,iOS 地图左上角的 Google Maps 相机目标【英文标题】:GoogleMaps camera target in top left corner of map iOS since pod update 【发布时间】:2019-08-17 04:07:37 【问题描述】:

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

我最近将应用程序中的 pod 更新为 Using GoogleMaps (3.3.0)。该地图以前工作正常,但现在当我转到地图时,它从我认为的纬度/经度 0,0 开始。一旦我与地图交互(比如拖动它),它就会弹出到我指定它开始的任何目标。此外,当我放下我指定放在camera.target 上的别针时,它曾经按预期落到中心。标记现在落在地图的左上角。我以前使用的代码运行良好,并且在构建或运行时没有错误。看来 camera.target 似乎是

我在这里看到了对它的“短暂”引用:https://github.com/flutter/flutter/issues/24806

这里: Google Map Centers at top left corner

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

编辑: 将手机旋转到横向和向后似乎可以正确重置所有内容,这使得它看起来像是一个视图问题,而不是地图问题或加载时间问题,尽管当地图从 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)
        
    
...

【问题讨论】:

startingX 和 startingY 应该是 midX 和 MidY,只是猜测。 感谢您的猜测...但不是。 【参考方案1】:

我发现我可以通过将地图创建添加到 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

【讨论】:

我在 viewDidAppear 中做,但还是一样:/你知道为什么吗?只有在我切换到另一个视图并返回之后才会发生这种情况,并且它再也不会正确了。 你试过 viewWillAppear 了吗?它与 viewDidAppear 不同。它发生得更早,可能会解决问题。 试过但效果不佳:/我使用的是旧版本(2.6.0),它可以工作,但新版本不能。我猜他们搞砸了。

以上是关于自 pod 更新以来,iOS 地图左上角的 Google Maps 相机目标的主要内容,如果未能解决你的问题,请参考以下文章

自 iOS 12.2 更新以来没有崩溃报告的应用程序崩溃 [关闭]

自 Xcode 5.1 以来无法在 cocoapods 中构建模块“UIKit”

FirebaseInstanceID 无法使用 cocoapods 正确安装

Xamarin.Forms NavigationBar 颜色自 iOS 4.6 以来被覆盖

自 IOS 8 以来使用自动布局和滚动视图的额外顶部空白

快速链接器命令失败,退出代码为 1 Google Maps iOS Util pod install