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

bxfogqkk  于 2023-01-06  发布在  iOS
关注(0)|答案(2)|浏览(107)

当视图加载初始启动(点击图标/运行程序),谷歌Map视图开始在英国,然后传送到我目前的位置在一个非常突然的方式。在我的代码没有任何地方,我会认为会导致它加载那里,然后传送到我的位置。
如何解决这个问题并使启动过程更优雅?

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

}

wpx232ag

wpx232ag1#

您可以尝试使用Map Objects。默认情况下,Map上不显示位置数据。您可以通过在GMSMapView上设置myLocationEnabled来启用蓝色“我的位置”点和指南针方向。
mapView.myLocationEnabled = true
通过启用此功能,还将通过myLocation属性提供用户的当前位置。

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

此属性可能不会立即可用-例如,如果iOS提示用户允许访问此数据,则此属性将为空。

8qgya5xd

8qgya5xd2#

您必须使用相机初始化Map(和位置初始化)。例如:

var map: GMSMapView!

init() {
map = GMSMapView(frame: view.frame, camera: GMSCameraPosition.camera(withTarget: getMyCoordinate(), zoom: mySavedZoom()))
}

相关问题