namespace Mapbox.Unity.Location { using Mapbox.Utils; using System.Diagnostics; /// /// Location contains heading, latitude, longitude, accuracy and a timestamp. /// [DebuggerDisplay("{LatitudeLongitude,nq} {Accuracy}m hdg:{UserHeading} orientation:{DeviceOrientation}")] public struct Location { /// /// The location, as descibed by a . /// Location.x represents Latitude. /// Location.y represents Longitude. /// public Vector2d LatitudeLongitude; /// /// Heading represents a angle of direction during movement, generally between 0-359. ///Initially 0 this property gets populated after the device has moved far enough to determine a direction ///If the device stops moving last heading is kept till a new one can be caluculated. Check ///Also needs location services enabled via Input.location.Start() ///related /// public float UserHeading; /// ///Orientation (where the device is looking). ///Uses device compass ///related /// public float DeviceOrientation; /// /// UTC Timestamp (in seconds since 1970) when location was last updated. /// public double Timestamp; /// /// UTC Timestamp (in seconds since 1970) of the device when OnLocationUpdated was fired. /// public double TimestampDevice; /// /// Horizontal Accuracy of the location. /// public float Accuracy; /// /// Is the location service currently initializing? /// public bool IsLocationServiceInitializing; /// /// Has the location service been enabled by the user? /// public bool IsLocationServiceEnabled; /// /// Has the location changed since last update? /// public bool IsLocationUpdated; /// /// Has the location been aquired via a GPS fix. 'Null' if not supported by the active location provider or GPS not enabled. /// public bool? HasGpsFix; /// /// How many satellites were in view when the location was acquired. 'Null' if not supported by the active location provider or GPS not enabled. /// public int? SatellitesInView; /// /// How many satellites were used for the location. 'Null' if not supported by the active location provider or GPS not enabled. /// public int? SatellitesUsed; /// /// Speed in [meters/second]. 'Null' if not supported by the active location provider. /// public float? SpeedMetersPerSecond; /// /// Speed in [km/h]. 'Null' if not supported by the active location provider. /// public float? SpeedKmPerHour { get { if (!SpeedMetersPerSecond.HasValue) { return null; } return SpeedMetersPerSecond * 3.6f; } } /// /// Name of the location provider. GPS or network or 'Null' if not supported by the active location provider. /// public string Provider; /// /// Name of the location provider script class in Unity /// public string ProviderClass; /// /// Has the heading changed since last update? /// public bool IsUserHeadingUpdated; } }