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

GetViewCenter Method
Get the center point of the current extent of the map frame view. This method must be called on the MCT. Use QueuedTask.Run.
Syntax
public MapPoint GetViewCenter()

Return Value

Exceptions
ExceptionDescription
This method or property must be called within the lambda passed to QueuedTask.Run.
Remarks
Works for 2D or 3D maps associated with the frame
Example
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);
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3 or higher.
See Also