コード例 #1
0
    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);
    }
コード例 #2
0
    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);
            }
        }
    }
コード例 #3
0
 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;
             }
         }
     }
 }