I am using Google maps sdk of iOS(Swift).
Has anyone know how to "Show my current location on google maps, when I open the ViewController"?
Actually it just like Google Maps App. When you open the Google Maps, the blue spot will show your current location. You don't need press the "myLocationButton" in first time.
So this is the code:
import UIKit import CoreLocation import GoogleMaps class GoogleMapsViewer: UIViewController { @IBOutlet weak var mapView: GMSMapView! let locationManager = CLLocationManager() let didFindMyLocation = false override func viewDidLoad() { super.viewDidLoad() let camera = GMSCameraPosition.cameraWithLatitude(23.931735,longitude: 121.082711, zoom: 7) let mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera) mapView.myLocationEnabled = true self.view = mapView // GOOGLE MAPS SDK: BORDER let mapInsets = UIEdgeInsets(top: 80.0, left: 0.0, bottom: 45.0, right: 0.0) mapView.padding = mapInsets locationManager.distanceFilter = 100 locationManager.delegate = self locationManager.requestWhenInUseAuthorization() // GOOGLE MAPS SDK: COMPASS mapView.settings.compassButton = true // GOOGLE MAPS SDK: USER'S LOCATION mapView.myLocationEnabled = true mapView.settings.myLocationButton = true } } // MARK: - CLLocationManagerDelegate extension GoogleMapsViewer: CLLocationManagerDelegate { func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) { if status == .AuthorizedWhenInUse { locationManager.startUpdatingLocation() mapView.myLocationEnabled = true mapView.settings.myLocationButton = true } } func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { if let location = locations.first { mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 20, bearing: 0, viewingAngle: 0) locationManager.stopUpdatingLocation() } } }
Anyone help? Thank you so much!
On the Android smartphone or tablet, open the Settings app. Tap Location. At the top, switch location on.
For Swift 3.x solution, please check this Answer
First all of you have to enter a key in Info.plist file NSLocationWhenInUseUsageDescription
After adding this key just make a CLLocationManager
variable and do the following
@IBOutlet weak var mapView: GMSMapView! var locationManager = CLLocationManager() class YourControllerClass: UIViewController,CLLocationManagerDelegate { //Your map initiation code let mapView = GMSMapView.mapWithFrame(CGRectZero, camera: camera) self.view = mapView self.mapView?.myLocationEnabled = true //Location Manager code to fetch current location self.locationManager.delegate = self self.locationManager.startUpdatingLocation() } //Location Manager delegates func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { let location = locations.last let camera = GMSCameraPosition.cameraWithLatitude((location?.coordinate.latitude)!, longitude: (location?.coordinate.longitude)!, zoom: 17.0) self.mapView?.animateToCameraPosition(camera) //Finally stop updating location otherwise it will come again and again in this delegate self.locationManager.stopUpdatingLocation() }
When you run the code you will get a pop up of Allow and Don't Allow for location. Just click on Allow and you will see your current location.
Make sure to do this on a device rather than simulator. If you are using simulator, you have to choose some custom location and then only you will be able to see the blue dot.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With