# Maps

- `MGLAccountManager`

  The `MGLAccountManager` object provides a global way to set a Mapbox API access token.

  See more

  #### Declaration

  Objective-C

      @interface MGLAccountManager : NSObject

  Swift

      class MGLAccountManager : NSObject

  View Source on GitHub

- `MGLMapCamera`

  An `MGLMapCamera` object represents a viewpoint from which the user observes some point on an `MGLMapView`.

  #### Related examples See the Camera animation example to learn how to create a camera that rotates around a central point. See the Restrict map panning to an area example to learn how to restrict map panning using `MGLMapViewDelegate`‘s `-mapView:shouldChangeFromCamera:toCamera:` method.

  See more

  #### Declaration

  Objective-C

      @interface MGLMapCamera : NSObject <NSSecureCoding, NSCopying>

  Swift

      class MGLMapCamera : NSObject, NSSecureCoding, NSCopying

  View Source on GitHub

- `MGLMapView`

  An interactive, customizable map view with an interface similar to the one provided by Apple’s MapKit.

  Using `MGLMapView`, you can embed the map inside a view, allow users to manipulate it with standard gestures, animate the map between different viewpoints, and present information in the form of annotations and overlays.

  The map view loads scalable vector tiles that conform to the Mapbox Vector Tile Specification. It styles them with a style that conforms to the Mapbox Style Specification. Such styles can be designed in Mapbox Studio and hosted on mapbox.com.

  A collection of Mapbox-hosted styles is available through the `MGLStyle` class. These basic styles use Mapbox Streets or Mapbox Satellite data sources, but you can specify a custom style that makes use of your own data.

  Mapbox-hosted vector tiles and styles require an API access token, which you can obtain from the Mapbox account page. Access tokens associate requests to Mapbox’s vector tile and style APIs with your Mapbox account. They also deter other developers from using your styles without your permission.

  Because `MGLMapView` loads asynchronously, several delegate methods are available for receiving map-related updates. These methods can be used to ensure that certain operations have completed before taking any additional actions. Information on these methods is located in the `MGLMapViewDelegate` protocol documentation.

  Adding your own gesture recognizer to `MGLMapView` will block the corresponding gesture recognizer built into `MGLMapView`. To avoid conflicts, define which gesture takes precedence. For example, you can create your own `UITapGestureRecognizer` that will be invoked only if the default `MGLMapView` tap gesture fails:

      let mapTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(myCustomFunction))
      for recognizer in mapView.gestureRecognizers! where recognizer is UITapGestureRecognizer {
          mapTapGestureRecognizer.require(toFail: recognizer)
      }
      mapView.addGestureRecognizer(mapTapGestureRecognizer)

  Note

  You are responsible for getting permission to use the map data and for ensuring that your use adheres to the relevant terms of use.

  #### Related examples

  See the Simple map view example to learn how to initialize a basic `MGLMapView`.

  See more

  #### Declaration

  Objective-C

      @interface MGLMapView : UIView

  Swift

      class MGLMapView : UIView

  View Source on GitHub
- `MGLUserTrackingMode`

  The mode used to track the user location on the map. Used with `MGLMapView.userTrackingMode`.

  #### Related examples

  See the Switch between user tracking modes example to learn how to toggle modes and how each mode behaves.

  See more

  #### Declaration

  Objective-C

      enum MGLUserTrackingMode {}

  Swift

      enum MGLUserTrackingMode : UInt

  View Source on GitHub

- `MGLMapViewDelegate`

  The `MGLMapViewDelegate` protocol defines a set of optional methods that you can use to receive map-related update messages. Because many map operations require the `MGLMapView` class to load data asynchronously, the map view calls these methods to notify your application when specific operations complete. The map view also uses these methods to request information about annotations displayed on the map, such as the styles and interaction modes to apply to individual annotations.

  See more

  #### Declaration

  Objective-C

      @protocol MGLMapViewDelegate <NSObject>

  Swift

      protocol MGLMapViewDelegate : NSObjectProtocol

  View Source on GitHub

- `MGLMapSnapshot`

  An image generated by a snapshotter object.

  See more

  #### Declaration

  Objective-C

      @interface MGLMapSnapshot : NSObject

  Swift

      class MGLMapSnapshot : NSObject

  View Source on GitHub
- `MGLMapSnapshotOptions`

  The options to use when creating images with the `MGLMapSnapshotter`.

  See more

  #### Declaration

  Objective-C

      @interface MGLMapSnapshotOptions : NSObject

  Swift

      class MGLMapSnapshotOptions : NSObject

  View Source on GitHub
- `MGLMapSnapshotter`

  An `MGLMapSnapshotter` generates static raster images of the map. Each snapshot image depicts a portion of a map defined by an `MGLMapSnapshotOptions` object you provide. The snapshotter generates an `MGLMapSnapshot` object asynchronously, passing it into a completion handler once tiles and other resources needed for the snapshot are finished loading.

  You can change the snapshotter’s options at any time and reuse the snapshotter for multiple distinct snapshots; however, the snapshotter can only generate one snapshot at a time. If you need to generate multiple snapshots concurrently, create multiple snapshotter objects.

  For an interactive map, use the `MGLMapView` class. Both `MGLMapSnapshotter` and `MGLMapView` are compatible with offline packs managed by the `MGLOfflineStorage` class.

  From a snapshot, you can obtain an image and convert geographic coordinates to the image’s coordinate space in order to superimpose markers and overlays. If you do not need offline map functionality, you can use the `Snapshot` class in MapboxStatic.swift to generate static map images with overlays.

  ### Example

      let camera = MGLMapCamera(lookingAtCenter: CLLocationCoordinate2D(latitude: 37.7184, longitude: -122.4365), altitude: 100, pitch: 20, heading: 0)

      let options = MGLMapSnapshotOptions(styleURL: MGLStyle.satelliteStreetsStyleURL, camera: camera, size: CGSize(width: 320, height: 480))
      options.zoomLevel = 10

      let snapshotter = MGLMapSnapshotter(options: options)
      snapshotter.start { (snapshot, error) in
          if let error = error {
              fatalError(error.localizedDescription)
          }

          image = snapshot?.image
      }

  #### Related examples

  See the Create a static map snapshot example to learn how to use the `MGLMapSnapshotter` to generate a static image based on an `MGLMapView` object’s style, camera, and view bounds.

  See more

  #### Declaration

  Objective-C

      @interface MGLMapSnapshotter : NSObject

  Swift

      class MGLMapSnapshotter : NSObject

  View Source on GitHub