narayana MV narayana MV - 3 years ago 98
iOS Question

CLLocationManager delegate methods are not getting called(google maps is integrated)

The delegate Methods of CLLocationManager


are not getting called.

Location Always Usage Description key is already added in info.plist and I am getting notification also when i launch app for the first time.

I am able to see the google map, but i am not able to see current location, When i change location, its not getting updated. Basicaaly delegate methods are not getting called.


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()
locationManager.delegate = self
if (CLLocationManager.locationServicesEnabled())
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.allowsBackgroundLocationUpdates = true
// 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())
mapViewTest.isMyLocationEnabled = true
mapViewTest.settings.myLocationButton = true
func locationManager(manager: CLLocationManager, didUpdateToLocation newLocation: CLLocation, fromLocation oldLocation: CLLocation)
{ = 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)

Answer Source

From your code you are working with Swift 3, and in Swift 3 CLLocationManagerDelegate method's signature is changed like this.

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) {


Check Apple Documentation on CLLocationManagerDelegate for more details.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download