public void CollectLocationData() { ILocationFix loc = LocationFixIOS.CollectData(); if (loc != null) { lock (_gpsLocationFixesLock) { _gpsLocationFixes.Add(loc); } } }
public static ILocationFix CollectData() { if (GameClient.Geoposition.Coordinate == null) { return(null); //Nothing to collect } LocationFixIOS loc = new LocationFixIOS(); //Collect provider switch (GameClient.Geoposition.Coordinate.PositionSource) { case Windows.Devices.Geolocation.PositionSource.WiFi: case Windows.Devices.Geolocation.PositionSource.Cellular: loc.Provider = "network"; break; default: loc.Provider = "fused"; break; } //1 = no fix, 2 = acquiring/inaccurate, 3 = fix acquired loc.ProviderStatus = 3; //Collect coordinates loc.Latitude = (float)GameClient.Geoposition.Coordinate.Point.Position.Latitude; loc.Longitude = (float)GameClient.Geoposition.Coordinate.Point.Position.Longitude; loc.Altitude = (float)GameClient.Geoposition.Coordinate.Point.Position.Altitude; //Not filled on iOS //loc.Floor = 3; // TODO: why 1? need more infos. loc.LocationType = 1; loc.TimeSnapshot = DeviceInfos.RelativeTimeFromStart; loc.HorizontalAccuracy = (float?)GameClient.Geoposition.Coordinate?.Accuracy ?? (float)_random.NextDouble(5.0, 50.0); loc.VerticalAccuracy = (float?)GameClient.Geoposition.Coordinate?.AltitudeAccuracy ?? (float)_random.NextDouble(10.0, 30.0); loc.Course = -1.0f; return(loc); }