Esempio n. 1
0
        public static async Task GetPosition(PositionAccuracy accuracy, int timeout)
        {
            if (App.Settings.LocationServiceEnabled)
            {
                var geolocater = new Geolocator { DesiredAccuracy = accuracy };

                try
                {
                    var geoposition =
                        await geolocater.GetGeopositionAsync(TimeSpan.FromMinutes(2), TimeSpan.FromSeconds(timeout)
                                  );

                    App.ViewModel.CurrentPosition = new Position
                        {
                            Latitude = geoposition.Coordinate.Latitude,
                            Longitude = geoposition.Coordinate.Longitude,
                            Accuracy = geoposition.Coordinate.Accuracy,
                            Timestamp = geoposition.Coordinate.Timestamp.DateTime
                        };
                }
                catch (TimeoutException ex)
                {
                    BugSenseHandler.Instance.LogException(ex);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(AppResources.ErrorLocationTitle, AppResources.ErrorTitle, MessageBoxButton.OK);
                }
            }
        }
        public static async Task <Geoposition> GetGeoposition(PositionAccuracy acc, TimeSpan timeout)
        {
            var loc = new Geolocator();

            loc.DesiredAccuracy = acc;
            var result = (await loc.GetGeopositionAsync(TimeSpan.FromSeconds(30), timeout));

            SettingsManager.SetSetting <double[]>("LastLocation", true, new double[] { result.Coordinate.Point.Position.Latitude, result.Coordinate.Point.Position.Longitude });
            return(result);
        }
Esempio n. 3
0
        public static async Task <BasicGeoposition?> GetCurrentLocation(PositionAccuracy acc)
        {
            var loc = new Geolocator();

            try
            {
                loc.DesiredAccuracy = acc;
                var result = (await loc.GetGeopositionAsync()).Coordinate.Point.Position;
                SettingsManager.SetSetting <double[]>("LastLocation", true, new double[] { result.Latitude, result.Longitude });
                return(result);
            }
            catch (Exception) { }
            return(null);
        }
        public static LocationServiceAccuracy ToLocationServiceAccuracy(this PositionAccuracy positionAccuracy)
        {
            switch (positionAccuracy)
            {
            case PositionAccuracy.Default:
                return(LocationServiceAccuracy.Default);

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

            default:
                throw new ArgumentOutOfRangeException(nameof(positionAccuracy), positionAccuracy, null);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// Get the current position from OS.
        /// </summary>
        public async Task GetCurrentLocation(PositionAccuracy accuracy = PositionAccuracy.High)
        {
            FSLog.Debug();

            var locator = new Geolocator();

            locator.DesiredAccuracy = accuracy;
            if (accuracy == PositionAccuracy.High)
            {
                locator.DesiredAccuracyInMeters = 10;
                locator.MovementThreshold       = 10;
                locator.ReportInterval          = 5000;
            }
            else
            {
                // Get inaccurate rough position( something else than Africa )
                locator.DesiredAccuracyInMeters = 2000;
                locator.MovementThreshold       = 1000;
                locator.ReportInterval          = 1;
            }

            try
            {
                Geoposition geoposition = await locator.GetGeopositionAsync(
                    maximumAge : TimeSpan.FromMinutes(60),
                    timeout : TimeSpan.FromSeconds(30)
                    );

                if (geoposition != null)
                {
                    OnNewPosition(geoposition, isForced: true);
                }
                else
                {
                    FSLog.Warning("Failed to get position");
                }
            }
            catch (Exception ex)
            {
                if ((uint)ex.HResult == 0x80004004)
                {
                    FSLog.Warning("User has disabled location services or power save");
                }
                //else
                {
                    FSLog.Exception(ex);
                    // something else happened acquring the location
                }
            }
        }
Esempio n. 6
0
        public async Task <Geoposition> GetUserLocation(PositionAccuracy accuracy)
        {
            // Get cancellation token
            _cts = new CancellationTokenSource();
            CancellationToken token = _cts.Token;

            // Carry out the operation
            // geolocator and location permissions are initialized and checked on page creation.
            var geolocator = new Geolocator();

            // Request a high accuracy position for better accuracy locating the geofence
            geolocator.DesiredAccuracy = accuracy;

            return(await geolocator.GetGeopositionAsync().AsTask(token));
        }
Esempio n. 7
0
        public async Task <GeoAddress> GetCurrentLocation(PositionAccuracy accuracy = PositionAccuracy.Default)
        {
            if (locator.LocationStatus == PositionStatus.Disabled || locator.LocationStatus == PositionStatus.NotAvailable)
            {
                return(null);
            }

            locator.DesiredAccuracy = accuracy;
            var location = await locator.GetGeopositionAsync();

            return(new GeoAddress()
            {
                Latitude = location?.Coordinate?.Point?.Position.Latitude,
                Longitude = location?.Coordinate?.Point?.Position.Longitude,
                Country = location?.CivicAddress?.Country,
                Locality = location?.CivicAddress?.City
            });
        }
Esempio n. 8
0
 public static Core.Geolocation.PositionAccuracy AsTrackTimerModel(this PositionAccuracy accuracy)
 {
     return((Core.Geolocation.PositionAccuracy)(int) accuracy);
 }
Esempio n. 9
0
 public static async Task<BasicGeoposition?> GetCurrentLocation(PositionAccuracy acc)
 {
     var loc = new Geolocator();
     try
     {
         loc.DesiredAccuracy = acc;
         var result = (await loc.GetGeopositionAsync()).Coordinate.Point.Position;
         SettingsManager.SetSetting<double[]>("LastLocation", true, new double[] { result.Latitude, result.Longitude });
         return result;
     }
     catch (Exception) { }
     return null;
 }
Esempio n. 10
0
 public static async Task <LatLon?> GetCurrentLocation(PositionAccuracy acc, TimeSpan timeout)
 {
     return((await GetGeoposition(acc, timeout)).Coordinate.Point.ToLatLon());
 }