diff options
Diffstat (limited to 'platform/darwin/src/MGLLocationManager.h')
-rw-r--r-- | platform/darwin/src/MGLLocationManager.h | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLLocationManager.h b/platform/darwin/src/MGLLocationManager.h new file mode 100644 index 0000000000..121dcc2293 --- /dev/null +++ b/platform/darwin/src/MGLLocationManager.h @@ -0,0 +1,181 @@ +#import <Foundation/Foundation.h> +#import <CoreLocation/CoreLocation.h> + +NS_ASSUME_NONNULL_BEGIN + +@protocol MGLLocationManagerDelegate; + +/** + 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`. + + */ +@protocol MGLLocationManager <NSObject> + +@optional + +#pragma mark Configuring Location Update Precision + +/** + 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` + */ +@property(nonatomic, assign) CLLocationDistance distanceFilter; + +/** + 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` + */ +@property (nonatomic, assign) CLLocationAccuracy desiredAccuracy; + +/** + 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` + */ +@property (nonatomic, assign) CLActivityType activityType; + +@required + +/** + 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. + */ +@property (nonatomic, weak) id<MGLLocationManagerDelegate> delegate; + +#pragma mark Requesting Authorization for Location Services + +/** + Returns the current localization authorization status. + + @see `+[CLLocationManger authorizationStatus]` + */ +@property (nonatomic, readonly) CLAuthorizationStatus authorizationStatus; + +/** + Requests permission to use the location services whenever the app is running. + */ +- (void)requestAlwaysAuthorization; + +/** + Requests permission to use the location services while the app is in + the foreground. + */ +- (void)requestWhenInUseAuthorization; + +#pragma mark Initiating Location Updates + +/** + Starts the generation of location updates that reports the user's current location. + */ +- (void)startUpdatingLocation; + +/** + Stops the generation of location updates. + */ +- (void)stopUpdatingLocation; + +#pragma mark Initiating Heading Updates + +/** + Specifies a physical device orientation. + */ +@property (nonatomic) CLDeviceOrientation headingOrientation; + +/** + Starts the generation of heading updates that reports the user's current hading. + */ +- (void)startUpdatingHeading; + +/** + Stops the generation of heading updates. + */ +- (void)stopUpdatingHeading; + +/** + Dissmisses immediately the heading calibration view from screen. + */ +- (void)dismissHeadingCalibrationDisplay; + +@end + +/** + 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`. + */ +@protocol MGLLocationManagerDelegate <NSObject> + +#pragma mark Responding to Location Updates + +/** + Notifies the delegate with the new location data. + + @param manager The location manager reporting the update. + @param locations An array of `CLLocation` objects in chronological order, + with the last object representing the most recent location. This array + contains multiple `CLLocation` objects when `MGLMapView` uses its + default location manager. + */ +- (void)locationManager:(id<MGLLocationManager>)manager + didUpdateLocations:(NSArray<CLLocation *> *)locations; + +#pragma mark Responding to Heading Updates + +/** + Notifies the delegate with the new heading data. + + @param manager The location manager reporting the update. + @param newHeading The new heading update. + */ +- (void)locationManager:(id<MGLLocationManager>)manager + didUpdateHeading:(CLHeading *)newHeading; + +/** + Asks the delegate if the calibration alert should be displayed. + + @param manager The location manager reporting the calibration. + */ +- (BOOL)locationManagerShouldDisplayHeadingCalibration:(id<MGLLocationManager>)manager; + +#pragma mark Responding to Location Updates Errors + +/** + Notifies the delegate that the location manager was unable to retrieve + location updates. + + @param manager The location manager reporting the error. + @param error An error object containing the error code that indicates + why the location manager failed. + */ +- (void)locationManager:(id<MGLLocationManager>)manager + didFailWithError:(nonnull NSError *)error; + +@optional + +@end + +NS_ASSUME_NONNULL_END |