/// <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 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; }
/// <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> /// 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()); } }
/// <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); } }
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"); } }
/// <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()); }
/// <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); }
/// <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> /// 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()); } }
/// <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); } }
/// <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); } }