Windows Dev Center

Geolocator.GetGeopositionAsync() | getGeopositionAsync() method

Starts an asynchronous operation to retrieve the current location of the device.

Syntax


public IAsyncOperation<Geoposition> GetGeopositionAsync()

Parameters

This method has no parameters.

Return value

Type: IAsyncOperation<Geoposition>

Provides methods for starting the asynchronous request for location data and handling its completion.

Remarks

This method times out after 60 seconds, except when in Connected Standby. During Connected Standby, Geolocator objects can be instantiated but the Geolocator object will not find any sensors to aggregate and calls to GetGeopositionAsync will time out after 7 seconds. Upon time out, the StatusChanged event listeners will be called once with the NoData status, and the PositionChanged event listeners will never be called.

Tip  When using the emulator, don't forget to change the location to trigger the PositionChanged event.

The user sets the privacy of their location data with the location privacy settings in the Settings app. Your app can access the user's location only when:

  • Location for this device... is turned on (not applicable to Windows 10 Mobile Insider Preview)
  • The location services setting, Location, is turned on
  • Under Choose apps that can use your location, your app is set to on
Important  

Starting in Windows 10 Insider Preview, call the RequestAccessAsync before accessing the user’s location. At that time, your app must be in the foreground and RequestAccessAsync must be called from the UI thread. Until the user grants your app permission to their location, your app can't access location data.

Examples

This example shows how to call GetGeopositionAsync.


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Windows.UI.Core;
using Windows.Devices.Geolocation;
using System.Threading;
using System.Threading.Tasks;

namespace GeolocationApp
{
    public sealed partial class MainPage : Page
    {
        private Geolocator geolocator = null;

        public MainPage()
        {
            this.InitializeComponent();
            geolocator = new Geolocator();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            btnGetLocation.IsEnabled = true;
        }


        async private void btnGetLocation_Click(object sender, RoutedEventArgs e)
        {
            btnGetLocation.IsEnabled = false;

            try
            {
                // Carry out the operation
                Geoposition pos = await geolocator.GetGeopositionAsync();

                tbLatitude.Text = pos.Coordinate.Latitude.ToString();
                tbLongitude.Text = pos.Coordinate.Longitude.ToString();
                tbAccuracy.Text = pos.Coordinate.Accuracy.ToString();
                tbStatus.Text = GetStatusString(geolocator.LocationStatus);
            }
            catch (System.UnauthorizedAccessException)
            {
                tbLatitude.Text = "No data";
                tbLongitude.Text = "No data";
                tbAccuracy.Text = "No data";
                tbStatus.Text = "No data";
            }
            catch (TaskCanceledException)
            {
                tbLatitude.Text = "Cancelled";
                tbLongitude.Text = "Cancelled";
                tbAccuracy.Text = "Cancelled";
                tbStatus.Text = "Cancelled";
            }

            btnGetLocation.IsEnabled = true;
        }


         private string GetStatusString(PositionStatus status)
        {
                var strStatus = "";

                switch (status)
                {
                    case PositionStatus.Ready:
                        strStatus = "Location is available.";
                        break;

                    case PositionStatus.Initializing:
                        strStatus = "Geolocation service is initializing.";
                        break;

                    case PositionStatus.NoData:
                        strStatus = "Location service data is not available.";
                        break;

                    case PositionStatus.Disabled:
                        strStatus = "Location services are disabled. Use the " +
                                    "Settings charm to enable them.";
                        break;

                    case PositionStatus.NotInitialized:
                        strStatus = "Location status is not initialized because " +
                                    "the app has not yet requested location data.";
                        break;

                    case PositionStatus.NotAvailable:
                        strStatus = "Location services are not supported on your system.";
                        break;

                    default:
                        strStatus = "Unknown PositionStatus value.";
                        break;
                }

                return (strStatus);

        }

    }
}



Requirements (Windows 10 device family)

Device family

Universal

API contract

Windows.Foundation.UniversalApiContract, introduced version 1.0

Namespace

Windows.Devices.Geolocation
Windows::Devices::Geolocation [C++]

Metadata

Windows.Foundation.UniversalApiContract.winmd

Capabilities

ID_CAP_LOCATION [Windows Phone]

Requirements (Windows 8.x and Windows Phone 8.x)

Minimum supported client

Windows 8

Minimum supported server

None supported

Minimum supported phone

Windows Phone 8

Namespace

Windows.Devices.Geolocation
Windows::Devices::Geolocation [C++]

Metadata

Windows.winmd

Capabilities

ID_CAP_LOCATION [Windows Phone]

See also

Detect a user's location
Respond to location updates
Set up a geofence
Geoposition
Geocoordinate
Geolocator
GetGeopositionAsync(TimeSpan, TimeSpan)
geolocation sample

 

 

Show:
© 2015 Microsoft