Location Updates
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.
-
-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
whenMGLMapView
uses its default location manager.See
CLLocationManager.distanceFilter
Declaration
Objective-C
- (CLLocationDistance)distanceFilter;
Swift
optional func distanceFilter() -> CLLocationDistance
-
-setDistanceFilter:
Sets the minimum update distance in meters.
Declaration
Objective-C
- (void)setDistanceFilter:(CLLocationDistance)distanceFilter;
Swift
optional func setDistanceFilter(_ distanceFilter: CLLocationDistance)
Parameters
distanceFilter
The distance filter in meters.
-
-desiredAccuracy
Specifies the accuracy of the location data.
The default value is
kCLLocationAccuracyBest
whenMGLMapView
uses its default location manager.Note
Determining a location with greater accuracy requires more time and more power.
See
CLLocationManager.desiredAccuracy
Declaration
Objective-C
- (CLLocationAccuracy)desiredAccuracy;
Swift
optional func desiredAccuracy() -> CLLocationAccuracy
-
-setDesiredAccuracy:
Sets the desired location accuracy.
Declaration
Objective-C
- (void)setDesiredAccuracy:(CLLocationAccuracy)desiredAccuracy;
Swift
optional func setDesiredAccuracy(_ desiredAccuracy: CLLocationAccuracy)
Parameters
desiredAccuracy
The desired location accuracy.
-
-accuracyAuthorization
Specifies the level of location accuracy the Maps SDK has permission to use.
Note
If the value of this property isCLAccuracyAuthorizationFullAccuracy
, you can set theMGLLocationManager.desiredAccuracy
property to any value. If the value isCLAccuracyAuthorizationReducedAccuracy
, settingMGLLocationManager.desiredAccuracy
to a value other thankCLLocationAccuracyReduced
has no effect on the location information.Declaration
Objective-C
- (CLAccuracyAuthorization)accuracyAuthorization;
Swift
optional func accuracyAuthorization() -> CLAccuracyAuthorization
-
-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
whenMGLMapView
uses its default location manager.See
CLLocationManager.activityType
Declaration
Objective-C
- (CLActivityType)activityType;
Swift
optional func activityType() -> CLActivityType
-
-setActivityType:
Sets the type of user activity associated with the location updates.
Declaration
Objective-C
- (void)setActivityType:(CLActivityType)activityType;
Swift
optional func setActivityType(_ activityType: CLActivityType)
Parameters
activityType
The location’s manager activity type.
-
-requestTemporaryFullAccuracyAuthorizationWithPurposeKey:
Requests the user’s permission to temporarily use location update services with full accuracy.
Note
If the user turned off location accuracy you may use this method to request full accuracy for a session.Declaration
Objective-C
- (void)requestTemporaryFullAccuracyAuthorizationWithPurposeKey: (nonnull NSString *)purposeKey;
Swift
optional func requestTemporaryFullAccuracyAuthorization(withPurposeKey purposeKey: String)
-
delegate
The delegate to receive location updates.
Do not set the location manager’s delegate yourself.
MGLMapView
sets this property after the location manager becomesMGLMapView
’s location manager.Declaration
Objective-C
@required @property (nonatomic, weak, readwrite) id<MGLLocationManagerDelegate> _Nullable delegate;
Swift
weak var delegate: MGLLocationManagerDelegate? { get set }
Requesting Authorization for Location Services
-
authorizationStatus
Returns the current localization authorization status.
See
+[CLLocationManger authorizationStatus]
Declaration
Objective-C
@required @property (nonatomic, readonly) CLAuthorizationStatus authorizationStatus;
Swift
var authorizationStatus: CLAuthorizationStatus { get }
-
-requestAlwaysAuthorization
Requests permission to use the location services whenever the app is running.
Declaration
Objective-C
- (void)requestAlwaysAuthorization;
Swift
func requestAlwaysAuthorization()
-
-requestWhenInUseAuthorization
Requests permission to use the location services while the app is in the foreground.
Declaration
Objective-C
- (void)requestWhenInUseAuthorization;
Swift
func requestWhenInUseAuthorization()
-
-startUpdatingLocation
Starts the generation of location updates that reports the user’s current location.
Declaration
Objective-C
- (void)startUpdatingLocation;
Swift
func startUpdatingLocation()
-
-stopUpdatingLocation
Stops the generation of location updates.
Declaration
Objective-C
- (void)stopUpdatingLocation;
Swift
func stopUpdatingLocation()
-
headingOrientation
Specifies a physical device orientation.
Declaration
Objective-C
@required @property (nonatomic, assign, unsafe_unretained, readwrite) CLDeviceOrientation headingOrientation;
Swift
var headingOrientation: CLDeviceOrientation { get set }
-
-startUpdatingHeading
Starts the generation of heading updates that reports the user’s current hading.
Declaration
Objective-C
- (void)startUpdatingHeading;
Swift
func startUpdatingHeading()
-
-stopUpdatingHeading
Stops the generation of heading updates.
Declaration
Objective-C
- (void)stopUpdatingHeading;
Swift
func stopUpdatingHeading()
-
-dismissHeadingCalibrationDisplay
Dissmisses immediately the heading calibration view from screen.
Declaration
Objective-C
- (void)dismissHeadingCalibrationDisplay;
Swift
func dismissHeadingCalibrationDisplay()
MGLLocationManagerDelegate
@protocol MGLLocationManagerDelegate <NSObject>
The MGLLocationManagerDelegate
protocol defines a set of methods that respond
to location updates from an MGLLocationManager
object that is serving as the
location manager of an MGLMapView
.
-
-locationManager:didUpdateLocations:
Notifies the delegate with the new location data.
Declaration
Objective-C
- (void)locationManager:(nonnull id<MGLLocationManager>)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations;
Swift
func locationManager(_ manager: MGLLocationManager, didUpdate locations: [CLLocation])
Parameters
manager
The location manager reporting the update.
locations
An array of
CLLocation
objects in chronological order, with the last object representing the most recent location. This array contains multipleCLLocation
objects whenMGLMapView
uses its default location manager.
-
-locationManager:didUpdateHeading:
Notifies the delegate with the new heading data.
Declaration
Objective-C
- (void)locationManager:(nonnull id<MGLLocationManager>)manager didUpdateHeading:(nonnull CLHeading *)newHeading;
Swift
func locationManager(_ manager: MGLLocationManager, didUpdate newHeading: CLHeading)
Parameters
manager
The location manager reporting the update.
newHeading
The new heading update.
-
-locationManagerShouldDisplayHeadingCalibration:
Asks the delegate if the calibration alert should be displayed.
Declaration
Objective-C
- (BOOL)locationManagerShouldDisplayHeadingCalibration: (nonnull id<MGLLocationManager>)manager;
Swift
func locationManagerShouldDisplayHeadingCalibration(_ manager: MGLLocationManager) -> Bool
Parameters
manager
The location manager reporting the calibration.
-
-locationManager:didFailWithError:
Notifies the delegate that the location manager was unable to retrieve location updates.
Declaration
Objective-C
- (void)locationManager:(nonnull id<MGLLocationManager>)manager didFailWithError:(nonnull NSError *)error;
Swift
func locationManager(_ manager: MGLLocationManager, didFailWithError error: Error)
Parameters
manager
The location manager reporting the error.
error
An error object containing the error code that indicates why the location manager failed.
-
-locationManagerDidChangeAuthorization:
Notifies the delegate that the location authorization status has changed.
Declaration
Objective-C
- (void)locationManagerDidChangeAuthorization: (nonnull id<MGLLocationManager>)manager;
Swift
func locationManagerDidChangeAuthorization(_ manager: MGLLocationManager)
Parameters
manager
The location manager reporting the change.