# MGLCircleStyleLayer

    @interface MGLCircleStyleLayer : MGLVectorStyleLayer

An `MGLCircleStyleLayer` is a style layer that renders one or more filled circles on the map.

Use a circle style layer to configure the visual appearance of point or point collection features. These features can come from vector tiles loaded by an `MGLVectorTileSource` object, or they can be `MGLPointAnnotation`, `MGLPointFeature`, `MGLPointCollection`, or `MGLPointCollectionFeature` instances in an `MGLShapeSource` or `MGLComputedShapeSource` object.

A circle style layer renders circles whose radii are measured in screen units. To display circles on the map whose radii correspond to real-world distances, use many-sided regular polygons and configure their appearance using an `MGLFillStyleLayer` object.

You can access an existing circle style layer using the `-[MGLStyle layerWithIdentifier:]` method if you know its identifier; otherwise, find it using the `MGLStyle.layers` property. You can also create a new circle style layer and add it to the style using a method such as `-[MGLStyle addLayer:]`.

#### Related examples

See the Data-driven circles, Add multiple shapes from a single shape source, and Cluster point data examples to learn how to add circles to your map using this style layer.

### Example

    let layer = MGLCircleStyleLayer(identifier: "circles", source: population)
    layer.sourceLayerIdentifier = "population"
    layer.circleColor = NSExpression(forConstantValue: UIColor.green)
    layer.circleRadius = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'exponential', 1.75, %@)",
                                      [12: 2,
                                       22: 180])
    layer.circleOpacity = NSExpression(forConstantValue: 0.7)
    layer.predicate = NSPredicate(format: "%K == %@", "marital-status", "married")
    mapView.style?.addLayer(layer)

- `-initWithIdentifier:source:`

  Returns a circle style layer initialized with an identifier and source.

  After initializing and configuring the style layer, add it to a map view’s style using the `-[MGLStyle addLayer:]` or `-[MGLStyle insertLayer:belowLayer:]` method.

  #### Declaration

  Objective-C

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

  Swift

      init(identifier: String, source: MGLSource)

  #### Parameters

  `identifier` | A string that uniquely identifies the source in the style to which it is added.
  `source` | The source from which to obtain the data to style. If the source has not yet been added to the current style, the behavior is undefined.

  #### Return Value

  An initialized foreground style layer.

  View Source on GitHub

### Accessing the Paint Attributes

- `circleBlur`

  Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.

  The default value of this property is an expression that evaluates to the float `0`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant numeric values
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable and/or feature attributes

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleBlur;

  Swift

      var circleBlur: NSExpression! { get set }

  View Source on GitHub
- `circleBlurTransition`

  The transition affecting any changes to this layer’s `circleBlur` property.

  This property corresponds to the `circle-blur-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic) MGLTransition circleBlurTransition;

  Swift

      var circleBlurTransition: MGLTransition { get set }

  View Source on GitHub
- `circleColor`

  The fill color of the circle.

  The default value of this property is an expression that evaluates to `UIColor.blackColor`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant `UIColor` values
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable and/or feature attributes

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleColor;

  Swift

      var circleColor: NSExpression! { get set }

  View Source on GitHub
- `circleColorTransition`

  The transition affecting any changes to this layer’s `circleColor` property.

  This property corresponds to the `circle-color-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic) MGLTransition circleColorTransition;

  Swift

      var circleColorTransition: MGLTransition { get set }

  View Source on GitHub
- `circleOpacity`

  The opacity at which the circle will be drawn.

  The default value of this property is an expression that evaluates to the float `1`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant numeric values between 0 and 1 inclusive
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable and/or feature attributes

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleOpacity;

  Swift

      var circleOpacity: NSExpression! { get set }

  View Source on GitHub
- `circleOpacityTransition`

  The transition affecting any changes to this layer’s `circleOpacity` property.

  This property corresponds to the `circle-opacity-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic) MGLTransition circleOpacityTransition;

  Swift

      var circleOpacityTransition: MGLTransition { get set }

  View Source on GitHub
- `circlePitchAlignment`

  Orientation of circle when map is pitched.

  The default value of this property is an expression that evaluates to `viewport`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant `MGLCirclePitchAlignment` values
  - Any of the following constant string values:
    - `map`: The circle is aligned to the plane of the map.
    - `viewport`: The circle is aligned to the plane of the viewport.
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Step functions applied to the `$zoomLevel` variable

  This property does not support applying interpolation functions to the `$zoomLevel` variable or applying interpolation or step functions to feature attributes.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circlePitchAlignment;

  Swift

      var circlePitchAlignment: NSExpression! { get set }

  View Source on GitHub
- `circleRadius`

  Circle radius.

  This property is measured in points.

  The default value of this property is an expression that evaluates to the float `5`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant numeric values no less than 0
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable and/or feature attributes

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleRadius;

  Swift

      var circleRadius: NSExpression! { get set }

  View Source on GitHub
- `circleRadiusTransition`

  The transition affecting any changes to this layer’s `circleRadius` property.

  This property corresponds to the `circle-radius-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic) MGLTransition circleRadiusTransition;

  Swift

      var circleRadiusTransition: MGLTransition { get set }

  View Source on GitHub
- `circleScaleAlignment`

  Controls the scaling behavior of the circle when the map is pitched.

  The default value of this property is an expression that evaluates to `map`. Set this property to `nil` to reset it to the default value.

  This attribute corresponds to the `circle-pitch-scale` layout property in the Mapbox Style Specification.

  You can set this property to an expression containing any of the following:

  - Constant `MGLCircleScaleAlignment` values
  - Any of the following constant string values:
    - `map`: Circles are scaled according to their apparent distance to the camera.
    - `viewport`: Circles are not scaled.
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Step functions applied to the `$zoomLevel` variable

  This property does not support applying interpolation functions to the `$zoomLevel` variable or applying interpolation or step functions to feature attributes.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleScaleAlignment;

  Swift

      var circleScaleAlignment: NSExpression! { get set }

  View Source on GitHub
- `circleStrokeColor`

  The stroke color of the circle.

  The default value of this property is an expression that evaluates to `UIColor.blackColor`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant `UIColor` values
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable and/or feature attributes

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleStrokeColor;

  Swift

      var circleStrokeColor: NSExpression! { get set }

  View Source on GitHub
- `circleStrokeColorTransition`

  The transition affecting any changes to this layer’s `circleStrokeColor` property.

  This property corresponds to the `circle-stroke-color-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic)
          MGLTransition circleStrokeColorTransition;

  Swift

      var circleStrokeColorTransition: MGLTransition { get set }

  View Source on GitHub
- `circleStrokeOpacity`

  The opacity of the circle’s stroke.

  The default value of this property is an expression that evaluates to the float `1`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant numeric values between 0 and 1 inclusive
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable and/or feature attributes

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleStrokeOpacity;

  Swift

      var circleStrokeOpacity: NSExpression! { get set }

  View Source on GitHub
- `circleStrokeOpacityTransition`

  The transition affecting any changes to this layer’s `circleStrokeOpacity` property.

  This property corresponds to the `circle-stroke-opacity-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic)
          MGLTransition circleStrokeOpacityTransition;

  Swift

      var circleStrokeOpacityTransition: MGLTransition { get set }

  View Source on GitHub
- `circleStrokeWidth`

  The width of the circle’s stroke. Strokes are placed outside of the `circleRadius`.

  This property is measured in points.

  The default value of this property is an expression that evaluates to the float `0`. Set this property to `nil` to reset it to the default value.

  You can set this property to an expression containing any of the following:

  - Constant numeric values no less than 0
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable and/or feature attributes

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleStrokeWidth;

  Swift

      var circleStrokeWidth: NSExpression! { get set }

  View Source on GitHub
- `circleStrokeWidthTransition`

  The transition affecting any changes to this layer’s `circleStrokeWidth` property.

  This property corresponds to the `circle-stroke-width-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic)
          MGLTransition circleStrokeWidthTransition;

  Swift

      var circleStrokeWidthTransition: MGLTransition { get set }

  View Source on GitHub
- `circleTranslation`

  The geometry’s offset.

  This property is measured in points.

  The default value of this property is an expression that evaluates to an `NSValue` object containing a `CGVector` struct set to 0 points rightward and 0 points downward. Set this property to `nil` to reset it to the default value.

  This attribute corresponds to the `circle-translate` layout property in the Mapbox Style Specification.

  You can set this property to an expression containing any of the following:

  - Constant `CGVector` values
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Interpolation and step functions applied to the `$zoomLevel` variable

  This property does not support applying interpolation or step functions to feature attributes.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleTranslation;

  Swift

      var circleTranslation: NSExpression! { get set }

  View Source on GitHub
- `circleTranslationTransition`

  The transition affecting any changes to this layer’s `circleTranslation` property.

  This property corresponds to the `circle-translate-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic)
          MGLTransition circleTranslationTransition;

  Swift

      var circleTranslationTransition: MGLTransition { get set }

  View Source on GitHub
- `circleTranslationAnchor`

  Controls the frame of reference for `circleTranslation`.

  The default value of this property is an expression that evaluates to `map`. Set this property to `nil` to reset it to the default value.

  This property is only applied to the style if `circleTranslation` is non-`nil`. Otherwise, it is ignored.

  This attribute corresponds to the `circle-translate-anchor` layout property in the Mapbox Style Specification.

  You can set this property to an expression containing any of the following:

  - Constant `MGLCircleTranslationAnchor` values
  - Any of the following constant string values:
    - `map`: The circle is translated relative to the map.
    - `viewport`: The circle is translated relative to the viewport.
  - Predefined functions, including mathematical and string operators
  - Conditional expressions
  - Variable assignments and references to assigned variables
  - Step functions applied to the `$zoomLevel` variable

  This property does not support applying interpolation functions to the `$zoomLevel` variable or applying interpolation or step functions to feature attributes.

  #### Declaration

  Objective-C

      @property (assign, readwrite, nonatomic, null_resettable)
          NSExpression *circleTranslationAnchor;

  Swift

      var circleTranslationAnchor: NSExpression! { get set }

  View Source on GitHub