Files
deighton-ar/mobile/ios/GoogleMaps.framework/Headers/GMSCameraPosition.h
2018-03-27 13:37:37 -07:00

127 lines
4.9 KiB
Objective-C
Executable File

//
// GMSCameraPosition.h
// Google Maps SDK for iOS
//
// Copyright 2013 Google Inc.
//
// Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
// Service: https://developers.google.com/maps/terms
//
#import <CoreGraphics/CoreGraphics.h>
#import <CoreLocation/CoreLocation.h>
NS_ASSUME_NONNULL_BEGIN;
/**
* An immutable class that aggregates all camera position parameters.
*/
@interface GMSCameraPosition : NSObject<NSCopying, NSMutableCopying>
/**
* Location on the Earth towards which the camera points.
*/
@property(nonatomic, readonly) CLLocationCoordinate2D target;
/**
* Zoom level. Zoom uses an exponentional scale, where zoom 0 represents the entire world as a
* 256 x 256 square. Each successive zoom level increases magnification by a factor of 2. So at
* zoom level 1, the world is 512x512, and at zoom level 2, the entire world is 1024x1024.
*/
@property(nonatomic, readonly) float zoom;
/**
* Bearing of the camera, in degrees clockwise from true north.
*/
@property(nonatomic, readonly) CLLocationDirection bearing;
/**
* The angle, in degrees, of the camera from the nadir (directly facing the Earth). 0 is
* straight down, 90 is parallel to the ground. Note that the maximum angle allowed is dependent
* on the zoom. You can think of it as a series of line segments as a function of zoom, rather
* than a step function. For zoom 16 and above, the maximum angle is 65 degrees. For zoom 10 and
* below, the maximum angle is 30 degrees.
*/
@property(nonatomic, readonly) double viewingAngle;
/**
* Designated initializer. Configures this GMSCameraPosition with all available camera properties.
* Building a GMSCameraPosition via this initializer (or by the following convenience constructors)
* will implicitly clamp camera values.
*
* @param target Location on the earth towards which the camera points.
* @param zoom The zoom level near the center of the screen.
* @param bearing Bearing of the camera in degrees clockwise from true north.
* @param viewingAngle The angle, in degrees, of the camera angle from the nadir (directly facing
* the Earth)
*/
- (id)initWithTarget:(CLLocationCoordinate2D)target
zoom:(float)zoom
bearing:(CLLocationDirection)bearing
viewingAngle:(double)viewingAngle;
/**
* Convenience constructor for GMSCameraPosition for a particular target and zoom level. This will
* set the bearing and viewingAngle properties of this camera to zero defaults (i.e., directly
* facing the Earth's surface, with the top of the screen pointing north).
*/
+ (instancetype)cameraWithTarget:(CLLocationCoordinate2D)target zoom:(float)zoom;
/**
* Convenience constructor for GMSCameraPosition, as per cameraWithTarget:zoom:.
*/
+ (instancetype)cameraWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude
zoom:(float)zoom;
/**
* Convenience constructor for GMSCameraPosition, with all camera properties as per
* initWithTarget:zoom:bearing:viewingAngle:.
*/
+ (instancetype)cameraWithTarget:(CLLocationCoordinate2D)target
zoom:(float)zoom
bearing:(CLLocationDirection)bearing
viewingAngle:(double)viewingAngle;
/**
* Convenience constructor for GMSCameraPosition, with latitude/longitude and all other camera
* properties as per initWithTarget:zoom:bearing:viewingAngle:.
*/
+ (instancetype)cameraWithLatitude:(CLLocationDegrees)latitude
longitude:(CLLocationDegrees)longitude
zoom:(float)zoom
bearing:(CLLocationDirection)bearing
viewingAngle:(double)viewingAngle;
/**
* Get the zoom level at which |meters| distance, at given |coord| on Earth, correspond to the
* specified number of screen |points|.
*
* For extremely large or small distances the returned zoom level may be smaller or larger than the
* minimum or maximum zoom level allowed on the camera.
*
* This helper method is useful for building camera positions that contain specific physical areas
* on Earth.
*/
+ (float)zoomAtCoordinate:(CLLocationCoordinate2D)coordinate
forMeters:(CLLocationDistance)meters
perPoints:(CGFloat)points;
@end
/** Mutable version of GMSCameraPosition. */
@interface GMSMutableCameraPosition : GMSCameraPosition
@property(nonatomic, assign) CLLocationCoordinate2D target;
@property(nonatomic, assign) float zoom;
@property(nonatomic, assign) CLLocationDirection bearing;
@property(nonatomic, assign) double viewingAngle;
@end
/** The maximum zoom (closest to the Earth's surface) permitted by the map camera. */
FOUNDATION_EXTERN const float kGMSMaxZoomLevel;
/** The minimum zoom (farthest from the Earth's surface) permitted by the map camera. */
FOUNDATION_EXTERN const float kGMSMinZoomLevel;
NS_ASSUME_NONNULL_END;