+ // Export both route points and then track points
+ if (hasTrackpoints && (exportTrackpoints || exportPhotos))
+ {
+ // Output all route points (if any)
+ numSaved += writeTrackPoints(inWriter, inInfo, exportSelection, exportTrackpoints, exportPhotos,
+ exportTimestamps, true, gpxCachers, "<rtept", "\t<rte><number>1</number>\n", null, "\t</rte>\n");
+ // Output all track points, if any
+ String trackStart = "\t<trk><name>" + trackName + "</name><number>1</number><trkseg>\n";
+ numSaved += writeTrackPoints(inWriter, inInfo, exportSelection, exportTrackpoints, exportPhotos,
+ exportTimestamps, false, gpxCachers, "<trkpt", trackStart, "\t</trkseg>\n\t<trkseg>\n",
+ "\t</trkseg></trk>\n");
+ }
+
+ inWriter.write("</gpx>\n");
+ return numSaved;
+ }
+
+ /**
+ * Loop through the track outputting the relevant track points
+ * @param inWriter writer object for output
+ * @param inInfo track info object containing track
+ * @param inExportSelection true to just output current selection
+ * @param inExportTrackpoints true to output track points
+ * @param inExportPhotos true to output photo points
+ * @param exportTimestamps true to include timestamps in export
+ * @param inOnlyCopies true to only export if source can be copied
+ * @param inCachers list of GpxCachers
+ * @param inPointTag tag to match for each point
+ * @param inStartTag start tag to output
+ * @param inSegmentTag tag to output between segments (or null)
+ * @param inEndTag end tag to output
+ */
+ private static int writeTrackPoints(OutputStreamWriter inWriter,
+ TrackInfo inInfo, boolean inExportSelection, boolean inExportTrackpoints,
+ boolean inExportPhotos, boolean exportTimestamps, boolean inOnlyCopies,
+ GpxCacherList inCachers, String inPointTag, String inStartTag,
+ String inSegmentTag, String inEndTag)
+ throws IOException
+ {
+ // Note: far too many input parameters to this method but avoids duplication
+ // of output functionality for writing track points and route points
+ int numPoints = inInfo.getTrack().getNumPoints();
+ int selStart = inInfo.getSelection().getStart();
+ int selEnd = inInfo.getSelection().getEnd();
+ int numSaved = 0;
+ // Loop over track points
+ for (int i=0; i<numPoints; i++)