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; } }
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; } }
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))); }
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); }
internal Geoposition(GeoPosition <GeoCoordinate> position) { _position = position; Coordinate.Timestamp = position.Timestamp; Coordinate.PositionSource = PositionSource.Unknown; }
private Geoposition(Windows.Devices.Geolocation.Geoposition position) { _position = position; }
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))); }
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; }); } }
private Geoposition(Windows.Devices.Geolocation.Geoposition position) { _position = position; }
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() }); }