CLLocationManager的委托方法
didChangeAuthorizationStatus和didUpdateToLocation
没有接到电话。
位置始终使用说明键已添加到info.plist中,并且在我首次启动应用程序时也收到通知。
我能够看到谷歌地图,但是我看不到当前位置,当我更改位置时,它不会更新。基本上不会调用委托方法。
//码
import UIKit import GoogleMaps class ViewController: UIViewController,GMSMapViewDelegate { @IBOutlet weak var mapViewTest: GMSMapView! let locationManager = CLLocationManager() var currentLocation :CLLocation = CLLocation(latitude: 0.0, longitude: 0.0) var currentLatitude : Double = 0.0 var currentLongitude : Double = 0.0 override func viewDidLoad() { super.viewDidLoad()`` locationManager.delegate = self if (CLLocationManager.locationServicesEnabled()) { locationManager.desiredAccuracy = kCLLocationAccuracyBest locationManager.allowsBackgroundLocationUpdates = true locationManager.requestAlwaysAuthorization() locationManager.startUpdatingLocation() } // Do any additional setup after loading the view, typically from a nib. } } extension ViewController : CLLocationManagerDelegate { func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { if status == .authorizedAlways { if(CLLocationManager .locationServicesEnabled()) { locationManager.startUpdatingLocation() mapViewTest.isMyLocationEnabled = true mapViewTest.settings.myLocationButton = true } } } func locationManager(manager: CLLocationManager, didUpdateToLocation newLocation: CLLocation, fromLocation oldLocation: CLLocation) { mapViewTest.camera = GMSCameraPosition(target: (newLocation.coordinate), zoom: 15, bearing: 0, viewingAngle: 0) currentLocation = newLocation currentLatitude = newLocation.coordinate.latitude currentLongitude = newLocation.coordinate.longitude } func locationManager(manager: CLLocationManager, didFailWithError error: NSError) { print("Errors: " + error.localizedDescription) } }
在您的代码中,您正在使用Swift 3,并且在Swift 3中,CLLocationManagerDelegate方法的签名是这样更改的。
CLLocationManagerDelegate
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { } //func locationManager(_ manager: CLLocationManager, didUpdateTo newLocation: CLLocation, from oldLocation: CLLocation) is deprecated with below one func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { } func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { }
有关CLLocationManagerDelegate更多详细信息,请参阅Apple文档。