diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2018-09-27 10:50:43 -0700 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2018-10-01 18:12:03 -0700 |
commit | a9dc1b529487d2d7d4d8ca8a8ef4498e1de6aafb (patch) | |
tree | dba3c3677d8fd4cd601fa2188ad80fcd31fbc1fc /platform/darwin/test/MGLMapCameraTests.m | |
parent | 85a474e2757269313799dd11208da8a1540ab81e (diff) | |
download | qtlocation-mapboxgl-a9dc1b529487d2d7d4d8ca8a8ef4498e1de6aafb.tar.gz |
[ios, macos] Fixed camera initialization with eye coordinate
Rewrote the code that calculates the heading and pitch of the camera when given an eye coordinate.
Diffstat (limited to 'platform/darwin/test/MGLMapCameraTests.m')
-rw-r--r-- | platform/darwin/test/MGLMapCameraTests.m | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/platform/darwin/test/MGLMapCameraTests.m b/platform/darwin/test/MGLMapCameraTests.m index 9c3a9a526c..9fbf6b9e45 100644 --- a/platform/darwin/test/MGLMapCameraTests.m +++ b/platform/darwin/test/MGLMapCameraTests.m @@ -9,6 +9,45 @@ @implementation MGLMapCameraTests +- (void)testEyeCoordinateInitialization { + CLLocationCoordinate2D fountainSquare = CLLocationCoordinate2DMake(39.10152215, -84.5124439696089); + CLLocationCoordinate2D unionTerminal = CLLocationCoordinate2DMake(39.10980955, -84.5352778794236); + + MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare + fromEyeCoordinate:fountainSquare + eyeAltitude:1000]; + MKMapCamera *mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare + fromEyeCoordinate:fountainSquare + eyeAltitude:1000]; + XCTAssertEqual(camera.centerCoordinate.latitude, fountainSquare.latitude); + XCTAssertEqual(camera.centerCoordinate.longitude, fountainSquare.longitude); + XCTAssertEqual(camera.centerCoordinate.latitude, mkCamera.centerCoordinate.latitude); + XCTAssertEqual(camera.centerCoordinate.longitude, mkCamera.centerCoordinate.longitude); + XCTAssertEqual(camera.altitude, 1000, @"Eye altitude should be equivalent to altitude in untilted camera."); + XCTAssertEqual(camera.altitude, mkCamera.altitude, @"Eye altitude in untilted camera should match MapKit."); + XCTAssertEqual(camera.pitch, 0, @"Camera directly over center coordinate should be untilted."); + XCTAssertEqual(camera.pitch, mkCamera.pitch, @"Camera directly over center coordinate should have same pitch as MapKit."); + XCTAssertEqual(camera.heading, 0, @"Camera directly over center coordinate should be unrotated."); + XCTAssertEqual(camera.heading, mkCamera.heading, @"Camera directly over center coordinate should have same heading as MapKit."); + + camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare + fromEyeCoordinate:unionTerminal + eyeAltitude:1000]; + mkCamera = [MKMapCamera cameraLookingAtCenterCoordinate:fountainSquare + fromEyeCoordinate:unionTerminal + eyeAltitude:1000]; + XCTAssertEqual(camera.centerCoordinate.latitude, fountainSquare.latitude); + XCTAssertEqual(camera.centerCoordinate.longitude, fountainSquare.longitude); + XCTAssertEqual(camera.centerCoordinate.latitude, mkCamera.centerCoordinate.latitude); + XCTAssertEqual(camera.centerCoordinate.longitude, mkCamera.centerCoordinate.longitude); + XCTAssertEqual(camera.altitude, 1000); + XCTAssertEqual(camera.altitude, mkCamera.altitude, @"Eye altitude in tilted camera should match MapKit."); + XCTAssertEqualWithAccuracy(camera.pitch, 65.3469146074, 0.01); + XCTAssertEqual(camera.pitch, mkCamera.pitch); + XCTAssertEqualWithAccuracy(camera.heading, 115.066396383, 0.01); + XCTAssertEqualWithAccuracy(camera.heading, mkCamera.heading, 0.01); +} + - (void)testViewingDistanceInitialization { CLLocationCoordinate2D fountainSquare = CLLocationCoordinate2DMake(39.10152215, -84.5124439696089); MGLMapCamera *camera = [MGLMapCamera cameraLookingAtCenterCoordinate:fountainSquare |