# MGLHillshadeStyleLayer

    @interface MGLHillshadeStyleLayer : MGLForegroundStyleLayer

An `MGLHillshadeStyleLayer` is a style layer that renders raster digital elevation model (DEM) tiles on the map.

Use a hillshade style layer to configure the color parameters of raster tiles loaded by an `MGLRasterDEMSource` object. For example, you could use a hillshade style layer to render Mapbox Terrain-RGB data.

To display posterized hillshading based on vector shapes, as with the Mapbox Terrain source, use an `MGLVectorTileSource` object in conjunction with several `MGLFillStyleLayer` objects.

You can access an existing hillshade 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 hillshade style layer and add it to the style using a method such as `-[MGLStyle addLayer:]`.

### Example

    let layer = MGLHillshadeStyleLayer(identifier: "hills", source: source)
    layer.hillshadeExaggeration = NSExpression(forConstantValue: 0.6)
    if let canalShadowLayer = mapView.style?.layer(withIdentifier: "waterway-river-canal-shadow") {
        mapView.style?.insertLayer(layer, below: canalShadowLayer)
    }

- `-initWithIdentifier:source:`

  Returns a hillshade 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

- `hillshadeAccentColor`

  The shading color used to accentuate rugged terrain like sharp cliffs and gorges.

  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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeAccentColor: NSExpression! { get set }

  View Source on GitHub
- `hillshadeAccentColorTransition`

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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeAccentColorTransition: MGLTransition { get set }

  View Source on GitHub
- `hillshadeExaggeration`

  Intensity of the hillshade

  The default value of this property is an expression that evaluates to the float `0.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 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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeExaggeration: NSExpression! { get set }

  View Source on GitHub
- `hillshadeExaggerationTransition`

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

  This property corresponds to the `hillshade-exaggeration-transition` property in the style JSON file format.

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeExaggerationTransition: MGLTransition { get set }

  View Source on GitHub
- `hillshadeHighlightColor`

  The shading color of areas that faces towards the light source.

  The default value of this property is an expression that evaluates to `UIColor.whiteColor`. 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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeHighlightColor: NSExpression! { get set }

  View Source on GitHub
- `hillshadeHighlightColorTransition`

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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeHighlightColorTransition: MGLTransition { get set }

  View Source on GitHub
- `hillshadeIlluminationAnchor`

  Direction of light source when map is rotated.

  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 `MGLHillshadeIlluminationAnchor` values
  - Any of the following constant string values:
    - `map`: The hillshade illumination is relative to the north direction.
    - `viewport`: The hillshade illumination is relative to the top 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 *hillshadeIlluminationAnchor;

  Swift

      var hillshadeIlluminationAnchor: NSExpression! { get set }

  View Source on GitHub
- `hillshadeIlluminationDirection`

  The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshadeIlluminationAnchor` is set to `MGLHillshadeIlluminationAnchorViewport` and due north if `hillshadeIlluminationAnchor` is set to `MGLHillshadeIlluminationAnchorMap`.

  The default value of this property is an expression that evaluates to the float `335`. 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 359 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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeIlluminationDirection: NSExpression! { get set }

  View Source on GitHub
- `hillshadeShadowColor`

  The shading color of areas that face away from the light source.

  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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeShadowColor: NSExpression! { get set }

  View Source on GitHub
- `hillshadeShadowColorTransition`

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

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

  #### Declaration

  Objective-C

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

  Swift

      var hillshadeShadowColorTransition: MGLTransition { get set }

  View Source on GitHub