ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Desktop.Mapping Namespace / FeatureLayer Class / GetRenderer Method / GetRenderer(FeatureRendererTarget) Method
A FeatureRendererTarget indicating the intended usage of the resulting renderer.
Example

In This Topic
    GetRenderer(FeatureRendererTarget) Method
    In This Topic
    Returns the renderer used to draw the feature layer This method must be called on the MCT. Use QueuedTask.Run.
    Syntax

    Parameters

    featureRendererTarget
    A FeatureRendererTarget indicating the intended usage of the resulting renderer.

    Return Value

    Exceptions
    ExceptionDescription
    This method or property must be called within the lambda passed to QueuedTask.Run.
    Remarks
    Intended for use with StreamLayer. For non-stream layer types use FeatureRendererTarget.Default.
    Example
    Modify renderer using Arcade
    {
      // Note: the following should be embedded in a QueuedTask.Run() statement
      {
        // GetRenderer from Layer (assumes it is a unique value renderer)
        if (featureLayer.GetRenderer() is not CIMUniqueValueRenderer uvRenderer)
        {
          // not a unique value renderer, leave
          return;
        }
        //layer has STATE_NAME field if using the community sample Data\Admin\AdminSample.aprx
        string expression = "if ($view.scale > 21000000) { return $feature.STATE_NAME } else { return 'All' }";
        CIMExpressionInfo updatedExpressionInfo = new()
        {
          Expression = expression,
          Title = "Custom" // can be any string used for UI purpose.
        };
        //set the renderer's expression
        uvRenderer.ValueExpressionInfo = updatedExpressionInfo;
    
        //SetRenderer on Layer
        featureLayer.SetRenderer(uvRenderer);
      }
    }
    How to set symbol for a feature layer symbolized with simple renderer
    {
        //Note: Needs QueuedTask to run
        //Get simple renderer from the feature layer
        CIMSimpleRenderer currentRenderer = featureLayer.GetRenderer() as CIMSimpleRenderer;
        if (currentRenderer == null)
            return;
    
        //Set symbol's real world setting to be the same as that of the feature layer
        symbol.SetRealWorldUnits(featureLayer.UsesRealWorldSymbolSizes);
    
        //Update the symbol of the current simple renderer
        currentRenderer.Symbol = symbol.MakeSymbolReference();
        //Update the feature layer renderer
        featureLayer.SetRenderer(currentRenderer);
    }
    How to apply a symbol from style to a feature layer
    {
        //Note: Needs QueuedTask to run
        //Get simple renderer from the feature layer
        CIMSimpleRenderer currentRenderer = featureLayer.GetRenderer() as CIMSimpleRenderer;
        if (currentRenderer == null)
            return;
        //Get symbol from the SymbolStyleItem
        CIMSymbol symbolToApply = symbolStyleItem.Symbol;
    
        //Set symbol's real world setting to be the same as that of the feature layer
        symbolToApply.SetRealWorldUnits(featureLayer.UsesRealWorldSymbolSizes);
    
        //Update the symbol of the current simple renderer
        currentRenderer.Symbol = symbolToApply.MakeSymbolReference();
        //Update the feature layer renderer
        featureLayer.SetRenderer(currentRenderer);
    }
    How to apply a point symbol from a style to a feature layer
    {
          //Get the ArcGIS 2D System style from the Project
          var arcGIS2DStyle =
    Project.Current.GetItems<StyleProjectItem>().FirstOrDefault(s => s.Name == "ArcGIS 2D");
    
          //Note: Needs QueuedTask to run
          //Search for the symbolName style items within the ArcGIS 2D style project item.
          var items = arcGIS2DStyle.SearchSymbols(StyleItemType.PointSymbol, "Circle 1");
    
          //Gets the CIMSymbol
          CIMSymbol symbolToUse = items.FirstOrDefault().Symbol;
    
          //Get the renderer of the point feature layer
          CIMSimpleRenderer renderer = featureLayer.GetRenderer() as CIMSimpleRenderer;
    
          //Set symbol's real world setting to be the same as that of the feature layer
          symbolToUse.SetRealWorldUnits(featureLayer.UsesRealWorldSymbolSizes);
    
          //Apply the symbol to the feature layer's current renderer
          renderer.Symbol = symbolToUse.MakeSymbolReference();
    
          //Apply the renderer to the feature layer
          featureLayer.SetRenderer(renderer);
      }
    Apply Symbology from a Layer in the TOC
    {
        //Note: Call within QueuedTask.Run()
        if (MapView.Active.Map == null) return;
    
        //Get an existing Layer. This layer has a symbol you want to use in a new layer.
        var lyr = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>()
              .Where(l => l.ShapeType == esriGeometryType.esriGeometryPoint).FirstOrDefault();
        //This is the renderer to use in the new Layer
        var renderer = lyr.GetRenderer() as CIMSimpleRenderer;
        //Set the DataConnection for the new layer
        Geodatabase geodatabase = new Geodatabase(
          new FileGeodatabaseConnectionPath(new Uri(@"E:\Data\Admin\AdminData.gdb")));
        FeatureClass featureClass = geodatabase.OpenDataset<FeatureClass>("Cities");
        var dataConnection = featureClass.GetDataConnection();
        //Create the definition for the new feature layer
        var featureLayerParams = new FeatureLayerCreationParams(dataConnection)
        {
            RendererDefinition = new SimpleRendererDefinition(renderer.Symbol),
            IsVisible = true,
        };
        //create the new layer
        LayerFactory.Instance.CreateLayer<FeatureLayer>(
          featureLayerParams, MapView.Active.Map);
    }
    Retrieve the previous observation renderer
    {
      //The layer must be track aware and spatial
      if (streamLayer.TrackType != TrackType.Spatial)
      {
        // not track aware and spatial
      }
      // Note: call within QueuedTask.Run()
      {
        var prev_renderer = streamLayer.GetRenderer(
        FeatureRendererTarget.PreviousObservations);
      }
    }
    Retrieve the track lines renderer
    {
      //The layer must be track aware and spatial
      if (streamLayer.TrackType != TrackType.Spatial)
      {
    
      }
    
      // Note: call within QueuedTask.Run()
      {
        var track_renderer = streamLayer.GetRenderer(
          FeatureRendererTarget.TrackLines);
      }
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also