ArcGIS Pro 3.0 API Reference Guide
ArcGIS.Desktop.Layouts Namespace / MapFrame Class / SetCamera Method / SetCamera(IEnumerable<Layer>,Boolean) Method
A list of layers.
Example

In This Topic
    SetCamera(IEnumerable<Layer>,Boolean) Method
    In This Topic
    Sets the map frame extent using the extent of multiple layers. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Public Overloads Sub SetCamera( _
       ByVal layers As IEnumerable(Of Layer), _
       Optional ByVal useSelectedFeatures As Boolean _
    ) 

    Parameters

    layers
    A list of layers.
    useSelectedFeatures
    Exceptions
    ExceptionDescription
    This method or property must be called within the lambda passed to QueuedTask.Run.
    Remarks
    SetCamera will have no effect a map frame's extent being driven by a map series.
    Example
    Change map frame extent to selected features in multiple layers
    //Change the extent of a map frame to the selected features multiple layers.
    
    //Perform on the worker thread
    await QueuedTask.Run(() =>
    {
      //Reference MapFrame
      MapFrame mf = layout.FindElement("Map Frame") as MapFrame;
    
      //Reference map, layers and create layer list
      Map m = mf.Map;
      FeatureLayer fl_1 = m.FindLayers("GreatLakes").First() as FeatureLayer;
      FeatureLayer fl_2 = m.FindLayers("States_WithRegions").First() as FeatureLayer;
      var layers = new[] { fl_1, fl_2 };
      //IEnumerable<Layer> layers = m.Layers;  //This creates a list of ALL layers in map.
    
      //Set the map frame extent to the selected features in the list of layers
      mf.SetCamera(layers, true);
    });
    Change map frame extent to single feature with 15 percent buffer
    //Change map frame extent to single feature with 10 percent buffer
    
    //Process on the worker thread
    await QueuedTask.Run(() =>
    {
      //Reference the mapframe and its associated map
      MapFrame mf = layout.FindElement("Map Frame") as MapFrame;
      Map m = mf.Map;
    
      //Reference a feature layer and build a query (to return a single feature)
      FeatureLayer fl = m.FindLayers("GreatLakes").First() as FeatureLayer;
      QueryFilter qf = new QueryFilter();
      string whereClause = "NAME = 'Lake Erie'";
      qf.WhereClause = whereClause;
    
      //Zoom to the feature
      using (ArcGIS.Core.Data.RowCursor rowCursor = fl.Search(qf))
      {
        while (rowCursor.MoveNext())
        {
          //Get the shape from the row and set extent
          using (var feature = rowCursor.Current as ArcGIS.Core.Data.Feature)
          {
            Polygon polygon = feature.GetShape() as Polygon;
            Envelope env = polygon.Extent as Envelope;
            mf.SetCamera(env);
    
            //Zoom out 15 percent
            Camera cam = mf.Camera;
            cam.Scale = cam.Scale * 1.15;
            mf.SetCamera(cam);
          }
        }
      }
    });
    Requirements

    Target Platforms: Windows 11, Windows 10, Windows 8.1

    See Also