当视图在初始启动时加载(点击图标/运行程序),谷歌地图视图在英国开始,然后以非常突然的方式传送到我当前的位置。在我的代码中没有任何地方我有任何英国坐标,我认为这会导致它加载到那里然后传送到我的位置。
如何解决此问题并使启动过程更加优雅?
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
}
答案 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提示用户允许访问此数据。在这种情况下它将是零。