GPX: support multiple tracks.

Fixes #617.
This commit is contained in:
Dennis Guse
2021-02-28 18:13:57 +01:00
parent 29b522b8a2
commit 0f89cd7875
2 changed files with 9 additions and 24 deletions
+1 -11
View File
@@ -2,17 +2,7 @@
interface TrackExporter {
}
class KmzTrackExporter implements TrackExporter
KmzTrackExporter o-- FileTrackExporter
class FileTrackExporter implements TrackExporter {
/' One track only '/
}
FileTrackExporter o-- TrackWriter
interface TrackWriter {
}
class GpxTrackWriter implements TrackWriter
class KmlTrackWriter implements TrackWriter
class KmlTrackExporter implements TrackExporter
interface TrackImporter {
}
@@ -91,15 +91,16 @@ public class GPXTrackExporter implements TrackExporter {
@Override
public boolean writeTrack(Track[] tracks, @NonNull OutputStream outputStream) {
Track mainTrack = tracks[0];
try {
prepare(outputStream);
writeHeader(mainTrack);
writeMarkers(mainTrack);
writeHeader();
for (Track track : tracks) {
writeLocations(track);
writeMarkers(track);
}
for (Track track : tracks) {
writeTrackPoints(track);
}
writeFooter();
@@ -112,7 +113,7 @@ public class GPXTrackExporter implements TrackExporter {
}
}
private void writeLocations(Track track) throws InterruptedException {
private void writeTrackPoints(Track track) throws InterruptedException {
boolean wroteTrack = false;
boolean wroteSegment = false;
@@ -183,7 +184,7 @@ public class GPXTrackExporter implements TrackExporter {
}
public void writeHeader(Track track) {
public void writeHeader() {
if (printWriter != null) {
printWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
printWriter.println("<gpx");
@@ -200,12 +201,6 @@ public class GPXTrackExporter implements TrackExporter {
+ " http://www.topografix.com/GPX/Private/TopoGrafix/0/1 http://www.topografix.com/GPX/Private/TopoGrafix/0/1/topografix.xsd"
+ " http://www.garmin.com/xmlschemas/TrackPointExtension/v2 https://www8.garmin.com/xmlschemas/TrackPointExtensionv2.xsd"
+ " http://opentracksapp.com/xmlschemas/v1 http://opentracksapp.com/xmlschemas/OpenTracks_v1.xsd\">");
printWriter.println("<metadata>");
printWriter.println("<name>" + StringUtils.formatCData(track.getName()) + "</name>");
printWriter.println("<desc>" + StringUtils.formatCData(track.getDescription()) + "</desc>");
printWriter.println("</metadata>");
}
}