protected string SerializeToHereFormat(RouteDataDTO route) { var gpx = new gpxType(); gpx.trk = new trkType[1]; var trk = gpx.trk[0] = new trkType(); trk.trkseg = new trksegType[1]; var seg = trk.trkseg[0] = new trksegType(); seg.trkpt = route.Points.Select(x => new wptType() { lat = x.latitude, lon = x.longitude }).ToArray(); XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); var serializer = new XmlSerializer(gpx.GetType()); using (StringWriter textWriter = new StringWriter()) using (XmlWriter writer = XmlWriter.Create(textWriter, new XmlWriterSettings { OmitXmlDeclaration = true })) { serializer.Serialize(writer, gpx); var str = textWriter.ToString(); var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(str); return(System.Convert.ToBase64String(plainTextBytes)); } }
public static Stream ExportGpxRouteStream(IList <GlobalsatRoute> routes) { if (routes == null) { return(null); } gpxType gpxFile = new gpxType(); //gpxFile.creator = "SportTracks KeymazePlugin"; List <rteType> rtes = new List <rteType>(); if (routes != null && routes.Count > 0) { foreach (GlobalsatRoute route in routes) { if (route.wpts != null && route.wpts.Count > 0) { rteType rte = new rteType(); rte.name = route.Name; List <wptType> wpts = new List <wptType>(); foreach (GlobalsatWaypoint g in route.wpts) { wptType wpt = new wptType(); wpt.lat = (decimal)g.Latitude; wpt.lon = (decimal)g.Longitude; wpt.ele = g.Altitude; wpt.eleSpecified = true; wpts.Add(wpt); } rte.rtept = wpts.ToArray(); rtes.Add(rte); } } } gpxFile.rte = rtes.ToArray(); XmlSerializer serializer = new XmlSerializer(gpxFile.GetType()); Stream writer = new MemoryStream(); serializer.Serialize(writer, gpxFile); //writer.Close(); return(writer); }
public static Stream ExportGpxWaypointsStream(IList <GlobalsatWaypoint> waypoints) { if (waypoints == null) { return(null); } gpxType gpxFile = new gpxType(); //gpxFile.creator = "SportTracks KeymazePlugin"; List <wptType> wptList = new List <wptType>(); if (waypoints != null && waypoints.Count > 0) { foreach (GlobalsatWaypoint waypoint in waypoints) { wptType wpt = new wptType(); wpt.name = waypoint.WaypointName; wpt.lat = (decimal)waypoint.Latitude; wpt.lon = (decimal)waypoint.Longitude; wpt.ele = (decimal)waypoint.Altitude; wpt.eleSpecified = true; wpt.type = waypoint.IconNr.ToString(); wptList.Add(wpt); } } gpxFile.wpt = wptList.ToArray(); XmlSerializer serializer = new XmlSerializer(gpxFile.GetType()); Stream writer = new MemoryStream(); serializer.Serialize(writer, gpxFile); //writer.Close(); return(writer); }