diff options
Diffstat (limited to 'platform/darwin/src/MGLMapCamera.mm')
-rw-r--r-- | platform/darwin/src/MGLMapCamera.mm | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLMapCamera.mm b/platform/darwin/src/MGLMapCamera.mm index 5ab0bffaa6..968b64ad17 100644 --- a/platform/darwin/src/MGLMapCamera.mm +++ b/platform/darwin/src/MGLMapCamera.mm @@ -131,6 +131,20 @@ BOOL MGLEqualFloatWithAccuracy(CGFloat left, CGFloat right, CGFloat accuracy) heading:_heading]; } ++ (NSSet<NSString *> *)keyPathsForValuesAffectingViewingDistance { + return [NSSet setWithObjects:@"altitude", @"pitch", nil]; +} + +- (CLLocationDistance)viewingDistance { + CLLocationDirection eyeAngle = 90 - self.pitch; + return self.altitude / sin(MGLRadiansFromDegrees(eyeAngle)); +} + +- (void)setViewingDistance:(CLLocationDistance)distance { + CLLocationDirection eyeAngle = 90 - self.pitch; + self.altitude = distance * sin(MGLRadiansFromDegrees(eyeAngle)); +} + - (NSString *)description { return [NSString stringWithFormat:@"<%@: %p; centerCoordinate = %f, %f; altitude = %.0fm; heading = %.0f°; pitch = %.0f°>", |