コード例 #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);
        }
コード例 #2
0
        public void WriteMetadata(GpxMetadata metadata)
        {
            Writer_.WriteStartElement("metadata");

            if (metadata.Name != null)
            {
                Writer_.WriteElementString("name", metadata.Name);
            }
            if (metadata.Description != null)
            {
                Writer_.WriteElementString("desc", metadata.Description);
            }
            if (metadata.Author != null)
            {
                WritePerson("author", metadata.Author);
            }
            if (metadata.Copyright != null)
            {
                WriteCopyright("copyright", metadata.Copyright);
            }
            if (metadata.Link != null)
            {
                WriteLink("link", metadata.Link);
            }
            if (metadata.Time != null)
            {
                Writer_.WriteElementString("time", ToGpxDateString(metadata.Time.Value));
            }
            if (metadata.Keywords != null)
            {
                Writer_.WriteElementString("keywords", metadata.Keywords);
            }
            if (metadata.Bounds != null)
            {
                WriteBounds("bounds", metadata.Bounds);
            }

            Writer_.WriteEndElement();
        }
コード例 #3
0
        private GpxMetadata ReadGpxMetadata()
        {
            GpxMetadata metadata = new GpxMetadata();

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

            string elementName = Reader_.Name;

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

                    switch (Reader_.Name)
                    {
                    case "name":
                        metadata.Name = ReadContentAsString();
                        break;

                    case "desc":
                        metadata.Description = ReadContentAsString();
                        break;

                    case "author":
                        metadata.Author = ReadGpxPerson();
                        break;

                    case "copyright":
                        metadata.Copyright = ReadGpxCopyright();
                        break;

                    case "link":
                        metadata.Link = ReadGpxLink();
                        break;

                    case "time":
                        metadata.Time = ReadContentAsDateTime();
                        break;

                    case "keywords":
                        metadata.Keywords = ReadContentAsString();
                        break;

                    case "bounds":
                        ReadGpxBounds();
                        break;

                    default:
                        SkipElement();
                        break;
                    }

                    break;

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

            throw new FormatException(elementName);
        }