static JsonMoves.Day.Segment SegmentMove(XmlTimeline.Activity item) { JsonMoves.Day.Segment output = new JsonMoves.Day.Segment(JsonMoves.SegmentType.move, item.startTime, item.endTime); // TrackPoints List <JsonMoves.Day.Segment.Activity.TrackPoint> trackpoints = new List <JsonMoves.Day.Segment.Activity.TrackPoint>(); foreach (var waypoint in item.waypoints) { trackpoints.Add(new JsonMoves.Day.Segment.Activity.TrackPoint(waypoint.lat, waypoint.lon, waypoint.time.Value)); } // Setup List <JsonMoves.Day.Segment.Activity> activity = new List <JsonMoves.Day.Segment.Activity>(); activity.Add(new JsonMoves.Day.Segment.Activity(item.activity, HelpMethods.ReturnGroup(item.activity), item.startTime, item.endTime, item.Duration, item.Distance, item.Calories, trackpoints)); output.activities = activity.ToArray(); return(output); }
void GetMove(GpxTools.Gpx.GpxTrack track) { // Type ActivityType type = ActivityType.car; Enum.TryParse(track.Type, out type); // Track points List <XmlTimeline.Coordinates> coords = new List <XmlTimeline.Coordinates>(); GpxTools.Gpx.GpxPointCollection <GpxTools.Gpx.GpxPoint> points = new GpxTools.Gpx.GpxPointCollection <GpxTools.Gpx.GpxPoint>(); points = track.ToGpxPoints(); foreach (var item in points) { coords.Add(new XmlTimeline.Coordinates(item.Latitude, item.Longitude, item.Elevation, item.Time)); } if (coords.Count >= 2) { if (timelineItems.Count > 0 && timelineItems[timelineItems.Count - 1].type == XmlTimeline.TimelineItemType.activity && timelineItems[timelineItems.Count - 1].activity.activity == type) { timelineItems[timelineItems.Count - 1].activity.MargeWithNew(coords.ToArray()); } else { XmlTimeline.Activity newActivity = new XmlTimeline.Activity(type, coords.ToArray()); AddTimeToPreviousPlace(newActivity); timelineItems.Add(new XmlTimeline.TimelineItem(newActivity)); AddTimeToPreviousPlace(newActivity); } } }
void AddTimeToPreviousPlace(XmlTimeline.Activity activity) { if (timelineItems.Count >= 1) { if (timelineItems.Last().type == XmlTimeline.TimelineItemType.place) { timelineItems.Last().place.endTime = activity.startTime; } if (timelineItems.Count >= 2) { if (timelineItems[timelineItems.Count - 2].type == XmlTimeline.TimelineItemType.place && !timelineItems[timelineItems.Count - 2].place.endTime.HasValue) { timelineItems[timelineItems.Count - 2].place.endTime = activity.startTime; } } } }