private string BuildGpx(TopoTrailInfo trail) { var writer = new GpxFileWriter(); // write file header writer.SetVersion(GpxSchemaVersion.Version1_1); writer.WriteHeader(trail); // write custom data var data = new GpxExtensionData() { Timezone = trail.Timezone.TZID, Country = (trail.Country?.Name ?? ""), Region = (trail.Region?.RegionName ?? ""), Location = trail.Location }; writer.WriteMetadata(data); // write tracks foreach (var track in trail.TopoTracks) { writer.WriteTrack(track); } return(writer.GetXml()); }
public void WriteMetadata(GpxExtensionData data) { var extensions = _xml.CreateElement("extensions"); _root.AppendChild(extensions); var timezoneNode = _xml.CreateElement("timezone"); extensions.AppendChild(timezoneNode); timezoneNode.InnerText = data.Timezone; var countryNode = _xml.CreateElement("country"); extensions.AppendChild(countryNode); countryNode.InnerText = data.Country; if (!String.IsNullOrWhiteSpace(data.Region)) { var regionNode = _xml.CreateElement("region"); extensions.AppendChild(regionNode); regionNode.InnerText = data.Region; } if (!String.IsNullOrWhiteSpace(data.Location)) { var locationNode = _xml.CreateElement("location"); extensions.AppendChild(locationNode); locationNode.InnerText = data.Location; } }
/// <summary> /// Extracts additional custom data if exists /// </summary> public GpxExtensionData ReadExtension() { var data = new GpxExtensionData(); data.Timezone = ReadExtension("timezone"); data.Country = ReadExtension("country"); data.Region = ReadExtension("region"); data.Location = ReadExtension("location"); return(data); }