# GoogleMaps Framework Reference

# GMSCameraPosition

    @interface GMSCameraPosition : NSObject <NSCopying, NSMutableCopying>

An immutable class that aggregates all camera position parameters.
- `


  ### [target](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(py)target)


  ` Location on the Earth towards which the camera points.

  #### Declaration

  Swift

      var target: CLLocationCoordinate2D { get }

  Objective-C

      @property (nonatomic, readonly) CLLocationCoordinate2D target;

- `


  ### [zoom](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(py)zoom)


  ` 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.

  #### Declaration

  Swift

      var zoom: Float { get }

  Objective-C

      @property (nonatomic, readonly) float zoom;

- `


  ### [bearing](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(py)bearing)


  ` Bearing of the camera, in degrees clockwise from true north.

  #### Declaration

  Swift

      var bearing: CLLocationDirection { get }

  Objective-C

      @property (nonatomic, readonly) CLLocationDirection bearing;

- `


  ### [viewingAngle](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(py)viewingAngle)


  ` 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.

  #### Declaration

  Swift

      var viewingAngle: Double { get }

  Objective-C

      @property (nonatomic, readonly) double viewingAngle;

- `


  ### [-initWithTarget:zoom:bearing:viewingAngle:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(im)initWithTarget:zoom:bearing: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.

  #### Declaration

  Swift

      init(target: CLLocationCoordinate2D, zoom: Float, bearing: CLLocationDirection, viewingAngle: Double)

  Objective-C

      - (nonnull instancetype)initWithTarget:(CLLocationCoordinate2D)target
                                        zoom:(float)zoom
                                     bearing:(CLLocationDirection)bearing
                                viewingAngle:(double)viewingAngle;

  #### Parameters

  |---|---|
  | ` target ` | Location on the earth towards which the camera points. |
  | ` zoom ` | The zoom level near the center of the screen. |
  | ` bearing ` | Bearing of the camera in degrees clockwise from true north. |
  | ` viewingAngle ` | The angle, in degrees, of the camera angle from the nadir (directly facing the Earth) |

- `


  ### [-initWithTarget:zoom:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(im)initWithTarget:zoom:)


  ` Convenience initializer 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).

  #### Declaration

  Swift

      init(target: CLLocationCoordinate2D, zoom: Float)

  Objective-C

      - (nonnull instancetype)initWithTarget:(CLLocationCoordinate2D)target
                                        zoom:(float)zoom;

  #### Parameters

  |---|---|
  | ` target ` | Location on the earth towards which the camera points. |
  | ` zoom ` | The zoom level near the center of the screen. |

- `


  ### [-initWithLatitude:longitude:zoom:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(im)initWithLatitude:longitude:zoom:)


  ` Convenience initializer for `GMSCameraPosition` for a particular latitidue, longitude 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).

  #### Declaration

  Swift

      init(latitude: CLLocationDegrees, longitude: CLLocationDegrees, zoom: Float)

  Objective-C

      - (nonnull instancetype)initWithLatitude:(CLLocationDegrees)latitude
                                     longitude:(CLLocationDegrees)longitude
                                          zoom:(float)zoom;

  #### Parameters

  |---|---|
  | ` latitude ` | The latitude component of the location towards which the camera points. |
  | ` longitude ` | The latitude component of the location towards which the camera points. |
  | ` zoom ` | The zoom level near the center of the screen. |

- `


  ### [-initWithLatitude:longitude:zoom:bearing:viewingAngle:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(im)initWithLatitude:longitude:zoom:bearing:viewingAngle:)


  ` Convenience initializer for `GMSCameraPosition`, with latitude/longitude and all other camera
  properties as per -initWithTarget:zoom:bearing:viewingAngle:.

  #### Declaration

  Swift

      init(latitude: CLLocationDegrees, longitude: CLLocationDegrees, zoom: Float, bearing: CLLocationDirection, viewingAngle: Double)

  Objective-C

      - (nonnull instancetype)initWithLatitude:(CLLocationDegrees)latitude
                                     longitude:(CLLocationDegrees)longitude
                                          zoom:(float)zoom
                                       bearing:(CLLocationDirection)bearing
                                  viewingAngle:(double)viewingAngle;

  #### Parameters

  |---|---|
  | ` latitude ` | The latitude component of the location towards which the camera points. |
  | ` longitude ` | The latitude component of the location towards which the camera points. |
  | ` zoom ` | The zoom level near the center of the screen. |
  | ` bearing ` | Bearing of the camera in degrees clockwise from true north. |
  | ` viewingAngle ` | The angle, in degrees, of the camera angle from the nadir (directly facing the Earth) |

- `


  ### [+cameraWithTarget:zoom:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(cm)cameraWithTarget:zoom:)


  ` 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).

  #### Declaration

  Swift

      class func camera(withTarget target: CLLocationCoordinate2D, zoom: Float) -> Self

  Objective-C

      + (nonnull instancetype)cameraWithTarget:(CLLocationCoordinate2D)target
                                          zoom:(float)zoom;

- `


  ### [+cameraWithLatitude:longitude:zoom:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(cm)cameraWithLatitude:longitude:zoom:)


  ` Convenience constructor for `GMSCameraPosition`, as per `https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html#/c:objc(cs)GMSCameraPosition(cm)cameraWithTarget:zoom:`.

  #### Declaration

  Swift

      class func camera(withLatitude latitude: CLLocationDegrees, longitude: CLLocationDegrees, zoom: Float) -> Self

  Objective-C

      + (nonnull instancetype)cameraWithLatitude:(CLLocationDegrees)latitude
                                       longitude:(CLLocationDegrees)longitude
                                            zoom:(float)zoom;

- `


  ### [+cameraWithTarget:zoom:bearing:viewingAngle:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(cm)cameraWithTarget:zoom:bearing:viewingAngle:)


  ` Convenience constructor for `GMSCameraPosition`, with all camera properties as per
  `+initWithTarget:zoom:bearing:viewingAngle:`.

  #### Declaration

  Swift

      class func camera(withTarget target: CLLocationCoordinate2D, zoom: Float, bearing: CLLocationDirection, viewingAngle: Double) -> Self

  Objective-C

      + (nonnull instancetype)cameraWithTarget:(CLLocationCoordinate2D)target
                                          zoom:(float)zoom
                                       bearing:(CLLocationDirection)bearing
                                  viewingAngle:(double)viewingAngle;

- `


  ### [+cameraWithLatitude:longitude:zoom:bearing:viewingAngle:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(cm)cameraWithLatitude:longitude:zoom:bearing:viewingAngle:)


  ` Convenience constructor for `GMSCameraPosition`, with latitude/longitude and all other camera
  properties as per `+initWithTarget:zoom:bearing:viewingAngle:`.

  #### Declaration

  Swift

      class func camera(withLatitude latitude: CLLocationDegrees, longitude: CLLocationDegrees, zoom: Float, bearing: CLLocationDirection, viewingAngle: Double) -> Self

  Objective-C

      + (nonnull instancetype)cameraWithLatitude:(CLLocationDegrees)latitude
                                       longitude:(CLLocationDegrees)longitude
                                            zoom:(float)zoom
                                         bearing:(CLLocationDirection)bearing
                                    viewingAngle:(double)viewingAngle;

- `


  ### [+zoomAtCoordinate:forMeters:perPoints:](https://developers.google.com/maps/documentation/ios-sdk/reference/objc/Classes/GMSCameraPosition#/c:objc(cs)GMSCameraPosition(cm)zoomAtCoordinate:forMeters:perPoints:)


  ` 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.

  #### Declaration

  Swift

      class func zoom(at coordinate: CLLocationCoordinate2D, forMeters meters: CLLocationDistance, perPoints points: CGFloat) -> Float

  Objective-C

      + (float)zoomAtCoordinate:(CLLocationCoordinate2D)coordinate
                      forMeters:(CLLocationDistance)meters
                      perPoints:(CGFloat)points;