Exemplo n.º 1
0
        GpxWriter loadTrack(List <Track> tracks,
                            Stream stream,
                            string link_Href   = "https://rutoteca.es/",
                            string link_Text   = "Rutoteca",
                            string mimeType    = "text/html",
                            string name        = "Rutoteca",
                            string descripcion = "Visita Rutoteca el mayor almacen de rutas homologadas de España")
        {
            GpxWriter newGpx = new GpxWriter(stream);

            tracks.ForEach(t =>
            {
                var newMetadata           = new Gpx.GpxMetadata();
                newMetadata.Link          = new GpxLink();
                newMetadata.Link.Href     = link_Href;
                newMetadata.Link.MimeType = mimeType;
                newMetadata.Link.Text     = link_Text;
                newMetadata.Name          = name;
                newMetadata.Description   = descripcion;
                newGpx.WriteMetadata(newMetadata);

                GpxTrack newTrack = new GpxTrack();
                var newSegment    = new Gpx.GpxTrackSegment();
                var inicio        = t.GpxPoint.First().Time;
                t.GpxPoint.ToList().ForEach(pt =>
                {
                    newSegment.TrackPoints.Add(SetGpxPoint(pt, inicio));
                });
                newTrack.Segments.Add(newSegment);
                newGpx.WriteTrack(newTrack);
            }
                           );
            return(newGpx);
        }
        private GpxTrackSegment ReadGpxTrackSegment()
        {
            GpxTrackSegment segment = new GpxTrackSegment();

            if (Reader_.IsEmptyElement)
            {
                return(segment);
            }

            string elementName = Reader_.Name;

            while (Reader_.Read())
            {
                switch (Reader_.NodeType)
                {
                case XmlNodeType.Element:

                    switch (Reader_.Name)
                    {
                    case "trkpt":
                        segment.TrackPoints.Add(ReadGpxTrackPoint());
                        break;

                    case "extensions":
                        ReadTrackSegmentExtensions();
                        break;

                    default:
                        SkipElement();
                        break;
                    }

                    break;

                case XmlNodeType.EndElement:
                    if (Reader_.Name != elementName)
                    {
                        throw new FormatException(Reader_.Name);
                    }
                    return(segment);
                }
            }

            throw new FormatException(elementName);
        }