Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to "Show my current location on google maps, when I open the ViewController?" in Swift?

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!

like image 820
Eric Huang Avatar asked Jul 28 '16 03:07

Eric Huang


People also ask

How do I get Google Maps to show my current location?

On the Android smartphone or tablet, open the Settings app. Tap Location. At the top, switch location on.


1 Answers

For Swift 3.x solution, please check this Answer

First all of you have to enter a key in Info.plist file NSLocationWhenInUseUsageDescription

enter image description here

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.

enter image description here

like image 155
Rajan Maheshwari Avatar answered Oct 02 '22 07:10

Rajan Maheshwari