ArcGIS Pro 3.7 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 Function GetAutoCamera() As CIMAutoCamera
    public CIMAutoCamera GetAutoCamera()

    Return Value

    CIMAutoCamera
    Remarks
    The auto camera is used to set map frame display constraints
    Example
    SetAutoCameraNone
    {
      //Note: Must be on QueuedTask.Run
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.None;
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraFixedExtent
    {
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.Fixed;
      autoCamera.AutoCameraType = AutoCameraType.Extent;
    
      var mf_extent = mapFrame.GetViewExtent();
    
      var extent = EnvelopeBuilderEx.CreateEnvelope(
        400748.62, 800296.4, 1310669.05, 1424520.74, mapFrame.Map.SpatialReference);
      autoCamera.Extent = extent;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraFixedCenter
    {
      //Note: run within the QueuedTask
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.Fixed;
      autoCamera.AutoCameraType = AutoCameraType.Center;
    
      var camera = mapFrame.GetMapView(LayoutView.Active).Camera;
      var center = mapFrame.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 = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      autoCamera.IntersectLayerPath = states.URI;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraFixedScale
    {
      //Note: run within the QueuedTask
    
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.Fixed;
      autoCamera.AutoCameraType = AutoCameraType.Scale;
    
      var camera = mapFrame.GetMapView(LayoutView.Active).Camera;
      var center = mapFrame.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 = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      //autoCamera.IntersectLayerPath = states.URI;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    
    }
    SetAutoCameraLinkedExtent
    {
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.MapFrameLink;
      autoCamera.AutoCameraType = AutoCameraType.Extent;
      autoCamera.MapFrameLinkName = "mapFrameLink";
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraLinkedCenter
    {
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.MapFrameLink;
      autoCamera.AutoCameraType = AutoCameraType.Center;
      autoCamera.MapFrameLinkName = "mapFrameLink";
      var states = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      autoCamera.IntersectLayerPath = states.URI;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraLinkedCenterAndScale
    {
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.MapFrameLink;
      autoCamera.AutoCameraType = AutoCameraType.CenterAndScale;
      autoCamera.MapFrameLinkName = "mapFrameLink";
      var states = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      autoCamera.IntersectLayerPath = states.URI;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraLinkedScale
    {
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.MapFrameLink;
      autoCamera.AutoCameraType = AutoCameraType.Scale;
      autoCamera.MapFrameLinkName = "mapFrameLink";
      var states = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      autoCamera.IntersectLayerPath = states.URI;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraLinkedMapSeriesShape
    {
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.MapSeriesLink;
      autoCamera.AutoCameraType = AutoCameraType.Extent;
      //autoCamera.MapFrameLinkName = mapFrameLink;
      var states = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      autoCamera.IntersectLayerPath = states.URI;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraLinkedMapSeriesCenter
    {
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.MapSeriesLink;
      autoCamera.AutoCameraType = AutoCameraType.Center;
    
      var states = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      autoCamera.IntersectLayerPath = states.URI;
    
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    SetAutoCameraFixedCenterAndScale
    {
      //Note: run within the QueuedTask
      var autoCamera = mapFrame.GetAutoCamera();
      autoCamera.Source = AutoCameraSource.Fixed;
      autoCamera.AutoCameraType = AutoCameraType.CenterAndScale;
    
      var camera = mapFrame.GetMapView(LayoutView.Active).Camera;
      var center = mapFrame.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 = mapFrame.Map.GetLayersAsFlattenedList().First(l => l.Name == "State_Polygons");
      //autoCamera.IntersectLayerPath = states.URI;
      if (mapFrame.ValidateAutoCamera(autoCamera) &&
        !mapFrame.IsMapSeriesMapFrame())
        mapFrame.SetAutoCamera(autoCamera);
    }
    Requirements

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

    ArcGIS Pro version: 3.0 or higher.
    See Also