diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2015-12-05 22:22:46 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2015-12-13 17:26:53 -0800 |
commit | 0fb2b855a4539803f42a4048257da606f66d9f4e (patch) | |
tree | 7be98f423e47a40aa6d011c5e52751d0896125e0 /platform/ios/MGLMapCamera.mm | |
parent | 3f2fae521cde0cc07796f65b33a227875466dc8d (diff) | |
download | qtlocation-mapboxgl-0fb2b855a4539803f42a4048257da606f66d9f4e.tar.gz |
[osx] Map camera
Shared MGLMapCamera between iOS and OS X. Unfortunately -camera and -setCamera: implementations need to be copy-pasted for now.
Diffstat (limited to 'platform/ios/MGLMapCamera.mm')
-rw-r--r-- | platform/ios/MGLMapCamera.mm | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/platform/ios/MGLMapCamera.mm b/platform/ios/MGLMapCamera.mm deleted file mode 100644 index d04e46fa90..0000000000 --- a/platform/ios/MGLMapCamera.mm +++ /dev/null @@ -1,101 +0,0 @@ -#import "MGLMapCamera.h" - -#include <mbgl/util/projection.hpp> - -@implementation MGLMapCamera - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -+ (instancetype)camera -{ - return [[self alloc] init]; -} - -+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate - fromEyeCoordinate:(CLLocationCoordinate2D)eyeCoordinate - eyeAltitude:(CLLocationDistance)eyeAltitude -{ - mbgl::LatLng centerLatLng = mbgl::LatLng(centerCoordinate.latitude, centerCoordinate.longitude); - mbgl::LatLng eyeLatLng = mbgl::LatLng(eyeCoordinate.latitude, eyeCoordinate.longitude); - - mbgl::ProjectedMeters centerMeters = mbgl::Projection::projectedMetersForLatLng(centerLatLng); - mbgl::ProjectedMeters eyeMeters = mbgl::Projection::projectedMetersForLatLng(eyeLatLng); - CLLocationDirection heading = std::atan((centerMeters.northing - eyeMeters.northing) / - (centerMeters.easting - eyeMeters.easting)); - - double groundDistance = std::hypot(centerMeters.northing - eyeMeters.northing, - centerMeters.easting - eyeMeters.easting); - CGFloat pitch = std::atan(eyeAltitude / groundDistance); - - return [[self alloc] initWithCenterCoordinate:centerCoordinate - altitude:eyeAltitude - pitch:pitch - heading:heading]; -} - -+ (instancetype)cameraLookingAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate - fromDistance:(CLLocationDistance)distance - pitch:(CGFloat)pitch - heading:(CLLocationDirection)heading -{ - return [[self alloc] initWithCenterCoordinate:centerCoordinate - altitude:distance - pitch:(CGFloat)pitch - heading:heading]; -} - -- (instancetype)initWithCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate - altitude:(CLLocationDistance)altitude - pitch:(CGFloat)pitch - heading:(CLLocationDirection)heading -{ - if (self = [super init]) - { - _centerCoordinate = centerCoordinate; - _altitude = altitude; - _pitch = pitch; - _heading = heading; - } - return self; -} - -- (nullable instancetype)initWithCoder:(NSCoder *)coder -{ - if (self = [super init]) - { - _centerCoordinate = CLLocationCoordinate2DMake([coder decodeDoubleForKey:@"centerLatitude"], - [coder decodeDoubleForKey:@"centerLongitude"]); - _altitude = [coder decodeDoubleForKey:@"altitude"]; - _pitch = [coder decodeDoubleForKey:@"pitch"]; - _heading = [coder decodeDoubleForKey:@"heading"]; - } - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder -{ - [coder encodeDouble:_centerCoordinate.latitude forKey:@"centerLatitude"]; - [coder encodeDouble:_centerCoordinate.longitude forKey:@"centerLongitude"]; - [coder encodeDouble:_altitude forKey:@"altitude"]; - [coder encodeDouble:_pitch forKey:@"pitch"]; - [coder encodeDouble:_heading forKey:@"heading"]; -} - -- (id)copyWithZone:(nullable NSZone *)zone -{ - return [[[self class] allocWithZone:zone] initWithCenterCoordinate:_centerCoordinate - altitude:_altitude - pitch:_pitch - heading:_heading]; -} - -- (NSString *)description -{ - return [NSString stringWithFormat:@"<MKMapCamera %p centerCoordinate:%f, %f altitude:%.0fm heading:%.0f° pitch:%.0f°>", - self, _centerCoordinate.latitude, _centerCoordinate.longitude, _altitude, _heading, _pitch]; -} - -@end |