# GMSMapView

    @interface GMSMapView : UIView

This is the main class of the Google Maps SDK for iOS and is the entry point for all methods
related to the map.

The map should be instantiated with one of the constructors -init or `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(im)initWithOptions:`.

`GMSMapView` can only be read and modified from the main thread, similar to all `UIKit` objects.
Calling these methods from another thread will result in an exception or undefined behavior.
- `


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


  ` `GMSMapView` delegate.

  #### Declaration

  Swift

      @IBOutlet weak var delegate: (any https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSMapViewDelegate.html)? { get set }

  Objective-C

      @property (nonatomic, weak, nullable) id<https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSMapViewDelegate.html> delegate;

- `


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


  ` Controls the camera, which defines how the map is oriented. Modification of this property is
  instantaneous.

  #### Declaration

  Swift

      @NSCopying var camera: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html { get set }

  Objective-C

      @property (nonatomic, copy) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *_Nonnull camera;

- `


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


  ` Returns a `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSProjection.html` object that you can use to convert between screen coordinates and
  latitude/longitude coordinates.

  This is a snapshot of the current projection, and will not automatically update when the camera
  moves. It represents either the projection of the last drawn `GMSMapView` frame, or; where the
  camera has been explicitly set or the map just created, the upcoming frame. It will never be nil.

  #### Declaration

  Swift

      var projection: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSProjection.html { get }

  Objective-C

      @property (nonatomic, readonly) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSProjection.html *_Nonnull projection;

- `


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


  ` Controls whether the My Location dot and accuracy circle is enabled. Defaults to NO.

  #### Declaration

  Swift

      var isMyLocationEnabled: Bool { get set }

  Objective-C

      @property (nonatomic, assign, unsafe_unretained, readwrite,
                getter=isMyLocationEnabled) BOOL myLocationEnabled;

- `


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


  ` If My Location is enabled, reveals where the device location dot is being drawn. If it is
  disabled, or it is enabled but no location data is available, this will be nil. This property is
  observable using KVO.

  #### Declaration

  Swift

      var myLocation: CLLocation? { get }

  Objective-C

      @property (nonatomic, readonly, nullable) CLLocation *myLocation;

- `


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


  ` The marker that is selected. Setting this property selects a particular marker, showing an info
  window on it. If this property is non-nil, setting it to nil deselects the marker, hiding the
  info window. This property is observable using KVO.

  #### Declaration

  Swift

      var selectedMarker: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMarker.html? { get set }

  Objective-C

      @property (nonatomic, nullable) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMarker.html *selectedMarker;

- `


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


  ` Controls whether the map is drawing traffic data, if available. This is subject to the
  availability of traffic data. Defaults to NO.

  #### Declaration

  Swift

      var isTrafficEnabled: Bool { get set }

  Objective-C

      @property (nonatomic, assign, unsafe_unretained, readwrite,
                getter=isTrafficEnabled) BOOL trafficEnabled;

- `


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


  ` Controls whether the map is drawing transit data, if available. This is subject to the
  availability of transit data. Defaults to NO.

  #### Declaration

  Swift

      var isTransitEnabled: Bool { get set }

  Objective-C

      @property (nonatomic, assign, unsafe_unretained, readwrite,
                getter=isTransitEnabled) BOOL transitEnabled;

- `


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


  ` Controls the type of map tiles that should be displayed. Defaults to kGMSTypeNormal.

  #### Declaration

  Swift

      var mapType: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSMapViewType.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSMapViewType.html mapType;

- `


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


  ` Controls the style of the map.

  A non-nil mapStyle will only apply if mapType is Normal.

  #### Declaration

  Swift

      var mapStyle: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapStyle.html? { get set }

  Objective-C

      @property (nonatomic, nullable) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapStyle.html *mapStyle;

- `


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


  `

  #### Declaration

  Swift

      var overrideUserInterfaceStyle: UIUserInterfaceStyle { get set }

  Objective-C

      @property(nonatomic) UIUserInterfaceStyle overrideUserInterfaceStyle

- `


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


  ` Minimum zoom (the farthest the camera may be zoomed out). Defaults to kGMSMinZoomLevel. Modified
  with -setMinZoom:maxZoom:.

  #### Declaration

  Swift

      var minZoom: Float { get }

  Objective-C

      @property (nonatomic, readonly) float minZoom;

- `


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


  ` Maximum zoom (the closest the camera may be to the Earth). Defaults to kGMSMaxZoomLevel. Modified
  with -setMinZoom:maxZoom:.

  #### Declaration

  Swift

      var maxZoom: Float { get }

  Objective-C

      @property (nonatomic, readonly) float maxZoom;

- `


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


  ` If set, 3D buildings will be shown where available. Defaults to YES.

  This may be useful when adding a custom tile layer to the map, in order to make it clearer at
  high zoom levels. Changing this value will cause all tiles to be briefly invalidated.

  #### Declaration

  Swift

      var isBuildingsEnabled: Bool { get set }

  Objective-C

      @property (nonatomic, assign, unsafe_unretained, readwrite,
                getter=isBuildingsEnabled) BOOL buildingsEnabled;

- `


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


  ` Sets whether indoor maps are shown, where available. Defaults to YES.

  If this is set to NO, caches for indoor data may be purged and any floor currently selected by
  the end-user may be reset.

  #### Declaration

  Swift

      var isIndoorEnabled: Bool { get set }

  Objective-C

      @property (nonatomic, assign, unsafe_unretained, readwrite,
                getter=isIndoorEnabled) BOOL indoorEnabled;

- `


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


  ` Gets the `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSIndoorDisplay.html` instance which allows to observe or control aspects of indoor data
  display.

  #### Declaration

  Swift

      var indoorDisplay: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSIndoorDisplay.html { get }

  Objective-C

      @property (nonatomic, readonly) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSIndoorDisplay.html *_Nonnull indoorDisplay;

- `


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


  ` Gets the `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSUISettings.html` object, which controls user interface settings for the map.

  #### Declaration

  Swift

      var settings: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSUISettings.html { get }

  Objective-C

      @property (nonatomic, readonly) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSUISettings.html *_Nonnull settings;

- `


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


  ` Controls the 'visible' region of the view. By applying padding an area around the edge of the
  view can be created which will contain map data but will not contain UI controls.

  If the padding is not balanced, the visual center of the view will move as appropriate. Padding
  will also affect the `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)projection` property so the visible region will not include the padding
  area. `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraUpdate.html` fitToBounds will ensure that both this padding and any padding requested
  will be taken into account.

  This property may be animated within a UIView-based animation block.

  #### Declaration

  Swift

      var padding: UIEdgeInsets { get set }

  Objective-C

      @property (nonatomic) UIEdgeInsets padding;

- `


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


  ` Controls how safe area insets are added to the padding values. Like padding, safe area insets
  position map controls such as the compass, my location button and floor picker within the device
  safe area.

  Defaults to `kGMSMapViewPaddingAdjustmentBehaviorAlways`.

  #### Declaration

  Swift

      var paddingAdjustmentBehavior: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSMapViewPaddingAdjustmentBehavior.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSMapViewPaddingAdjustmentBehavior.html paddingAdjustmentBehavior;

- `


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


  ` Defaults to `YES`. If set to `NO`, `GMSMapView` will generate accessibility elements for overlay
  objects, such as `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMarker.html` and `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSPolyline.html`.

  This property follows the informal `UIAccessibility` protocol, except for the default value of
  `YES`.

  #### Declaration

  Swift

      var accessibilityElementsHidden: Bool { get set }

  Objective-C

      @property (nonatomic) BOOL accessibilityElementsHidden;

- `


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


  ` Accessor for the custom `CALayer` type used for the layer.

  #### Declaration

  Swift

      var layer: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapLayer.html { get }

  Objective-C

      @property (nonatomic, retain, readonly) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapLayer.html *_Nonnull layer;

- `


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


  ` Controls the rendering frame rate. Default value is `kGMSFrameRateMaximum`.

  #### Declaration

  Swift

      var preferredFrameRate: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSFrameRate.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSFrameRate.html preferredFrameRate;

- `


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


  ` If not nil, constrains the camera target so that gestures cannot cause it to leave the specified
  bounds.

  #### Declaration

  Swift

      var cameraTargetBounds: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCoordinateBounds.html? { get set }

  Objective-C

      @property (nonatomic, nullable) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCoordinateBounds.html *cameraTargetBounds;

- `


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


  ` All conditionally-available (dependent on mapID or other map settings) capabilities that are
  available at the current moment in time. Does not include always-available capabilities.

  #### Declaration

  Swift

      var mapCapabilities: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSMapCapabilityFlags.html { get }

  Objective-C

      @property (nonatomic, readonly) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSMapCapabilityFlags.html mapCapabilities;

- `


  ### [-init](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)init)


  ` Initializes with `CGRectZero` and default options.

  #### Declaration

  Swift

      convenience init()

  Objective-C

      - (nonnull instancetype)init;

- `


  ### [-initWithOptions:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)initWithOptions:)


  ` Creates a new map view with the given options. The value of the options object is copied by this
  method.

  #### Declaration

  Swift

      init(options: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapViewOptions.html)

  Objective-C

      - (nonnull instancetype)initWithOptions:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapViewOptions.html *)options;

- `


  ### [-initWithFrame:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)initWithFrame:)


  ` Deprecated

  Use -init or -initWithOptions: instead.

  #### Declaration

  Swift

      convenience init(frame: CGRect)

  Objective-C

      - (instancetype)initWithFrame:(CGRect)frame
          __GMS_AVAILABLE_BUT_DEPRECATED_MSG("Use -init or -initWithOptions: instead.");

- `


  ### [-initWithCoder:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)initWithCoder:)


  ` Deprecated

  Use -init or -initWithOptions: instead.

  #### Declaration

  Swift

      convenience init?(coder: NSCoder)

  Objective-C

      - (nullable instancetype)initWithCoder:(NSCoder *)coder
          __GMS_AVAILABLE_BUT_DEPRECATED_MSG("Use -init or -initWithOptions: instead.");

- `


  ### [+mapWithFrame:camera:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(cm)mapWithFrame:camera:)


  ` Deprecated

  Use -init or -initWithOptions: instead.
  Builds and returns a map view with a frame and camera target.

  #### Declaration

  Swift

      class func map(withFrame frame: CGRect, camera: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html) -> Self

  Objective-C

      + (nonnull instancetype)mapWithFrame:(CGRect)frame
                                    camera:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)camera;

- `


  ### [+mapWithFrame:mapID:camera:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(cm)mapWithFrame:mapID:camera:)


  ` Deprecated

  Use -init or -initWithOptions: instead.
  Convenience initializer to build and return a map view with a frame, map ID, and camera target.

  #### Declaration

  Objective-C

      + (nonnull instancetype)mapWithFrame:(CGRect)frame
                                     mapID:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapID.html *)mapID
                                    camera:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)camera;

- `


  ### [-initWithFrame:camera:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)initWithFrame:camera:)


  ` Deprecated

  Use -init or -initWithOptions: instead.
  Builds and returns a map view, with a frame and camera target.

  #### Declaration

  Swift

      convenience init(frame: CGRect, camera: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html)

  Objective-C

      - (nonnull instancetype)initWithFrame:(CGRect)frame
                                     camera:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)camera;

- `


  ### [-initWithFrame:mapID:camera:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)initWithFrame:mapID:camera:)


  ` Deprecated

  Use -init or -initWithOptions: instead.
  Builds and returns a map view with a frame, map ID, and camera target.

  #### Declaration

  Swift

      convenience init(frame: CGRect, mapID: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapID.html, camera: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html)

  Objective-C

      - (nonnull instancetype)initWithFrame:(CGRect)frame
                                      mapID:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapID.html *)mapID
                                     camera:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)camera;

- `


  ### [-startRendering](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)startRendering)


  ` Deprecated

  This method is obsolete and will be removed in a future release.
  Tells this map to power up its renderer. This is optional and idempotent.

  #### Declaration

  Swift

      func startRendering()

  Objective-C

      - (void)startRendering;

- `


  ### [-stopRendering](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)stopRendering)


  ` Deprecated

  This method is obsolete and will be removed in a future release.
  Tells this map to power down its renderer. This is optional and idempotent.

  #### Declaration

  Swift

      func stopRendering()

  Objective-C

      - (void)stopRendering;

- `


  ### [-clear](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)clear)


  ` Clears all markup that has been added to the map, including markers, polylines and ground
  overlays. This will not clear the visible location dot or reset the current mapType.

  #### Declaration

  Swift

      func clear()

  Objective-C

      - (void)clear;

- `


  ### [-setMinZoom:maxZoom:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)setMinZoom:maxZoom:)


  ` Sets `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)minZoom` and `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)maxZoom`. This method expects the minimum to be less than or equal to the
  maximum, and will throw an exception with name `NSRangeException` otherwise.

  #### Declaration

  Swift

      func setMinZoom(_ minZoom: Float, maxZoom: Float)

  Objective-C

      - (void)setMinZoom:(float)minZoom maxZoom:(float)maxZoom;

- `


  ### [-cameraForBounds:insets:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)cameraForBounds:insets:)


  ` Build a `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html` that presents `bounds` with `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)padding`. The camera will have a zero
  bearing and tilt (i.e., facing north and looking directly at the Earth). This takes the frame and
  padding of this `GMSMapView` into account.

  If the bounds is invalid this method will return a nil camera.

  #### Declaration

  Swift

      func camera(for bounds: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCoordinateBounds.html, insets: UIEdgeInsets) -> https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html?

  Objective-C

      - (nullable https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)cameraForBounds:
                                          (nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCoordinateBounds.html *)bounds
                                               insets:(UIEdgeInsets)insets;

- `


  ### [-moveCamera:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)moveCamera:)


  ` Changes the camera according to `update`. The camera change is instantaneous (with no
  animation).

  #### Declaration

  Swift

      func moveCamera(_ update: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraUpdate.html)

  Objective-C

      - (void)moveCamera:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraUpdate.html *)update;

- `


  ### [-areEqualForRenderingPosition:position:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)areEqualForRenderingPosition:position:)


  ` Check whether the given camera positions would practically cause the camera to be rendered the
  same, taking into account the level of precision and transformations used internally.

  #### Declaration

  Swift

      func areEqual(forRenderingPosition position: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html, position otherPosition: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html) -> Bool

  Objective-C

      - (BOOL)areEqualForRenderingPosition:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)position
                                  position:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)otherPosition;

- `


  ### [-featureLayerOfFeatureType:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)featureLayerOfFeatureType:)


  ` Returns a feature layer of the specified type. Feature layers must be configured in the Cloud
  Console.

  If a layer of the specified type does not exist on this map, or if data-driven styling is not
  enabled, or if the Metal rendering framework is not used, the resulting layer's `isAvailable`
  will be `NO`, and will not respond to any calls.

  Requires the Metal renderer. Learn how to enable Metal at
  <https://developers.google.com/maps/documentation/ios-sdk/config#use-metal>

  #### Declaration

  Swift

      func featureLayer(of featureType: FeatureType) -> FeatureLayer<PlaceFeature>

  Objective-C

      - (nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSFeatureLayer.html<https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSPlaceFeature.html *> *)featureLayerOfFeatureType:
          (nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Type-Definitions/GMSFeatureType.html)featureType;

- `


  ### [-datasetFeatureLayerOfDatasetID:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)datasetFeatureLayerOfDatasetID:)


  ` Returns a dataset feature layer of the specified dataset. Dataset IDs must be configured in the
  Cloud Console.

  If a dataset of the specified ID does not exist on this map, or if data-driven styling is not
  enabled, the resulting layer's `isAvailable` will be `NO`, and will not respond to any calls.

  #### Declaration

  Swift

      func datasetFeatureLayer(of datasetID: String) -> DatasetFeatureLayer

  Objective-C

      - (nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSDatasetFeatureLayer.html *)datasetFeatureLayerOfDatasetID:
          (nonnull NSString *)datasetID;

[## AccessoryViewManagement](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/AccessoryViewManagement)

- `


  ### [-invalidateLayoutForAccessoryView:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)invalidateLayoutForAccessoryView:)


  ` Invalidates an accessory view and triggers a re-layout for that view. The view must be one of the
  current accessory views. If guidance is inactive, this call is a NO-OP instruction.

  #### Declaration

  Swift

      func invalidateLayout(forAccessoryView accessoryView: any UIView & https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSNavigationAccessoryView.html)

  Objective-C

      - (void)invalidateLayoutForAccessoryView:
          (nonnull UIView<https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSNavigationAccessoryView.html> *)accessoryView;

- `


  ### [-setHeaderAccessoryView:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)setHeaderAccessoryView:)


  ` Sets the position of the accessory view below the primary header of the navigation UI. Passing a
  nil value removes the accessory view. If guidance is inactive, this call is a NO-OP instruction.

  @note: If the map view is short, the SDK hides the accessory view due to limited space. The views
  are internally managed to optimize display of the map.

  #### Declaration

  Swift

      func setHeaderAccessory(_ headerAccessoryView: (any UIView & https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSNavigationAccessoryView.html)?)

  Objective-C

      - (void)setHeaderAccessoryView:
          (nullable UIView<https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSNavigationAccessoryView.html> *)headerAccessoryView;

[## CarPlay](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/CarPlay)

- `


  ### [-didBeginPanGesture](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)didBeginPanGesture)


  ` <br />

  <br />

  > [!WARNING]
  > [Preview](https://developers.google.com/maps/launch-stages#preview) feature

  <br />

  <br />

  This method should be called from the application's implementation of the `CPMapTemplateDelegate`
  method `-mapTemplateDidBeginPanGesture:` in order to implement pan gestures for CarPlay map
  templates.

  #### Declaration

  Swift

      func didBeginPanGesture()

  Objective-C

      - (void)didBeginPanGesture;

- `


  ### [-didUpdatePanGestureWithTranslation:velocity:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)didUpdatePanGestureWithTranslation:velocity:)


  ` <br />

  <br />

  > [!WARNING]
  > [Preview](https://developers.google.com/maps/launch-stages#preview) feature

  <br />

  <br />

  This method should be called from the application's implementation of the `CPMapTemplateDelegate`
  method `-mapTemplate:didUpdatePanGestureWithTranslation:` in order to implement pan gestures for
  CarPlay map templates.

  #### Declaration

  Swift

      func didUpdatePanGesture(withTranslation translation: CGPoint, velocity: CGPoint)

  Objective-C

      - (void)didUpdatePanGestureWithTranslation:(CGPoint)translation
                                        velocity:(CGPoint)velocity;

- `


  ### [-didEndPanGestureWithVelocity:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)didEndPanGestureWithVelocity:)


  ` <br />

  <br />

  > [!WARNING]
  > [Preview](https://developers.google.com/maps/launch-stages#preview) feature

  <br />

  <br />

  This method should be called from the application's implementation of the `CPMapTemplateDelegate`
  method `-mapTemplate:didEndPanGestureWithVelocity:` in order to implement pan gestures for
  CarPlay map templates.

  #### Declaration

  Swift

      func didEndPanGesture(withVelocity velocity: CGPoint)

  Objective-C

      - (void)didEndPanGestureWithVelocity:(CGPoint)velocity;

[## Navigation](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/Navigation)

- `


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


  ` A delegate of `GMSMapView` which receives callbacks for navigation UI events.

  #### Declaration

  Swift

      @IBOutlet weak var navigationUIDelegate: (any https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSMapViewNavigationUIDelegate.html)? { get set }

  Objective-C

      @property (nonatomic, weak, nullable) id<https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Protocols/GMSMapViewNavigationUIDelegate.html> navigationUIDelegate;

- `


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


  ` Whether navigation functionality is enabled for this map. If this is YES, routes and turn-by-turn
  directions can be displayed on the map, the camera can enter following mode, and the re-center
  button appears when the camera is not following the device location.

  If the user has not accepted the Google Navigation terms and conditions, setting this property
  will have no effect. To show the terms and conditions dialog, see the methods on
  `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigationServices.html`.

  #### Declaration

  Swift

      var isNavigationEnabled: Bool { get set }

  Objective-C

      @property (nonatomic, assign, unsafe_unretained, readwrite,
                getter=isNavigationEnabled) BOOL navigationEnabled;

- `


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


  ` The navigator for this `GMSMapView` which allows routes to be requested and turn-by-turn guidance
  to be started.

  If the user has not accepted the Google Navigation terms and conditions, this will be nil. To
  show the terms and conditions dialog, see the methods on `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigationServices.html`.

  #### Declaration

  Swift

      var navigator: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigator.html? { get }

  Objective-C

      @property (nonatomic, readonly, nullable) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigator.html *navigator;

- `


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


  ` Allows subscription to road-snapped location updates.

  If the user has not accepted the Google Navigation terms and conditions, this will be nil. To
  show the terms and conditions dialog, see the methods on `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigationServices.html`.

  #### Declaration

  Swift

      var roadSnappedLocationProvider: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSRoadSnappedLocationProvider.html? { get }

  Objective-C

      @property (nonatomic, readonly, nullable) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSRoadSnappedLocationProvider.html *roadSnappedLocationProvider;

- `


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


  ` Allows you to simulate the device location. The simulated location affects the position of the
  chevron on the map, the progress of turn-by-turn guidance, and the updates provided by the
  road-snapped location provider.

  If the user has not accepted the Google Navigation terms and conditions, this will be nil. To
  show the terms and conditions dialog, see the methods on `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigationServices.html`.

  #### Declaration

  Swift

      var locationSimulator: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSLocationSimulator.html? { get }

  Objective-C

      @property (nonatomic, readonly, nullable) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSLocationSimulator.html *locationSimulator;

- `


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


  ` The mode of the camera which determines its behavior when the navigationEnabled property is set
  to YES. See `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationCameraMode.html` for the available modes.

  #### Declaration

  Swift

      var cameraMode: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationCameraMode.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationCameraMode.html cameraMode;

- `


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


  ` The camera perspective that will be used when following the device's location. The
  `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)navigationEnabled` property must be set to YES and `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)cameraMode` must be set to
  `GMSNavigationCameraModeFollowing` for this perspective to take effect.

  #### Declaration

  Swift

      var followingPerspective: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationCameraPerspective.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationCameraPerspective.html followingPerspective;

- `


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


  ` The travel mode which determines what type of routes will be fetched and the way that device
  course is determined.

  In driving mode, device course is based on the direction of movement, while in cycling or walking
  mode the course is based on the compass direction the device is facing. Device course is
  represented by the direction of the device location marker and reported by the
  `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSRoadSnappedLocationProvider.html`.

  #### Declaration

  Swift

      var travelMode: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationTravelMode.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationTravelMode.html travelMode;

- `


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


  ` The lighting mode determines which color scheme should be used for rendering the map. It is also
  used to determine the default colors of various interface elements.

  #### Declaration

  Swift

      var lightingMode: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationLightingMode.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationLightingMode.html lightingMode;

- `


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


  ` Determines whether the speed limit should be displayed when guidance is active and speed limit
  data is available. The default value is NO.

  #### Declaration

  Swift

      var shouldDisplaySpeedLimit: Bool { get set }

  Objective-C

      @property (nonatomic) BOOL shouldDisplaySpeedLimit;

- `


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


  ` Specifies whether the speedometer icon is shown.

  When enabled, a speedometer icon that indicates the vehicle speed appears in the bottom corner
  during guidance. When reliable speed limit data is available, the speed limit icon is also
  visible, and is attached with the speedometer icon. The speedometer icon can have different
  colors for text and background, depending on the speed alert severity.

  If the recenter button is enabled, then the speed limit and the speedometer icon are temporarily
  hidden when the recenter button displays.

  #### Declaration

  Swift

      var shouldDisplaySpeedometer: Bool { get set }

  Objective-C

      @property (nonatomic) BOOL shouldDisplaySpeedometer;

- `


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


  ` The rectangle that is covered by the navigation header. Height is zero when the header is hidden.

  #### Declaration

  Swift

      var navigationHeaderLayoutGuide: UILayoutGuide { get }

  Objective-C

      @property (nonatomic, readonly) UILayoutGuide *_Nonnull navigationHeaderLayoutGuide;

- `


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


  ` The rectangle that is covered by the navigation footer. Height is zero when the footer is hidden.

  #### Declaration

  Swift

      var navigationFooterLayoutGuide: UILayoutGuide { get }

  Objective-C

      @property (nonatomic, readonly) UILayoutGuide *_Nonnull navigationFooterLayoutGuide;

- `


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


  ` <br />

  <br />

  > [!WARNING]
  > [Experimental](https://developers.google.com/maps/launch-stages#experimental) feature

  <br />

  <br />

  Returns whether incident reporting is available.

  Availability may depend on factors such as user location, network
  connectivity, and the current state of the application.

  #### Declaration

  Swift

      var isIncidentReportingAvailable: Bool { get }

  Objective-C

      @property (nonatomic, readonly, getter=isIncidentReportingAvailable) BOOL reportIncidentsAvailable;

- `


  ### [-presentReportIncidentsPanel:completion:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)presentReportIncidentsPanel:completion:)


  ` <br />

  <br />

  > [!WARNING]
  > [Experimental](https://developers.google.com/maps/launch-stages#experimental) feature

  <br />

  <br />

  Presents a panel allowing users to report an incident.

  This method should only be called during active navigation and when incident reporting is
  available. Ensure that reporting is available by checking the `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)reportIncidentsAvailable` property
  before calling this method.

  #### Declaration

  Swift

      func presentReportIncidentsPanel(_ presentingViewController: UIViewController?) async throws

  Objective-C

      - (void)presentReportIncidentsPanel:
                  (nullable UIViewController *)presentingViewController
                               completion:(NS_SWIFT_UI_ACTOR void (^_Nullable)(
                                              NSError *_Nullable))completion;

  #### Parameters

  |---|---|
  | ` presentingViewController ` | The view controller to present the report incident panel from. If nil, the SDK will attempt to use the topmost view controller in the view controller hierarchy. |
  | ` completion ` | A block to be executed after the panel is presented or if an error occurs. If an error occurs, the error parameter in the completion block will be non-nil and contain an error from the domain `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Constants/GMSMapViewPresentReportIncidentPanelErrorDomain.html`. |

- `


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


  ` <br />

  <br />

  > [!WARNING]
  > [Experimental](https://developers.google.com/maps/launch-stages#experimental) feature

  <br />

  <br />

  The layout guide that is used to position the bottom trailing buttons.

  Defaults to the `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)navigationFooterLayoutGuide` if not set.
  To use the default position, do not set this property or set it to `nil`.

  #### Declaration

  Swift

      var bottomTrailingButtonsLayoutGuide: UILayoutGuide! { get set }

  Objective-C

      @property (nonatomic, null_resettable) UILayoutGuide *bottomTrailingButtonsLayoutGuide;

- `


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


  ` <br />

  <br />

  > [!WARNING]
  > [Experimental](https://developers.google.com/maps/launch-stages#experimental) feature

  <br />

  <br />

  The layout guide that is used to position the bottom trailing buttons when the navigation footer
  and header do not span the full width of the screen.

  If not set, defaults to a layoutGuide where only the top anchor is constrained. To use the
  default position, do not set this property or set it to `nil`.

  #### Declaration

  Swift

      var bottomTrailingButtonsAlternateLayoutGuide: UILayoutGuide! { get set }

  Objective-C

      @property (nonatomic, null_resettable) UILayoutGuide *bottomTrailingButtonsAlternateLayoutGuide;

- `


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


  ` Specifies which route callout format (default, time, or distance) to use.

  #### Declaration

  Swift

      var routeCalloutFormat: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationRouteCalloutFormat.html { get set }

  Objective-C

      @property (nonatomic) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Enums/GMSNavigationRouteCalloutFormat.html routeCalloutFormat;

- `


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


  ` Customized zoom level during navigation. Setting this value will override the default Navigation
  SDK zoom level when the camera is following device location (i.e. `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)cameraMode` equals
  `GMSNavigationCameraModeFollowing).` This can be set to `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Constants/GMSNavigationNoFollowingZoomLevel.html`
  if no zoom level override should be used.

  #### Declaration

  Swift

      var followingZoomLevel: Float { get set }

  Objective-C

      @property (nonatomic) float followingZoomLevel;

- `


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


  ` Sets the My Location provider for this map view.

  Normally the My Location dot and accuracy circle for a map view are driven by the actual device
  location. By setting this property, the My Location dot and accuracy circle will be driven by
  the road-snapped location from the given location provider instead. To return to the normal
  behavior, set this property to nil.

  This has no effect when `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(py)navigationEnabled` is on for this map view.

  #### Declaration

  Swift

      var roadSnappedMyLocationSource: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSRoadSnappedLocationProvider.html? { get set }

  Objective-C

      @property (nonatomic, nullable) https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSRoadSnappedLocationProvider.html *roadSnappedMyLocationSource;

- `


  ### [-enableNavigationWithSession:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)enableNavigationWithSession:)


  ` Begins navigation in this map view using the given navigation session.

  Note: for the most efficient use of memory and CPU, call this method before
  invoking any other navigation-related methods on this map view.

  #### Declaration

  Swift

      func enableNavigation(with navigationSession: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigationSession.html) -> Bool

  Objective-C

      - (BOOL)enableNavigationWithSession:
          (nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSNavigationSession.html *)navigationSession;

  #### Return Value

  Whether navigation was successfully started (for instance, NO will
  be returned if the terms and conditions have not yet been accepted).
[## Animation](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/Animation)

- `


  ### [-animateToCameraPosition:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)animateToCameraPosition:)


  ` Animates the camera of this map to `cameraPosition`.

  #### Declaration

  Swift

      func animate(to cameraPosition: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html)

  Objective-C

      - (void)animateToCameraPosition:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraPosition.html *)cameraPosition;

- `


  ### [-animateToLocation:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)animateToLocation:)


  ` As `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(im)animateToCameraPosition:`, but changes only the location of the camera (i.e., from the
  current location to `location`).

  #### Declaration

  Swift

      func animate(toLocation location: CLLocationCoordinate2D)

  Objective-C

      - (void)animateToLocation:(CLLocationCoordinate2D)location;

- `


  ### [-animateToZoom:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)animateToZoom:)


  ` As `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(im)animateToCameraPosition:`, but changes only the zoom level of the camera.

  This value is clamped by \[kGMSMinZoomLevel, kGMSMaxZoomLevel\].

  #### Declaration

  Swift

      func animate(toZoom zoom: Float)

  Objective-C

      - (void)animateToZoom:(float)zoom;

- `


  ### [-animateToBearing:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)animateToBearing:)


  ` As `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(im)animateToCameraPosition:`, but changes only the bearing of the camera (in degrees). Zero
  indicates true north.

  #### Declaration

  Swift

      func animate(toBearing bearing: CLLocationDirection)

  Objective-C

      - (void)animateToBearing:(CLLocationDirection)bearing;

- `


  ### [-animateToViewingAngle:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)animateToViewingAngle:)


  ` As `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(im)animateToCameraPosition:`, but changes only the viewing angle of the camera (in degrees).
  This value will be clamped to a minimum of zero (i.e., facing straight down) and between 30 and
  45 degrees towards the horizon, depending on the relative closeness to the earth.

  #### Declaration

  Swift

      func animate(toViewingAngle viewingAngle: Double)

  Objective-C

      - (void)animateToViewingAngle:(double)viewingAngle;

- `


  ### [-animateWithCameraUpdate:](https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView#/c:objc(cs)GMSMapView(im)animateWithCameraUpdate:)


  ` Applies `cameraUpdate` to the current camera, and then uses the result as per
  `https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSMapView.html#/c:objc(cs)GMSMapView(im)animateToCameraPosition:`.

  #### Declaration

  Swift

      func animate(with cameraUpdate: https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraUpdate.html)

  Objective-C

      - (void)animateWithCameraUpdate:(nonnull https://developers.google.com/maps/documentation/navigation/ios-sdk/reference/objc/Classes/GMSCameraUpdate.html *)cameraUpdate;