summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLMapCamera.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/MGLMapCamera.mm')
-rw-r--r--platform/darwin/src/MGLMapCamera.mm14
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°>",