# MGLLocationManager

    @protocol MGLLocationManager <NSObject>

The `MGLLocationManager` protocol defines a set of methods that a class must implement in order to serve as the location manager of an `MGLMapView`. A location manager is responsible for notifying the map view about location-related events, such as a change in the user’s location. This protocol is similar to the Core Location framework’s `CLLocationManager` class, but your implementation does not need to be based on `CLLocationManager`.

To receive location updates from an object that conforms to the `MGLLocationManager` protocol, use the optional methods available in the `MGLLocationManagerDelegate` protocol.

### Configuring Location Update Precision

- `distanceFilter`

  Specifies the minimum distance (measured in meters) a device must move horizontally before a location update is generated.

  The default value of this property is `kCLDistanceFilterNone` when `MGLMapView` uses its default location manager.

  See

  `CLLocationManager.distanceFilter`

  #### Declaration

  Objective-C

      @optional
      @property (assign, readwrite, nonatomic) CLLocationDistance distanceFilter;

  Swift

      optional var distanceFilter: CLLocationDistance { get set }

  View Source on GitHub
- `desiredAccuracy`

  Specifies the accuracy of the location data.

  The default value is `kCLLocationAccuracyBest` when `MGLMapView` uses its default location manager.

  Note

  Determining a location with greater accuracy requires more time and more power.

  See

  `CLLocationManager.desiredAccuracy`

  #### Declaration

  Objective-C

      @optional
      @property (assign, readwrite, nonatomic) CLLocationAccuracy desiredAccuracy;

  Swift

      optional var desiredAccuracy: CLLocationAccuracy { get set }

  View Source on GitHub
- `activityType`

  Specifies the type of user activity associated with the location updates.

  The location manager uses this property as a cue to determine when location updates may be automatically paused.

  The default value is `CLActivityTypeOther` when `MGLMapView` uses its default location manager.

  See

  `CLLocationManager.activityType`

  #### Declaration

  Objective-C

      @optional
      @property (assign, readwrite, nonatomic) CLActivityType activityType;

  Swift

      optional var activityType: CLActivityType { get set }

  View Source on GitHub
- `delegate`

  The delegate to receive location updates.

  Do not set the location manager’s delegate yourself. `MGLMapView` sets this property after the location manager becomes `MGLMapView`’s location manager.

  #### Declaration

  Objective-C

      @required
      @property (readwrite, nonatomic)
          id<MGLLocationManagerDelegate> _Nullable delegate;

  Swift

      weak var delegate: MGLLocationManagerDelegate? { get set }

  View Source on GitHub

### Requesting Authorization for Location Services

- `authorizationStatus`

  Returns the current localization authorization status.

  See

  `+[CLLocationManger authorizationStatus]`

  #### Declaration

  Objective-C

      @required
      @property (readonly, nonatomic) CLAuthorizationStatus authorizationStatus;

  Swift

      var authorizationStatus: CLAuthorizationStatus { get }

  View Source on GitHub
- `-requestAlwaysAuthorization`

  Requests permission to use the location services whenever the app is running.

  #### Declaration

  Objective-C

      - (void)requestAlwaysAuthorization;

  Swift

      func requestAlwaysAuthorization()

  View Source on GitHub
- `-requestWhenInUseAuthorization`

  Requests permission to use the location services while the app is in the foreground.

  #### Declaration

  Objective-C

      - (void)requestWhenInUseAuthorization;

  Swift

      func requestWhenInUseAuthorization()

  View Source on GitHub

### Initiating Location Updates

- `-startUpdatingLocation`

  Starts the generation of location updates that reports the user’s current location.

  #### Declaration

  Objective-C

      - (void)startUpdatingLocation;

  Swift

      func startUpdatingLocation()

  View Source on GitHub
- `-stopUpdatingLocation`

  Stops the generation of location updates.

  #### Declaration

  Objective-C

      - (void)stopUpdatingLocation;

  Swift

      func stopUpdatingLocation()

  View Source on GitHub

### Initiating Heading Updates

- `headingOrientation`

  Specifies a physical device orientation.

  #### Declaration

  Objective-C

      @required
      @property (assign, readwrite, nonatomic) CLDeviceOrientation headingOrientation;

  Swift

      var headingOrientation: CLDeviceOrientation { get set }

  View Source on GitHub
- `-startUpdatingHeading`

  Starts the generation of heading updates that reports the user’s current hading.

  #### Declaration

  Objective-C

      - (void)startUpdatingHeading;

  Swift

      func startUpdatingHeading()

  View Source on GitHub
- `-stopUpdatingHeading`

  Stops the generation of heading updates.

  #### Declaration

  Objective-C

      - (void)stopUpdatingHeading;

  Swift

      func stopUpdatingHeading()

  View Source on GitHub
- `-dismissHeadingCalibrationDisplay`

  Dissmisses immediately the heading calibration view from screen.

  #### Declaration

  Objective-C

      - (void)dismissHeadingCalibrationDisplay;

  Swift

      func dismissHeadingCalibrationDisplay()

  View Source on GitHub