# MGLSource

    @interface MGLSource : NSObject

`MGLSource` is an abstract base class for map content sources. A map content source supplies content to be shown on the map. A source is added to an `MGLStyle` object along with an `MGLForegroundStyleLayer` object. The foreground style layer defines the appearance of any content supplied by the source.

Each source defined by the style JSON file is represented at runtime by an `MGLSource` object that you can use to refine the map’s content. You can also add and remove sources dynamically using methods such as `-[MGLStyle addSource:]` and `-[MGLStyle sourceWithIdentifier:]`.

Create instances of `MGLShapeSource`, `MGLComputedShapeSource`, `MGLImageSource`, and the concrete subclasses of `MGLTileSource` (`MGLVectorTileSource` and `MGLRasterTileSource`) in order to use `MGLSource`’s properties and methods. Do not create instances of `MGLSource` directly, and do not create your own subclasses of this class.

### Initializing a Source

- `-initWithIdentifier:`

  Returns a source initialized with an identifier.

  After initializing and configuring the source, add it to a map view’s style using the `-[MGLStyle addSource:]` method.

  #### Declaration

  Objective-C

      - (nonnull instancetype)initWithIdentifier:(nonnull NSString *)identifier;

  Swift

      init(identifier: String)

  #### Parameters

  `identifier` | A string that uniquely identifies the source in the style to which it is added.

  #### Return Value

  An initialized source.

  View Source on GitHub

### Identifying a Source

- `identifier`

  A string that uniquely identifies the source in the style to which it is added.

  #### Declaration

  Objective-C

      @property (readwrite, copy, nonatomic) NSString *_Nonnull identifier;

  Swift

      var identifier: String { get set }

  View Source on GitHub