private async void LoadLocation()
		{
			Windows.Devices.Geolocation.Geoposition l = null;
			try
			{
				var loc = new Windows.Devices.Geolocation.Geolocator();
				l = position = await loc.GetGeopositionAsync();

			}
			catch { return; }
			foreach (var coll in new GraphicsOverlayCollection[] { 
				sceneView.GraphicsOverlays , mapView.GraphicsOverlays
			})
			{
				GraphicsOverlay overlay = new GraphicsOverlay();
				coll.Add(overlay);
				Graphic g = new Graphic()
				{
					Symbol = new SimpleMarkerSymbol()
					{
						Color = Color.FromArgb(255, 0, 122, 194),
						Size = 20,
						Outline = new SimpleLineSymbol()
						{
							Width = 2,
							Color = Colors.White
						}
					},

				};
				g.Geometry = new MapPoint(l.Coordinate.Point.Position.Longitude, l.Coordinate.Point.Position.Latitude, SpatialReferences.Wgs84);
				overlay.Graphics.Add(g);
				break;
			}
		}
示例#2
0
 private async void LoadLocation()
 {
     Windows.Devices.Geolocation.Geoposition l = null;
     try
     {
         var loc = new Windows.Devices.Geolocation.Geolocator();
         l = position = await loc.GetGeopositionAsync();
     }
     catch { return; }
     foreach (var coll in new GraphicsOverlayCollection[] {
         sceneView.GraphicsOverlays, mapView.GraphicsOverlays
     })
     {
         GraphicsOverlay overlay = new GraphicsOverlay();
         coll.Add(overlay);
         Graphic g = new Graphic()
         {
             Symbol = new SimpleMarkerSymbol()
             {
                 Color   = System.Drawing.Color.FromArgb(255, 0, 122, 194),
                 Size    = 20,
                 Outline = new SimpleLineSymbol()
                 {
                     Width = 2,
                     Color = System.Drawing.Color.White
                 }
             },
         };
         g.Geometry = new MapPoint(l.Coordinate.Point.Position.Longitude, l.Coordinate.Point.Position.Latitude, SpatialReferences.Wgs84);
         overlay.Graphics.Add(g);
         break;
     }
 }
示例#3
0
        private void locationComplete(Windows.Devices.Geolocation.Geoposition position, Station station)
        {
            station.lat  = position.Coordinate.Latitude.ToString().Replace(",", ".");
            station.lon  = position.Coordinate.Longitude.ToString().Replace(",", ".");
            station.name = "Siegendorf";

            forecastService.getForecast(station);
        }
        public static double CalculateGeopositionDistance(Windows.Devices.Geolocation.Geoposition position1, Windows.Devices.Geolocation.Geoposition position2)
        {
            double lat1 = position1.Coordinate.Point.Position.Latitude;
            double lon1 = position1.Coordinate.Point.Position.Longitude;
            double lat2 = position2.Coordinate.Point.Position.Latitude;
            double lon2 = position2.Coordinate.Point.Position.Longitude;

            /* Returns value in meters */
            return(Math.Abs(CalculateHaversine(lat1, lon1, lat2, lon2)));
        }
示例#5
0
 public void SetData(Controls.LocationQueryViewModel query_vm, Windows.Devices.Geolocation.Geoposition geoPos)
 {
     query        = query_vm.LocationQuery;
     name         = query_vm.LocationName;
     latitude     = geoPos.Coordinate.Point.Position.Latitude;
     longitude    = geoPos.Coordinate.Point.Position.Longitude;
     tz_long      = query_vm.LocationTZ_Long;
     locationType = LocationType.GPS;
     source       = Settings.API;
 }
 /// <summary>
 /// Convert Windows Geo position to Geo Location that we are using in the library.
 /// </summary>
 private Geolocation ConvertPositionoGeolocation(Windows.Devices.Geolocation.Geoposition position)
 {
     return(new Geolocation()
     {
         Coordinate = new Geocoordinate()
         {
             Latitude = position.Coordinate.Point.Position.Latitude,
             Longitude = position.Coordinate.Point.Position.Longitude,
             Altitude = position.Coordinate.Point.Position.Altitude,
             Accuracy = position.Coordinate.Accuracy
         },
         UpdateDateTime = position.Coordinate.Timestamp.DateTime
     });
 }
        /// <summary>
        /// Update last known location and see if it is an acceptable location.
        /// If yes, stop updating the location any further.
        /// </summary>
        private bool UpdateLocation(Windows.Devices.Geolocation.Geoposition position)
        {
            bool isLocationAcceptable = false;

            if (position != null)
            {
                if (LastKnownLocation == null ||
                    LastKnownLocation.Coordinate == null ||
                    !LastKnownLocation.UpdateDateTime.HasValue)
                {
                    // No location saved so far, accept any new location
                    LastKnownLocation = ConvertPositionoGeolocation(position);
                }
                else
                {
                    // Check whether the new location is newer or older
                    var locationDateTime     = position.Coordinate.Timestamp.Date;
                    var timeDelta            = locationDateTime - LastKnownLocation.UpdateDateTime.Value;
                    var isSignificantlyNewer = timeDelta.TotalMilliseconds > FreshnessThreshold;

                    // Check whether the new location is more or less accurate than saved location
                    // Less is better
                    var accuracyDelta               = position.Coordinate.Accuracy - LastKnownLocation.Coordinate.Accuracy;
                    var isMoreOrSameAccurate        = accuracyDelta <= 0;
                    var isSignificantlyLessAccurate = accuracyDelta > AccuracyThreshold;

                    // Determine location quality using a combination of timeliness and accuracy
                    if (isMoreOrSameAccurate ||
                        (isSignificantlyNewer && !isSignificantlyLessAccurate))
                    {
                        // Accept this newer / more accurate location
                        LastKnownLocation = ConvertPositionoGeolocation(position);
                    }
                }

                // Turn off the location if it is good enough
                if (IsLastKnownLocationFreshAndAccurate())
                {
                    isLocationAcceptable = true;

                    // Acceptable location, stop running location
                    StopLocationUpdate(GeolocationStatus.Successful);
                }
            }

            return(isLocationAcceptable);
        }
        private const string URL_FORMAT = "https://api.bigdatacloud.net/data/reverse-geocode-client?latitude={0}&longitude={1}&localityLanguage=en"; // {0}Latitude, {1}Longitude

        /// <summary>
        /// Use Policy: May only use current coordinates obtained from a client's web browser using getCurrentPosition() method or
        /// from client devices using their own current coordinates only.
        /// IMPORTANT! Using elsewhere obtained coordinates with BigDataCloud's free API services can lead to blacklisting.
        /// </summary>
        /// <param name="devicePosition">Client device's current position.</param>
        public static async Task <string> GetZipAsync(Windows.Devices.Geolocation.Geoposition devicePosition, AppLogger appLogger)
        {
            string zip = null;

            if (devicePosition != null && devicePosition.Coordinate != null && devicePosition.Coordinate.Point != null)
            {
                double latitude  = devicePosition.Coordinate.Point.Position.Latitude;
                double longitude = devicePosition.Coordinate.Point.Position.Longitude;

                string url  = string.Format(URL_FORMAT, latitude, longitude);
                string json = await WebRequests.GetCurlResponseAsync(url, appLogger.Logger);

                BigDataCloudRoot root = await Json.ToObjectAsync <BigDataCloudRoot>(json);

                zip = root?.Postcode;
            }

            return(zip);
        }
示例#9
0
 internal Geoposition(GeoPosition <GeoCoordinate> position)
 {
     _position                 = position;
     Coordinate.Timestamp      = position.Timestamp;
     Coordinate.PositionSource = PositionSource.Unknown;
 }
示例#10
0
 private Geoposition(Windows.Devices.Geolocation.Geoposition position)
 {
     _position = position;
 }
示例#11
0
        void geolocator_PositionChanged(Windows.Devices.Geolocation.Geolocator sender, Windows.Devices.Geolocation.PositionChangedEventArgs args)
        {
            userPosition = args.Position;

            TestBingServiceApi();
        }
 public async Task <LocationQueryViewModel> GetLocation(Windows.Devices.Geolocation.Geoposition geoPos)
 {
     return(await GetLocation(new WeatherUtils.Coordinate(geoPos)));
 }
示例#13
0
 public async void InitMapData()
 {
     myposition = await Utils.GEOUtils.GetMachineLocation();
     if (myposition == null)
         return;
     else
     {
         await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
         {
             themap.Center = myposition.Coordinate.Point;
         });
     }
     
 }
示例#14
0
 private Geoposition(Windows.Devices.Geolocation.Geoposition position)
 {
     _position = position;
 }
示例#15
0
 public LocationData(Controls.LocationQueryViewModel query_vm, Windows.Devices.Geolocation.Geoposition geoPos)
 {
     SetData(query_vm, geoPos);
 }
 internal static Geoposition ToLocalGeoposition(this Windows.Devices.Geolocation.Geoposition position)
 {
     return(position == null ? null : new Geoposition {
         Coordinate = position.Coordinate.ToLocalGeocoordinate()
     });
 }