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

时间:2016-01-25 04:06:24

标签: ios swift google-maps currentlocation

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

如何解决此问题并使启动过程更加优雅?

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

}

Beginning of Launch

Abruptly shifts to current location

1 个答案:

答案 0 :(得分:0)

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

mapView.myLocationEnabled = true

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

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

此属性可能无法立即使用 - 例如,如果iOS提示用户允许访问此数据。在这种情况下它将是零。