/// <summary> /// rebuild gpxFile from Map Layers /// </summary> /// <param name="oLayerGPXPolylines"></param> /// <param name="oLayerGPXSymbols"></param> /// <returns></returns> public static GPXFile makeGPXfromMapLayers(LayerVectors oLayerGPXPolylines, LayerVectors oLayerGPXSymbols) { GPXFile gpxFile = new GPXFile(); GPXTrk trk = new GPXTrk(); gpxFile.trks.Add(trk); for (int i = 0; i < oLayerGPXPolylines.FeaturesCount; i++) { GPXTrkSeg seg = new GPXTrkSeg(); Feature f = oLayerGPXPolylines.FeatureGet(i); if (f is PolylineFeature) { PolylineFeature oPolyline = (PolylineFeature)f; for (int ipart = 0; ipart < oPolyline.m_oParts.Count; ipart++) { Part part = oPolyline.m_oParts[ipart]; for (int ipoint = 0; ipoint < part.Points.Count; ipoint++) { DPoint layerPoint = part.Points[ipoint]; SymbolFeature symbol = (SymbolFeature)layerPoint.Tag; double lon = layerPoint.X; double lat = layerPoint.Y; double ele = (double)symbol.getField("ele"); DateTime time = (DateTime)symbol.getField("time"); GpxWpt wpt = new GpxWpt(lon, lat, ele, time, -99); wpt.selected = layerPoint.Selected; seg.wpts.Add(wpt); } } } if (seg.wpts.Count > 0) { trk.trkSeg.Add(seg); } } return gpxFile; }