public void WriteTrack(IGpxTrack track)
        {
            // create header if needed
            if (_xml == null)
            {
                WriteHeader(track.Name, track.Description, track.Points.First().Timestamp.Value);
            }

            // create track
            var trk = _xml.CreateElement("trk", Namespace);

            _xml.DocumentElement.AppendChild(trk);

            if (!String.IsNullOrWhiteSpace(track.Name))
            {
                var nameNode = _xml.CreateElement("name", Namespace);
                trk.AppendChild(nameNode);
                nameNode.InnerText = track.Name;
            }
            if (!String.IsNullOrWhiteSpace(track.Description))
            {
                var descriptionNode = _xml.CreateElement("desc", Namespace);
                trk.AppendChild(descriptionNode);
                descriptionNode.InnerText = track.Description;
            }
            if (!String.IsNullOrWhiteSpace(track.Source))
            {
                var sourceNode = _xml.CreateElement("src", Namespace);
                trk.AppendChild(sourceNode);
                sourceNode.InnerText = track.Source;
            }

            XmlElement tracksegmentNode = null;
            var        segment          = -1;

            foreach (var p in track.Points.OrderBy(x => x.Segment).ThenBy(x => x.Timestamp))
            {
                if (segment != p.Segment)
                {
                    // create new segments as needed
                    tracksegmentNode = _xml.CreateElement("trkseg", Namespace);
                    trk.AppendChild(tracksegmentNode);
                    segment = p.Segment;
                }

                // add points to segments
                var pointNode = _xml.CreateElement("trkpt", Namespace);
                tracksegmentNode.AppendChild(pointNode);
                SetPoint(pointNode, p);
            }
        }
Beispiel #2
0
        private static dynamic BuildTrack(IGpxTrack track)
        {
            dynamic t = new JObject();

            t.track  = track.Name;
            t.points = new JArray();
            foreach (var point in track.Points)
            {
                dynamic p = new JObject();
                p.lat = point.Latitude;
                p.lng = point.Longitude;
                //p.ele = point.Elevation;
                t.points.Add(p);
            }
            return(t);
        }
        public void WriteTrack(IGpxTrack track)
        {
            // create header if needed
            if (_xml == null)
            {
                WriteHeader(track.Name, track.Description);
            }

            // create placemark
            var pm = _xml.CreateElement("Placemark", null);

            _xml.DocumentElement.FirstChild.AppendChild(pm);

            // add details
            if (!String.IsNullOrWhiteSpace(track.Name))
            {
                var nameNode = _xml.CreateElement("name", null);
                pm.AppendChild(nameNode);
                nameNode.InnerText = track.Name;
            }
            if (!String.IsNullOrWhiteSpace(track.Description))
            {
                var descriptionNode = _xml.CreateElement("description", null);
                pm.AppendChild(descriptionNode);
                descriptionNode.InnerText = track.Description;
            }

            // create track
            var trackNode = _xml.CreateElement("gx:Track", Namespace);

            pm.AppendChild(trackNode);

            // add points
            foreach (var p in track.Points.OrderBy(x => x.Segment).ThenBy(x => x.Timestamp))
            {
                var whenNode = _xml.CreateElement("when", null);
                trackNode.AppendChild(whenNode);
                whenNode.InnerText = p.Timestamp.Value.ToUniversalTime().ToString("s") + "Z";

                var pointNode = _xml.CreateElement("gx:coord", Namespace);
                trackNode.AppendChild(pointNode);
                pointNode.InnerText = $"{p.Longitude} {p.Latitude} {p.Elevation}".TrimEnd();
            }
        }
Beispiel #4
0
        // ==================================================
        // IGpxTrack
        public static HtmlString GetJson(IGpxTrack track)
        {
            var t = BuildTrack(track);

            return(new HtmlString(t.ToString()));
        }
 public TopoTrackInfo(TopoTrailInfo trail, IGpxTrack track)
 {
     _trail  = trail;
     _track  = track;
     _points = track.Points.Select(x => new TopoPointInfo(this, x)).ToList();
 }