diff options
Diffstat (limited to 'platform/darwin/src/MGLLocationManager.m')
-rw-r--r-- | platform/darwin/src/MGLLocationManager.m | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLLocationManager.m b/platform/darwin/src/MGLLocationManager.m new file mode 100644 index 0000000000..29e3ccaa30 --- /dev/null +++ b/platform/darwin/src/MGLLocationManager.m @@ -0,0 +1,116 @@ +#import "MGLLocationManager_Private.h" + +@interface MGLCLLocationManager()<CLLocationManagerDelegate> + +@property (nonatomic) CLLocationManager *locationManager; + +@end + +@implementation MGLCLLocationManager + +- (instancetype)init +{ + if (self = [super init]) { + _locationManager = [[CLLocationManager alloc] init]; + _locationManager.delegate = self; + } + return self; +} + +@synthesize delegate; + +- (void)setHeadingOrientation:(CLDeviceOrientation)headingOrientation +{ + self.locationManager.headingOrientation = headingOrientation; +} + +- (CLDeviceOrientation)headingOrientation +{ + return self.locationManager.headingOrientation; +} + +- (void)setDesiredAccuracy:(CLLocationAccuracy)desiredAccuracy { + self.locationManager.desiredAccuracy = desiredAccuracy; +} + +- (CLLocationAccuracy)desiredAccuracy { + return self.locationManager.desiredAccuracy; +} + +- (CLAuthorizationStatus)authorizationStatus { + return [CLLocationManager authorizationStatus]; +} + +- (void)setActivityType:(CLActivityType)activityType { + self.locationManager.activityType = activityType; +} + +- (CLActivityType)activityType { + return self.locationManager.activityType; +} + +- (void)dismissHeadingCalibrationDisplay { + [self.locationManager dismissHeadingCalibrationDisplay]; +} + +- (void)requestAlwaysAuthorization { + [self.locationManager requestAlwaysAuthorization]; +} + +- (void)requestWhenInUseAuthorization { + [self.locationManager requestWhenInUseAuthorization]; +} + +- (void)startUpdatingHeading { + [self.locationManager startUpdatingHeading]; +} + +- (void)startUpdatingLocation { + [self.locationManager startUpdatingLocation]; +} + +- (void)stopUpdatingHeading { + [self.locationManager stopUpdatingHeading]; +} + +- (void)stopUpdatingLocation { + [self.locationManager stopUpdatingLocation]; +} + +- (void)dealloc +{ + [self.locationManager stopUpdatingLocation]; + [self.locationManager stopUpdatingHeading]; + self.locationManager.delegate = nil; + self.delegate = nil; +} + +#pragma mark - CLLocationManagerDelegate + +- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations { + if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateLocations:)]) { + [self.delegate locationManager:self didUpdateLocations:locations]; + } +} + +- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { + if ([self.delegate respondsToSelector:@selector(locationManager:didUpdateHeading:)]) { + [self.delegate locationManager:self didUpdateHeading:newHeading]; + } +} + +- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager { + if ([self.delegate respondsToSelector:@selector(locationManagerShouldDisplayHeadingCalibration:)]) { + return [self.delegate locationManagerShouldDisplayHeadingCalibration:self]; + } + + return NO; +} + +- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { + if ([self.delegate respondsToSelector:@selector(locationManager:didFailWithError:)]) { + [self.delegate locationManager:self didFailWithError:error]; + } +} + +@end |