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 { interface TrackExporter {
} }
class KmzTrackExporter implements TrackExporter class KmzTrackExporter implements TrackExporter
KmzTrackExporter o-- FileTrackExporter class KmlTrackExporter implements TrackExporter
class FileTrackExporter implements TrackExporter {
/' One track only '/
}
FileTrackExporter o-- TrackWriter
interface TrackWriter {
}
class GpxTrackWriter implements TrackWriter
class KmlTrackWriter implements TrackWriter
interface TrackImporter { interface TrackImporter {
} }
@@ -91,15 +91,16 @@ public class GPXTrackExporter implements TrackExporter {
@Override @Override
public boolean writeTrack(Track[] tracks, @NonNull OutputStream outputStream) { public boolean writeTrack(Track[] tracks, @NonNull OutputStream outputStream) {
Track mainTrack = tracks[0];
try { try {
prepare(outputStream); prepare(outputStream);
writeHeader(mainTrack); writeHeader();
writeMarkers(mainTrack);
for (Track track : tracks) { for (Track track : tracks) {
writeLocations(track); writeMarkers(track);
}
for (Track track : tracks) {
writeTrackPoints(track);
} }
writeFooter(); 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 wroteTrack = false;
boolean wroteSegment = false; boolean wroteSegment = false;
@@ -183,7 +184,7 @@ public class GPXTrackExporter implements TrackExporter {
} }
public void writeHeader(Track track) { public void writeHeader() {
if (printWriter != null) { if (printWriter != null) {
printWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); printWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
printWriter.println("<gpx"); 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.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://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\">"); + " 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>");
} }
} }