ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Layouts Namespace / MapFrame Class / GetAutoCamera Method
Example

In This Topic
    GetAutoCamera Method
    In This Topic
    Gets the auto camera associated with the map frame
    Syntax
    public CIMAutoCamera GetAutoCamera()
    Public Function GetAutoCamera() As CIMAutoCamera

    Return Value

    CIMAutoCamera
    Remarks
    The auto camera is used to set map frame display constraints
    Example
    SetAutoCameraNone
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.None;
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraFixedExtent
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.Fixed;
    autoCamera.AutoCameraType = AutoCameraType.Extent;
    
    var mf_extent = mf.GetViewExtent();
    
    var extent = EnvelopeBuilderEx.CreateEnvelope(
      400748.62, 800296.4, 1310669.05, 1424520.74, mf.Map.SpatialReference);
    autoCamera.Extent = extent;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraFixedCenter
    //Note: run within the QueuedTask
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.Fixed;
    autoCamera.AutoCameraType = AutoCameraType.Center;
    
    var camera = mf.GetMapView(LayoutView.Active).Camera;
    var center = mf.GetViewCenter();
    
    //var extent = EnvelopeBuilderEx.CreateEnvelope(
    //    400748.62, 800296.4, 1310669.05, 1424520.74, mf.Map.SpatialReference);
    //autoCamera.Extent = extent;
    
    var camera2 = new CIMViewCamera()
    {
      Heading = 0,
      Pitch = -90,
      Roll = 0,
      Scale = 21169571,
      X = 855708,
      Y = 1112409,
      Z = double.NaN
    };
    autoCamera.Camera = camera2;
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    autoCamera.IntersectLayerPath = states.URI;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraFixedCenterAndScale
    //Note: run within the QueuedTask
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.Fixed;
    autoCamera.AutoCameraType = AutoCameraType.CenterAndScale;
    
    var camera = mf.GetMapView(LayoutView.Active).Camera;
    var center = mf.GetViewCenter();
    
    //var extent = EnvelopeBuilderEx.CreateEnvelope(
    //    400748.62, 800296.4, 1310669.05, 1424520.74, mf.Map.SpatialReference);
    //autoCamera.Extent = extent;
    
    var camera2 = new CIMViewCamera()
    {
      Heading = 0,
      Pitch = -90,
      Roll = 0,
      Scale = 21169571,
      X = 1310669.0 + ((400748.5 - 1310669.0) / 2.0),
      Y = 800296.4 + ((1424520.74 - 800296.4) / 2.0),
      Z = double.NaN
    };
    autoCamera.Camera = camera2;
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    //autoCamera.IntersectLayerPath = states.URI;
    
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraFixedScale
    //Note: run within the QueuedTask
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.Fixed;
    autoCamera.AutoCameraType = AutoCameraType.Scale;
    
    var camera = mf.GetMapView(LayoutView.Active).Camera;
    var center = mf.GetViewCenter();
    
    //var extent = EnvelopeBuilderEx.CreateEnvelope(
    //    400748.62, 800296.4, 1310669.05, 1424520.74, mf.Map.SpatialReference);
    //autoCamera.Extent = extent;
    
    var camera2 = new CIMViewCamera()
    {
      Heading = 0,
      Pitch = -90,
      Roll = 0,
      Scale = 20000571,
      X = 1310669.0 + ((400748.5 - 1310669.0) / 2.0),
      Y = 800296.4 + ((1424520.74 - 800296.4) / 2.0),
      Z = double.NaN
    };
    autoCamera.Camera = camera2;
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    //autoCamera.IntersectLayerPath = states.URI;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraLinkedExtent
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.MapFrameLink;
    autoCamera.AutoCameraType = AutoCameraType.Extent;
    autoCamera.MapFrameLinkName = mapFrameLink;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraLinkedCenter
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.MapFrameLink;
    autoCamera.AutoCameraType = AutoCameraType.Center;
    autoCamera.MapFrameLinkName = mapFrameLink;
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    autoCamera.IntersectLayerPath = states.URI;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraLinkedCenterAndScale
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.MapFrameLink;
    autoCamera.AutoCameraType = AutoCameraType.CenterAndScale;
    autoCamera.MapFrameLinkName = mapFrameLink;
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    autoCamera.IntersectLayerPath = states.URI;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraLinkedScale
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.MapFrameLink;
    autoCamera.AutoCameraType = AutoCameraType.Scale;
    autoCamera.MapFrameLinkName = mapFrameLink;
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    autoCamera.IntersectLayerPath = states.URI;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraLinkedMapSeriesShape
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.MapSeriesLink;
    autoCamera.AutoCameraType = AutoCameraType.Extent;
    //autoCamera.MapFrameLinkName = mapFrameLink;
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    autoCamera.IntersectLayerPath = states.URI;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    SetAutoCameraLinkedMapSeriesCenter
    var layout = LayoutView.Active.Layout;
    var mf = layout.GetElementsAsFlattenedList().OfType<MapFrame>()
      .First(mf => mf.Name == mapFrame);
    var autoCamera = mf.GetAutoCamera();
    autoCamera.Source = AutoCameraSource.MapSeriesLink;
    autoCamera.AutoCameraType = AutoCameraType.Center;
    
    var states = mf.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
    autoCamera.IntersectLayerPath = states.URI;
    
    if (mf.ValidateAutoCamera(autoCamera) &&
      !mf.IsMapSeriesMapFrame())
      mf.SetAutoCamera(autoCamera);
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also