/// <summary> /// Creation with SessionDisplayablePoints. /// </summary> /// <param name="sessionPoints">The session points.</param> /// <param name="bottomLeft">The bottom left.</param> /// <param name="topRight">The top right.</param> /// <param name="totalDurationInSeconds">The total duration in seconds.</param> public SessionMap( List <SessionDisplayablePoint> sessionPoints, Position bottomLeft, Position topRight) { SessionPoints = sessionPoints; BottomLeft = bottomLeft; TopRight = topRight; Region = GeoCalculation.BoundsToMapSpan(bottomLeft, topRight); }
public SessionMapInfo( IReadOnlyList <SessionDisplayablePoint> sessionPoints, Position bottomLeft, Position topRight, int totalDurationInSeconds) { SessionPoints = sessionPoints; BottomLeft = bottomLeft; TopRight = topRight; Region = GeoCalculation.BoundsToMapSpan(bottomLeft, topRight); TotalDurationInSeconds = totalDurationInSeconds; }
/// <summary> /// Initializes a new instance of the <see cref="SessionMap" /> class. /// </summary> public SessionMap() { SessionPoints = new List <SessionDisplayablePoint>(); double topLatitude = LatLong.Min.Latitude; double bottomLatitude = LatLong.Max.Latitude; double leftLongitude = LatLong.Max.Longitude; double rightLongitude = LatLong.Min.Longitude; BottomLeft = new Position(bottomLatitude, leftLongitude); TopRight = new Position(topLatitude, rightLongitude); Region = GeoCalculation.BoundsToMapSpan(BottomLeft, TopRight); }
/// <summary> /// Adds the specified session displayable point. /// </summary> /// <param name="sessionDisplayablePoint">The session displayable point.</param> public void Add(ActivityPoint point) { SessionDisplayablePoint previousPoint = SessionPoints.Count > 0 ? SessionPoints.Last() : null; DateTime startTime = point.TimeStamp; SessionDisplayablePoint sessionDisplayablePoint; TimeSpan elapsedTime = point.TimeStamp - startTime; double?speed = point.Speed; if (speed == null && previousPoint != null && previousPoint.HasPosition && previousPoint.Distance.HasValue && point.Position != LatLong.Empty && point.DistanceInMeters > 0 && elapsedTime.TotalSeconds > 0) { double kilometersTraveled = GeoCalculation.HaversineDistance(previousPoint.Position, point.Position); double hoursElapsed = (elapsedTime - previousPoint.Time).TotalHours; speed = kilometersTraveled / hoursElapsed; } sessionDisplayablePoint = new SessionDisplayablePoint( elapsedTime, point.DistanceInMeters, point.AltitudeInMeters, speed, point.Position); if (GeoCalculation.IsPointNewLeftBottom(BottomLeft, sessionDisplayablePoint.Position.ToPosition()) || GeoCalculation.IsPointNewTopRight(TopRight, sessionDisplayablePoint.Position.ToPosition())) { BottomLeft = sessionDisplayablePoint.Position.ToPosition(); TopRight = sessionDisplayablePoint.Position.ToPosition(); Region = GeoCalculation.BoundsToMapSpan(BottomLeft, TopRight); } SessionPoints.Add(sessionDisplayablePoint); RefreshColors(); }