コード例 #1
0
 internal double GetDistanceTo(MyGeocoordinate myGeocoordinate)
 {
     if (double.IsNaN(this.Latitude) || double.IsNaN(this.Longitude) || double.IsNaN(myGeocoordinate.Latitude) || double.IsNaN(myGeocoordinate.Longitude))
     {
         throw new ArgumentException("Argument_LatitudeOrLongitudeIsNotANumber");
     }
     else
     {
         double latitude = this.Latitude * 0.0174532925199433;
         double longitude = this.Longitude * 0.0174532925199433;
         double num = myGeocoordinate.Latitude * 0.0174532925199433;
         double longitude1 = myGeocoordinate.Longitude * 0.0174532925199433;
         double num1 = longitude1 - longitude;
         double num2 = num - latitude;
         double num3 = Math.Pow(Math.Sin(num2 / 2), 2) + Math.Cos(latitude) * Math.Cos(num) * Math.Pow(Math.Sin(num1 / 2), 2);
         double num4 = 2 * Math.Atan2(Math.Sqrt(num3), Math.Sqrt(1 - num3));
         double num5 = 6376500 * num4;
         return num5;
     }
 }
コード例 #2
0
        void locator_PositionChanged(Geolocator sender, PositionChangedEventArgs args)
        {
            Geoposition position = null;
            var task = Task.Run(async () =>
            {
                position = await sender.GetGeopositionAsync(new TimeSpan(0, 0, 0, 0, 200), new TimeSpan(0, 0, 3));
                var a = 1;
            });
            task.Wait();

            //Definice MyPosition vlastní náhradní třídou pro geopozici a uložení šířky a délky do jejích property.
            MyGeocoordinate coord = new MyGeocoordinate();
            coord.Latitude = position.Coordinate.Point.Position.Latitude;
            coord.Longitude = position.Coordinate.Point.Position.Longitude;
            if (coord != null)
            {
                MyPosition = coord; 
            }
            
            //nastavení času aktualizace
            LastPositionTime = DateTime.Now;

#if WINDOWS_APP
            CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
            {
                //Výpočet vzdálenosti vůči všm stanicím.
                _gpsService.SetPosition();
            });
#endif
#if WINDOWS_PHONE_APP
            //Výpočet vzdálenosti vůči všm stanicím.
                _gpsService.SetPosition();
#endif


        }
コード例 #3
0
        /// <summary>
        /// Load station positions from xml file
        /// </summary>
        private void LoadPositions()
        {
            StationPositions = new Dictionary<string, MyGeocoordinate>();
            XDocument d = XDocument.Load("SampleData/Positions.xml");

            var list = from c in d.Descendants("location")
                       select c;

            string name;
            MyGeocoordinate gc;

            foreach (var l in list)
            {
                gc = new MyGeocoordinate();
                name = l.Attribute("id").Value;                
                gc.Latitude = Double.Parse(l.Attribute("x").Value, CultureInfo.InvariantCulture.NumberFormat);
                gc.Longitude = Double.Parse(l.Attribute("y").Value, CultureInfo.InvariantCulture.NumberFormat);

                StationPositions.Add(name, gc);
            }
        }