public static async Task GetCurrentLocationAsync()

in LocationHelper/LocationHelper.cs [65:97]


        public static async Task<LocationData> GetCurrentLocationAsync()
        {
            try
            {
                // Request permission to access the user's location.
                var accessStatus = await Geolocator.RequestAccessAsync();

                switch (accessStatus)
                {
                    case GeolocationAccessStatus.Allowed:

                        LocationHelper.CancellationTokenSource = new CancellationTokenSource();
                        var token = LocationHelper.CancellationTokenSource.Token;

                        Geoposition position = await Geolocator.GetGeopositionAsync().AsTask(token);
                        return new LocationData { Position = position.Coordinate.Point.Position };

                    case GeolocationAccessStatus.Denied: 
                    case GeolocationAccessStatus.Unspecified:
                    default:
                        return null;
                }
            }
            catch (TaskCanceledException)
            {
                // Do nothing.
            }
            finally
            {
                LocationHelper.CancellationTokenSource = null;
            }
            return null;
        }