GetGeopositionAsync(TimeSpan, TimeSpan) | getGeopositionAsync(TimeSpan, TimeSpan) method
Collapse the table of content
Expand the table of content

Geolocator.GetGeopositionAsync(TimeSpan, TimeSpan) | getGeopositionAsync(TimeSpan, TimeSpan) method

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


public IAsyncOperation<Geoposition> GetGeopositionAsync(
  TimeSpan maximumAge, 
  TimeSpan timeout



Type: Number [JavaScript] | System.TimeSpan [.NET] | Windows::Foundation::TimeSpan [C++]

The maximum acceptable age of cached location data. A TimeSpan is a time period expressed in 100-nanosecond units.


Type: Number [JavaScript] | System.TimeSpan [.NET] | Windows::Foundation::TimeSpan [C++]

The timeout. A TimeSpan is a time period expressed in 100-nanosecond units.

Return value

Type: IAsyncOperation<Geoposition>

An asynchronous operation that, upon completion, returns a Geoposition marking the found location.


This method throws an exception if the app doesn't have location permissions or if it times out with no location data retrieved. Therefore, the method should be called within a try/catch statement so that these common exception cases can be handled.

A location will be returned immediately if the latest location is within an acceptable age. Otherwise, a location will not be returned until the next change. In some cases, your app may receive location data that is older than the specified maximumAge value. This is because an additional age value will be calculated based on the desired accuracy setting, and your app will use whichever of the two ages is larger. For example, say a default accuracy of 500 meters corresponds to a maximum age of 30 seconds. In that case, your app could receive 20 second old data even if you set maximumAge to 10 seconds.

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)
  • The location services setting, Location, is turned on
  • Under Choose apps that can use your location, your app is set to on

Starting in Windows 10, 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. Your app can then handle the no-permissions case without throwing an exception.


Requirements (Windows 10 device family)

Device family

Universal, introduced version 10.0.10240.0

API contract

Windows.Foundation.UniversalApiContract, introduced version 1.0


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




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


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




ID_CAP_LOCATION [Windows Phone]

See also

Get current location
Get current location
Set up a geofence
geolocation sample



© 2017 Microsoft