Click or drag to resize

ViewpointType Enumeration

Viewpoint type

Namespace:  Esri.ArcGISRuntime.Mapping
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.11.0
public enum ViewpointType
  Member nameValueDescription
CenterAndScale0 A center point and scale.
BoundingGeometry1 A visible area.


Example Name: GeoViewSync

Keep the view points of two views (e.g. MapView and SceneView) synchronized with each other.

Code example screen shot.

// Copyright 2017 Esri.
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.UI;
using Esri.ArcGISRuntime.UI.Controls;
using System;

namespace ArcGISRuntime.WPF.Samples.GeoViewSync
        name: "GeoView viewpoint synchronization",
        category: "SceneView",
        description: "Keep the view points of two views (e.g. MapView and SceneView) synchronized with each other.",
        instructions: "Interact with the MapView or SceneView by zooming or panning. The other MapView or SceneView will automatically focus on the same viewpoint.",
        tags: new[] { "3D", "automatic refresh", "event", "event handler", "events", "extent", "interaction", "interactions", "pan", "sync", "synchronize", "zoom" })]
    public partial class GeoViewSync
        public GeoViewSync()

            // Create the UI, setup the control references and execute initialization

        private void Initialize()
            // Initialize the MapView and SceneView with a basemap
            MyMapView.Map = new Map(BasemapStyle.ArcGISImagery);
            MySceneView.Scene = new Scene(Basemap.CreateImageryWithLabels());

            // Disable 'flick' gesture - this is the most straightforward way to prevent the 'flick'
            //     animation on one view from competing with user interaction on the other
            MySceneView.InteractionOptions = new SceneViewInteractionOptions { IsFlickEnabled = false };
            MyMapView.InteractionOptions = new MapViewInteractionOptions { IsFlickEnabled = false };

            // Subscribe to viewpoint change events for both views - event raised on click+drag
            MyMapView.ViewpointChanged += OnViewpointChanged;
            MySceneView.ViewpointChanged += OnViewpointChanged;

            // Subscribe to the navigation completed events - raised on flick
            MyMapView.NavigationCompleted += OnNavigationComplete;
            MySceneView.NavigationCompleted += OnNavigationComplete;

        private void OnNavigationComplete(object sender, EventArgs eventArgs)
            // Get a reference to the MapView or SceneView that raised the event
            GeoView sendingView = (GeoView)sender;

            // Get a reference to the other view
            GeoView otherView;
            if (sendingView is MapView)
                otherView = MySceneView;
                otherView = MyMapView;

            // Update the viewpoint on the other view

        private void OnViewpointChanged(object sender, EventArgs e)
            // Get the MapView or SceneView that sent the event
            GeoView sendingView = (GeoView)sender;

            // Only take action if this geoview is the one that the user is navigating.
            // Viewpoint changed events are fired when SetViewpoint is called; This check prevents a feedback loop
            if (sendingView.IsNavigating)
                // If the MapView sent the event, update the SceneView's viewpoint
                if (sender is MapView)
                    // Get the viewpoint
                    Viewpoint updateViewpoint = MyMapView.GetCurrentViewpoint(ViewpointType.CenterAndScale);

                    // Set the viewpoint
                else // Else, update the MapView's viewpoint
                    // Get the viewpoint
                    Viewpoint updateViewpoint = MySceneView.GetCurrentViewpoint(ViewpointType.CenterAndScale);

                    // Set the viewpoint
<UserControl x:Class="ArcGISRuntime.WPF.Samples.GeoViewSync.GeoViewSync"
             d:DesignHeight="300" d:DesignWidth="300">
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        <esri:MapView x:Name="MyMapView" Grid.Column="0" />
        <esri:SceneView x:Name="MySceneView" Grid.Column="1" />
See Also
Additional Examples
Hyperlink to ExampleDescription
AuthorMapCreate and save a map as an ArcGIS `PortalItem` (i.e. web map).
DisplayUtilityAssociationsCreate graphics for utility associations in a utility network.
EditAndSyncFeaturesSynchronize offline edits with a feature service.
ExportTilesDownload tiles to a local tile cache file stored on the device.
GenerateGeodatabaseGenerate a local geodatabase from an online feature service.
GeoViewSyncKeep the view points of two views (e.g. MapView and SceneView) synchronized with each other.
ListTransformationsGet a list of suitable transformations for projecting a geometry between two spatial references with different horizontal datums.
ManageBookmarksAccess and create bookmarks on a map.
MapImageSublayerQueryFind features in a sublayer based on attributes and location.
QueryFeatureCountAndExtentZoom to features matching a query and count the features in the current visible extent.
StatisticalQueryQuery a table to get aggregated statistics back for a specific field.