/// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public async Task <LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var position = await _geolocator.GetGeopositionAsync();

            return(position.Coordinate.ToLocationServicePosition());
        }
Example #2
0
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public async Task <LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var position = await _geolocator.GetGeopositionAsync(maximumAge, timeout);

            return(position.Coordinate.ToLocationServicePosition());
        }
        /// <summary>
        /// Starts the acquisition of data from the location service.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        public void Start(LocationServiceAccuracy desiredAccuracy)
        {
            _geolocator.DesiredAccuracy         = desiredAccuracy.ToPositionAccuracy();
            _geolocator.DesiredAccuracyInMeters = null;

            _geolocator.StatusChanged   += GeolocatorStatusChanged;
            _geolocator.PositionChanged += GeolocatorPositionChanged;
        }
Example #4
0
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/>.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public virtual async Task <LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, CancellationToken cancellationToken)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var position = await _geolocator.GetGeopositionAsync()
                           .AsTask(cancellationToken);

            return(position.Coordinate.ToLocationServicePosition());
        }
Example #5
0
        /// <summary>
        /// Retrieves the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <param name="locationResult">The current location.</param>
        public void GetPosition(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout, Action <LocationServicePosition, Exception> locationResult)
        {
            var position = LastPosition;

            if (position != null && position.Timestamp.Add(maximumAge) > DateTimeOffset.Now)
            {
                locationResult(position.ToLocationServicePosition(), null);
            }
            else
            {
                new CurrentLocationHelper(timeout, locationResult).Start(desiredAccuracy.ToGeoPositionAccuracy());
            }
        }
Example #6
0
        /// <summary>
        /// Retrieves the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="locationResult">The current location.</param>
        public async void GetPosition(LocationServiceAccuracy desiredAccuracy, Action <LocationServicePosition, Exception> locationResult)
        {
            try
            {
                var position = await GetPositionAsync(desiredAccuracy);

                locationResult(position, null);
            }
            catch (Exception ex)
            {
                locationResult(null, ex);
            }
        }
        /// <summary>
        /// Retrieves the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <param name="locationResult">The current location.</param>
        public async void GetPosition(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout, Action <LocationServicePosition, Exception> locationResult)
        {
            try
            {
                var position = await GetPositionAsync(desiredAccuracy, maximumAge, timeout).ConfigureAwait(false);

                locationResult(position, null);
            }
            catch (Exception ex)
            {
                locationResult(null, ex);
            }
        }
        public static PositionAccuracy ToPositionAccuracy(this LocationServiceAccuracy accuracy)
        {
            switch (accuracy)
            {
            case LocationServiceAccuracy.Default:
                return(PositionAccuracy.Default);

            case LocationServiceAccuracy.High:
                return(PositionAccuracy.High);

            default:
                throw new ArgumentOutOfRangeException(nameof(accuracy), accuracy, null);
            }
        }
Example #9
0
        public static GeoPositionAccuracy ToGeoPositionAccuracy(this LocationServiceAccuracy accuracy)
        {
            switch (accuracy)
            {
            case LocationServiceAccuracy.Default:
                return(GeoPositionAccuracy.Default);

            case LocationServiceAccuracy.High:
                return(GeoPositionAccuracy.High);

            default:
                throw new ArgumentOutOfRangeException("accuracy");
            }
        }
Example #10
0
        /// <summary>
        /// Starts the acquisition of data from the location service.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        public void Start(LocationServiceAccuracy desiredAccuracy)
        {
            Start(desiredAccuracy.ToGeoPositionAccuracy(), _movementThreshold);

            _timer = new DispatcherTimer()
            {
                Interval = new TimeSpan(_reportInterval)
            };

            _timer.Tick += ReportTimerTick;

            if (_reportInterval != 0)
            {
                _timer.Start();
            }
        }
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public async Task <LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var getGeopositionAsyncTask = _geolocator.GetGeopositionAsync(maximumAge, timeout).AsTask();

            var completedTask = await Task.WhenAny(getGeopositionAsyncTask, Task.Delay((int)timeout.TotalMilliseconds + 500)).ConfigureAwait(false);

            if (completedTask != getGeopositionAsyncTask)
            {
                throw new TimeoutException();
            }

            var position = getGeopositionAsyncTask.Result;

            return(position.Coordinate.ToLocationServicePosition());
        }
Example #12
0
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public Task <LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout)
        {
            var taskCompletionsSource = new TaskCompletionSource <LocationServicePosition>();

            GetPosition(maximumAge, timeout, (p, e) =>
            {
                if (p != null)
                {
                    taskCompletionsSource.SetResult(p);
                }
                else
                {
                    taskCompletionsSource.SetException(e);
                }
            });

            return(taskCompletionsSource.Task);
        }
 /// <summary>
 /// Starts an asynchronous operation to retrieve the current location.
 /// </summary>
 /// <param name="desiredAccuracy">The desired accuracy.</param>
 /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
 /// <param name="timeout">The timeout.</param>
 /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
 public virtual Task<LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout)
 {
     return GetPositionAsync(desiredAccuracy, maximumAge, timeout, CancellationToken.None);
 }
Example #14
0
 /// <summary>
 /// Retrieves the current location.
 /// </summary>
 /// <param name="desiredAccuracy">The desired accuracy.</param>
 /// <param name="locationResult">The current location.</param>
 public void GetPosition(LocationServiceAccuracy desiredAccuracy, Action <LocationServicePosition, Exception> locationResult)
 {
     new CurrentLocationHelper(TimeSpan.FromSeconds(10), locationResult).Start(desiredAccuracy.ToGeoPositionAccuracy());
 }
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public async Task<LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var position = await _geolocator.GetGeopositionAsync(maximumAge, timeout);

            return position.Coordinate.ToLocationServicePosition();
        }
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public Task<LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout)
        {
            var taskCompletionsSource = new TaskCompletionSource<LocationServicePosition>();

            GetPosition(maximumAge, timeout, (p, e) =>
            {
                if (p != null)
                {
                    taskCompletionsSource.SetResult(p);
                }
                else
                {
                    taskCompletionsSource.SetException(e);
                }
            });

            return taskCompletionsSource.Task;
        }
        /// <summary>
        /// Starts the acquisition of data from the location service.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        public void Start(LocationServiceAccuracy desiredAccuracy)
        {
            Start(desiredAccuracy.ToGeoPositionAccuracy(), _movementThreshold);

            _timer = new DispatcherTimer()
            {
                Interval = new TimeSpan(_reportInterval)
            };

            _timer.Tick += ReportTimerTick;

            if (_reportInterval != 0)
            {
                _timer.Start();
            }
        }
 /// <summary>
 /// Retrieves the current location.
 /// </summary>
 /// <param name="desiredAccuracy">The desired accuracy.</param>
 /// <param name="locationResult">The current location.</param>
 public void GetPosition(LocationServiceAccuracy desiredAccuracy, Action<LocationServicePosition, Exception> locationResult)
 {
     new CurrentLocationHelper(TimeSpan.FromSeconds(10), locationResult).Start(desiredAccuracy.ToGeoPositionAccuracy());
 }
        /// <summary>
        /// Retrieves the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <param name="locationResult">The current location.</param>
        public void GetPosition(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout, Action<LocationServicePosition, Exception> locationResult)
        {
            var position = LastPosition;

            if (position != null && position.Timestamp.Add(maximumAge) > DateTimeOffset.Now)
            {
                locationResult(position.ToLocationServicePosition(), null);
            }
            else
            {
                new CurrentLocationHelper(timeout, locationResult).Start(desiredAccuracy.ToGeoPositionAccuracy());
            }
        }
Example #20
0
 /// <summary>
 /// Starts an asynchronous operation to retrieve the current location.
 /// </summary>
 /// <param name="desiredAccuracy">The desired accuracy.</param>
 /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
 public virtual Task <LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy)
 {
     return(GetPositionAsync(desiredAccuracy, CancellationToken.None));
 }
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/>.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public virtual async Task<LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout, CancellationToken cancellationToken)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var getGeopositionAsyncTask = _geolocator.GetGeopositionAsync(maximumAge, timeout)
                .AsTask(cancellationToken);

            var completedTask = await Task.WhenAny(getGeopositionAsyncTask, Task.Delay((int)timeout.TotalMilliseconds + 500, cancellationToken)).ConfigureAwait(false);

            if (completedTask != getGeopositionAsyncTask)
            {
                throw new TimeoutException();
            }

            var position = await getGeopositionAsyncTask.ConfigureAwait(false);

            return position.Coordinate.ToLocationServicePosition();
        }
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/>.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public virtual async Task<LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, CancellationToken cancellationToken)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var position = await _geolocator.GetGeopositionAsync()
                .AsTask(cancellationToken);

            return position.Coordinate.ToLocationServicePosition();
        }
 /// <summary>
 /// Starts an asynchronous operation to retrieve the current location.
 /// </summary>
 /// <param name="desiredAccuracy">The desired accuracy.</param>
 /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
 public virtual Task<LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy)
 {
     return GetPositionAsync(desiredAccuracy, CancellationToken.None);
 }
        /// <summary>
        /// Retrieves the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
        /// <param name="timeout">The timeout.</param>
        /// <param name="locationResult">The current location.</param>
        public async void GetPosition(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout, Action<LocationServicePosition, Exception> locationResult)
        {
            try
            {
                var position = await GetPositionAsync(desiredAccuracy, maximumAge, timeout);

                locationResult(position, null);
            }
            catch (Exception ex)
            {
                locationResult(null, ex);
            }
        }
Example #25
0
 /// <summary>
 /// Starts an asynchronous operation to retrieve the current location.
 /// </summary>
 /// <param name="desiredAccuracy">The desired accuracy.</param>
 /// <param name="maximumAge">The maximum acceptable age of cached location data.</param>
 /// <param name="timeout">The timeout.</param>
 /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
 public virtual Task <LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy, TimeSpan maximumAge, TimeSpan timeout)
 {
     return(GetPositionAsync(desiredAccuracy, maximumAge, timeout, CancellationToken.None));
 }
        /// <summary>
        /// Starts an asynchronous operation to retrieve the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <returns>The <see cref="Task"/> object representing the asynchronous operation.</returns>
        public async Task<LocationServicePosition> GetPositionAsync(LocationServiceAccuracy desiredAccuracy)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();

            var position = await _geolocator.GetGeopositionAsync();

            return position.Coordinate.ToLocationServicePosition();
        }
        /// <summary>
        /// Starts the acquisition of data from the location service.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        public virtual void Start(LocationServiceAccuracy desiredAccuracy)
        {
            _geolocator.DesiredAccuracy = desiredAccuracy.ToPositionAccuracy();
            _geolocator.DesiredAccuracyInMeters = null;

            _geolocator.StatusChanged += GeolocatorStatusChanged;
            _geolocator.PositionChanged += GeolocatorPositionChanged;
        }
        /// <summary>
        /// Retrieves the current location.
        /// </summary>
        /// <param name="desiredAccuracy">The desired accuracy.</param>
        /// <param name="locationResult">The current location.</param>
        public async void GetPosition(LocationServiceAccuracy desiredAccuracy, Action<LocationServicePosition, Exception> locationResult)
        {
            try
            {
                var position = await GetPositionAsync(desiredAccuracy);

                locationResult(position, null);
            }
            catch (Exception ex)
            {
                locationResult(null, ex);
            }
        }