Display your current position on the map, as well as switch between different types of auto pan modes.
Use case
When using a map within a GIS, it may be helpful for a user to know their own location within a map, whether that's to aid the user's navigation or to provide an easy means of identifying/collecting geospatial information at their location.
How to use the sample
Select an autopan mode, then use the button to start and stop location display.
How it works
Create a MapView.
Set the LocationDisplay.AutoPanMode that corresponds with the selected element of the combo box.
Set the LocationDisplay.IsEnabled bool from the MapView to true.
Set the LocationDisplay.IsEnabled bool from the MapView to false when the stop button is pressed.
Relevant API
LocationDisplay
LocationDisplay.AutoPanMode
Map
MapView
Additional information
Location permissions are required for this sample.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
// Copyright 2018 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: http://www.apache.org/licenses/LICENSE-2.0//// 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 Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using System.Collections.Generic;
namespaceArcGIS.WinUI.Samples.DisplayDeviceLocation{
[ArcGIS.Samples.Shared.Attributes.Sample(
name: "Display device location with autopan modes",
category: "Location",
description: "Display your current position on the map, as well as switch between different types of auto pan modes.",
instructions: "Select an autopan mode, then use the button to start and stop location display.",
tags: new[] { "GPS", "compass", "location", "map", "mobile", "navigation" })]
publicpartialclassDisplayDeviceLocation {
// Dictionary to store the different auto pan modes.privatereadonly Dictionary<string, LocationDisplayAutoPanMode> _autoPanModes = new()
{
{ "AutoPan Off", LocationDisplayAutoPanMode.Off },
{ "Re-Center", LocationDisplayAutoPanMode.Recenter },
{ "Navigation", LocationDisplayAutoPanMode.Navigation },
{ "Compass", LocationDisplayAutoPanMode.CompassNavigation }
};
publicDisplayDeviceLocation() {
InitializeComponent();
Initialize();
}
privatevoidInitialize() {
// Add event handler for when this sample is unloaded. Unloaded += SampleUnloaded;
// Assign the map to the MapView. MyMapView.Map = new Map(BasemapStyle.ArcGISImageryStandard);
// Populate the combo box with auto pan modes. AutoPanModeComboBox.ItemsSource = _autoPanModes.Keys;
// Update the UI when the user pans the view, changing the location mode. MyMapView.LocationDisplay.AutoPanModeChanged += (sender, args) =>
{
if (MyMapView.LocationDisplay.AutoPanMode == LocationDisplayAutoPanMode.Off)
{
AutoPanModeComboBox.SelectedItem = "AutoPan Off";
}
};
}
privatevoidAutoPanModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {
// Change the auto pan mode based on the new selection. MyMapView.LocationDisplay.AutoPanMode = _autoPanModes[AutoPanModeComboBox.SelectedItem.ToString()];
}
privatevoidStartStopButton_Clicked(object sender, RoutedEventArgs e) {
// Enable or disable the location display. MyMapView.LocationDisplay.IsEnabled = !MyMapView.LocationDisplay.IsEnabled;
StartStopButton.Content = MyMapView.LocationDisplay.IsEnabled ? "Stop" : "Start";
}
privatevoidSampleUnloaded(object sender, RoutedEventArgs e) {
// Stop the location data source. MyMapView.LocationDisplay?.DataSource?.StopAsync();
}
}
}