summaryrefslogtreecommitdiff
path: root/platform/darwin/test/MGLMapCameraTests.m
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2018-09-25 13:35:41 -0700
committerMinh Nguyễn <mxn@1ec5.org>2018-10-01 18:12:03 -0700
commita030f1474fa9eb556552ec48eba9cb5e771d1580 (patch)
tree53e10e998c81094da9d69997d91b1f5b3cb580e7 /platform/darwin/test/MGLMapCameraTests.m
parent79dd9ca250a8360f3a32e8596e2cce1e397b8d78 (diff)
downloadqtlocation-mapboxgl-a030f1474fa9eb556552ec48eba9cb5e771d1580.tar.gz
[ios, macos] Distinguish between viewing distance and altitude
+[MGLMapCamera cameraLookingAtCenterCoordinate:fromDistance:pitch:heading:] incorrectly treated the distance as an altitude. Due to backwards compatibility concerns, this method can’t be fixed in place. Instead, separate +[MGLMapCamera cameraLookingAtCenterCoordinate:correctlyFromDistance:pitch:heading:] and +[MGLMapCamera cameraLookingAtCenterCoordinate:altitude:pitch:heading:] methods have been added.
Diffstat (limited to 'platform/darwin/test/MGLMapCameraTests.m')
-rw-r--r--platform/darwin/test/MGLMapCameraTests.m49
1 files changed, 49 insertions, 0 deletions
diff --git a/platform/darwin/test/MGLMapCameraTests.m b/platform/darwin/test/MGLMapCameraTests.m
new file mode 100644
index 0000000000..d40a336922
--- /dev/null
+++ b/platform/darwin/test/MGLMapCameraTests.m
@@ -0,0 +1,49 @@
+#import <XCTest/XCTest.h>
+#import <CoreLocation/CoreLocation.h>
+#import <Mapbox/Mapbox.h>
+#import <MapKit/MapKit.h>
+
+@interface MGLMapCameraTests : XCTestCase
+
+@end
+
+@implementation MGLMapCameraTests
+
+- (void)testViewingDistance {
+ CLLocationCoordinate2D fountainSquare = CLLocationCoordinate2DMake(39.10152215, -84.5124439696089);
+ MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
+ acrossDistance:10000
+ pitch:0
+ heading:0];
+ MKMapCamera *mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare
+ fromDistance:10000
+ pitch:0
+ heading:0];
+ XCTAssertEqualWithAccuracy(camera.altitude, 10000, 0.01, @"Untilted camera should use distance verbatim.");
+ XCTAssertEqualWithAccuracy(camera.altitude, mkCamera.altitude, 0.01, @"Untilted camera altitude should match MapKit.");
+
+ camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
+ altitude:10000
+ pitch:0
+ heading:0];
+ XCTAssertEqual(camera.altitude, 10000, @"Untilted camera should use altitude verbatim.");
+
+ camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
+ acrossDistance:10000
+ pitch:60
+ heading:0];
+ mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare
+ fromDistance:10000
+ pitch:60
+ heading:0];
+ XCTAssertEqualWithAccuracy(camera.altitude, 5000, 0.01, @"Tilted camera altitude should account for pitch.");
+ XCTAssertEqualWithAccuracy(camera.altitude, mkCamera.altitude, 0.01, @"Tilted camera altitude should match MapKit.");
+
+ camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare
+ altitude:10000
+ pitch:60
+ heading:0];
+ XCTAssertEqual(camera.altitude, 10000, @"Tilted camera should use altitude verbatim.");
+}
+
+@end