这是我实现谷歌地图和CLLocationManager的代码:
class MapViewController: UIViewController { @IBOutlet weak var MapView: GMSMapView! var locationmanager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() locationmanager.delegate = self locationmanager.requestWhenInUseAuthorization() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } extension MapViewController: CLLocationManagerDelegate { private func locationManager(manager: CLLocationManager,didChangeAuthorizationStatus status: CLAuthorizationStatus) { print("didChangeAuthorizationStatus") if status == .authorizedWhenInUse { locationmanager.startUpdatingLocation() MapView.isMyLocationEnabled = true MapView.settings.myLocationButton = true } } func locationManager(_ manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) { print("didUpdateLocations") if let location = locations.first { MapView.camera = GMSCameraPosition(target: location.coordinate,zoom: 15,bearing: 0,viewingAngle: 0) locationmanager.stopUpdatingLocation() } } }
单击允许或不允许didChangeAuthorizationStatus从未调用
解决方法
如果您使用的是Swift 3,则此方法的整个签名不正确.
这就是你需要的:
func locationManager(_ manager: CLLocationManager,didChangeAuthorization status: CLAuthorizationStatus) { //your code }