| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 | //using System;//using System.Collections.Generic;//using System.Linq;//using System.Text;//using System.Threading.Tasks;//namespace InABox.Avalonia//{    // public class GPSLocation    // {    //     // public delegate void LocationEvent(GPSLocation sender);    //     // public event LocationEvent? OnLocationFound;    //    //     // public delegate void LocationError(GPSLocation sender, Exception error);    //     // public event LocationError? OnLocationError;    //    //     public TimeSpan ScanDelay { get; set; }    //    //     public double Latitude { get; private set; }    //     public double Longitude { get; private set; }    //     public String Address { get; private set; }    //    //     // private bool bLocating = false;    //     public DateTime TimeStamp { get; private set; }    //    //     public GPSLocation() : base()    //     {    //         TimeStamp = DateTime.MinValue;    //         ScanDelay = new TimeSpan(0, 0, 0);    //         Address = "Searching for GPS";    //     }    //    //     public bool RecentlyLocated    //     {    //         get    //         {    //             return (DateTime.Now.Subtract(TimeStamp).Ticks < ScanDelay.Ticks);    //         }    //     }    //    //     private double DistanceBetween(double sLatitude, double sLongitude, double eLatitude,    //                            double eLongitude)    //     {    //         var radiansOverDegrees = (Math.PI / 180.0);    //    //         var sLatitudeRadians = sLatitude * radiansOverDegrees;    //         var sLongitudeRadians = sLongitude * radiansOverDegrees;    //         var eLatitudeRadians = eLatitude * radiansOverDegrees;    //         var eLongitudeRadians = eLongitude * radiansOverDegrees;    //    //         var dLongitude = eLongitudeRadians - sLongitudeRadians;    //         var dLatitude = eLatitudeRadians - sLatitudeRadians;    //    //         var result1 = Math.Pow(Math.Sin(dLatitude / 2.0), 2.0) +    //                       Math.Cos(sLatitudeRadians) * Math.Cos(eLatitudeRadians) *    //                       Math.Pow(Math.Sin(dLongitude / 2.0), 2.0);    //    //         // Using 3956 as the number of miles around the earth    //         var result2 = 3956.0 * 2.0 *    //                       Math.Atan2(Math.Sqrt(result1), Math.Sqrt(1.0 - result1));    //    //         return result2;    //     }        // public void GetLocation(bool skiprecentlylocated = false)        // {        //     if (bLocating || RecentlyLocated)        //     {        //         if (!skiprecentlylocated)        //             return;        //     }        //     bLocating = true;        //     // Don't reset this on every refresh, otherwise the final UI will randomly get "Searching for GPS" as the address        //     //Address = "Searching for GPS";        //     bool bOK = MobileUtils.IsPermitted<Permissions.LocationWhenInUse>().Result;        //             //     Task.Run(async () =>        //     {        //         try        //         {        //                     //             if (!bOK)        //             {        //                 Latitude = 0.0F;        //                 Longitude = 0.0F;        //                 TimeStamp = DateTime.MinValue;        //                 Address = "GPS Services Disabled";        //                 Device.BeginInvokeOnMainThread(() =>        //                 {        //                     OnLocationError?.Invoke(this, new Exception("Please enable GPS Services to continue"));        //                 });        //                 bOK = false;        //                 bLocating = false;        //             }        //             else        //             {        //                 try        //                 {        //                     var request = new GeolocationRequest(GeolocationAccuracy.Best, new TimeSpan(0, 0, 20));        //                     var location = await Geolocation.GetLocationAsync(request);        //                     if (location != null)        //                     {        //                         //if (location.IsFromMockProvider)        //                         //{        //                         //    Device.BeginInvokeOnMainThread(() =>        //                         //    {        //                         //        OnLocationError?.Invoke(this, new Exception("Mock GPS Location Detected!\nPlease correct and restart TimeBench."));        //                         //    });        //                         //}        //                         //else        //                         {        //                             Latitude = location.Latitude;        //                             Longitude = location.Longitude;        //                             TimeStamp = DateTime.Now;        //                             String sErr = "";        //                             Placemark address = null;        //                             try        //                             {        //                                 var addresses = await Geocoding.GetPlacemarksAsync(Latitude, Longitude);        //                                 double maxdist = double.MaxValue;        //                                 foreach (var cur in addresses.Where(x => !String.IsNullOrEmpty(x.Thoroughfare)))        //                                 {        //                                     var delta = Location.CalculateDistance(location, cur.Location, DistanceUnits.Kilometers);        //                                     if (delta < maxdist)        //                                     {        //                                         address = cur;        //                                         maxdist = delta;        //                                     }        //                                 }        //                             }        //                             //                             catch (Exception ee2)        //                             {        //                                 sErr = ee2.Message;        //                                 //address = null;        //                             }        //                             if (address != null)        //                                 Address = String.Format("{0} {1} {2}", address.SubThoroughfare, address.Thoroughfare, address.Locality);        //                             else        //                                 Address = String.Format("Lat: {0}, Lng: {1}", Latitude, Longitude);        //                             if (location.IsFromMockProvider)        //                                 Address = "** " + Address;        //                             if (!String.IsNullOrEmpty(sErr))        //                                 Address = String.Format("{0} (ERROR: {1})", Address, sErr);        //                             Device.BeginInvokeOnMainThread(() =>        //                             {        //                                 OnLocationFound?.Invoke(this);        //                             });        //                             bLocating = false;        //                         }        //                     }        //                     else        //                     {        //                         Latitude = 0.00;        //                         Longitude = 0.00;        //                         TimeStamp = DateTime.MinValue;        //                         bLocating = false;        //                         Device.BeginInvokeOnMainThread(() =>        //                         {        //                             OnLocationError?.Invoke(this, new Exception("Unable to get GPS Location"));        //                         });        //                     }        //                 }        //                 catch (Exception e)        //                 {        //                     bLocating = false;        //                     Device.BeginInvokeOnMainThread(() =>        //                     {        //                         OnLocationError?.Invoke(this, e);        //                     });        //                 }        //             }        //         }        //         catch (Exception e)        //         {        //                     //         }        //         bLocating = false;        //     });        // }    //}//}
 |