Exemplo n.º 1
0
 /// <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);
 }
Exemplo n.º 2
0
 public SessionMapInfo(
     IReadOnlyList <SessionDisplayablePoint> sessionPoints,
     Position bottomLeft,
     Position topRight,
     int totalDurationInSeconds)
 {
     SessionPoints          = sessionPoints;
     BottomLeft             = bottomLeft;
     TopRight               = topRight;
     Region                 = GeoCalculation.BoundsToMapSpan(bottomLeft, topRight);
     TotalDurationInSeconds = totalDurationInSeconds;
 }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        /// <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();
        }