コード例 #1
0
        public void CollectLocationData()
        {
            ILocationFix loc = LocationFixIOS.CollectData();

            if (loc != null)
            {
                lock (_gpsLocationFixesLock)
                {
                    _gpsLocationFixes.Add(loc);
                }
            }
        }
コード例 #2
0
            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);
            }