swift - 如何在应用程序运行时顺利加载谷歌地图视图

Posted

技术标签:

【中文标题】swift - 如何在应用程序运行时顺利加载谷歌地图视图【英文标题】:swift - How to have google map view load smoothly upon application run 【发布时间】:2016-05-01 07:23:08 【问题描述】:

当视图在初始启动时加载(点击图标/运行程序),谷歌地图视图在英国启动,然后以非常突然的方式传送到我当前的位置。我的代码中没有任何地方有任何我认为会导致它在那里加载然后传送到我的位置的英国坐标。

如何解决这个问题,让启动过程更优雅?

let locationManager = CLLocationManager()
let googleMapView: GMSMapView!

override func viewDidLoad() 
    super.viewDidLoad()

    self.locationManager.requestAlwaysAuthorization()
    self.locationManager.requestWhenInUseAuthorization()

    if CLLocationManager.locationServicesEnabled() 
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.startMonitoringSignificantLocationChanges()

    



override func viewDidAppear(animated: Bool) 
    super.viewDidAppear(animated)

    self.googleMapView = GMSMapView(frame: self.mapViewContainer.frame)
    self.view.addSubview(self.googleMapView)
    self.googleMapView.myLocationEnabled = true
    self.googleMapView.settings.compassButton = true


【问题讨论】:

参考这个,它可能对你有帮助。 ***.com/questions/32043284/… 我很感激,但我对坐标没有任何问题,并且标记被重复或放置在错误的区域。举个例子,如果你下载了谷歌地图应用程序,一旦你打开应用程序,它就会在你当前的位置完美放大。在我的应用程序中,它任意开始悬停在英国上空并以不吸引人的方式放大到我当前的位置 我的意思是,如果您忘记了任何步骤,请遵循基本程序,然后您可以检查一下。在 viewDidAppear() 中设置 self.gMapView.myLocationEnabled = YES;,在其中定义了 GMSMapView 啊,我在 didUpdateLocations 方法中设置了该设置,但只是将其更改为在 viewDidAppear 中调用。但什么都没有改变,我最初的视野仍然是英国,然后把我传送到我现在的位置 【参考方案1】:

您可以尝试使用Map Objects。默认情况下,地图上不显示任何位置数据。您可以通过在GMSMapView 上设置myLocationEnabled 来启用蓝色的“我的位置”点和指南针方向。

mapView.myLocationEnabled = true

启用此功能还将通过 myLocation 属性提供用户的当前位置。

if let mylocation = mapView.myLocation 
  print("User's location: \(mylocation)")
 else 
  print("User's location is unknown")

此属性可能不会立即可用 - 例如,如果 ios 提示用户允许访问此数据。在这种情况下它将为零。

【讨论】:

有趣,我已经尝试以某种方式对其进行操作,但出现的第一个位置仍然是在英国, 您可以尝试Geolocation,它指的是通过各种数据收集机制来识别用户或计算设备的地理位置。通常,大多数地理定位服务使用网络路由地址或内部 GPS 设备来确定此位置。这个guide 可能会对你有所帮助。 我想知道我是否真的需要实施地理定位。似乎这比我在地图出现后立即在地图上加载我当前位置所要做的要多一点。调用您已实现的代码以在 viewDidLoad 中打印我的位置 - 发生致命错误,意外发现 nil - 并在 viewDidAppear 中输出“用户位置未知”。只是想知道为什么当谷歌地图应用即时出现时,跟踪位置需要这么长时间

以上是关于swift - 如何在应用程序运行时顺利加载谷歌地图视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter Web 中使用谷歌地图库? [关闭]

如何在 C++ 语言中将谷歌地图 API 与 MFC 或 QT 一起使用?

如何在 RecyclerView 中顺利加载媒体元数据

如何将热图添加到 Flutter 移动应用程序

如何用经纬度查地点?

如何在 swift 中使用多个部分的骨架加载?