Skip to content

Commit

Permalink
KML export: remove #start (was broken due to #316) and #end (included…
Browse files Browse the repository at this point in the history
… track statistics) placemarks.

Fixes #629.
  • Loading branch information
dennisguse committed Mar 8, 2021
1 parent 26e655d commit 114fc82
Showing 1 changed file with 13 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
import java.util.Objects;

import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.DescriptionGenerator;
import de.dennisguse.opentracks.content.data.Marker;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.data.TrackPoint;
Expand All @@ -54,8 +53,6 @@ public class KMLTrackExporter implements TrackExporter {
private static final String TAG = KMLTrackExporter.class.getSimpleName();

public static final String MARKER_STYLE = "waypoint";
private static final String START_STYLE = "start";
private static final String END_STYLE = "end";
private static final String TRACK_STYLE = "track";
private static final String SCHEMA_ID = "schema";

Expand All @@ -67,15 +64,12 @@ public class KMLTrackExporter implements TrackExporter {
public static final String EXTENDED_DATA_TYPE_ELEVATION_LOSS = "elevation_loss";

private static final String MARKER_ICON = "http://maps.google.com/mapfiles/kml/pushpin/blue-pushpin.png";
private static final String START_ICON = "http://maps.google.com/mapfiles/kml/paddle/grn-circle.png";
private static final String END_ICON = "http://maps.google.com/mapfiles/kml/paddle/red-circle.png";
private static final String TRACK_ICON = "http://earth.google.com/images/kml-icons/track-directional/track-0.png";

private final Context context;
private final boolean exportPhotos;
private final boolean exportTrackDetail;
private final boolean exportSensorData;
private final DescriptionGenerator descriptionGenerator;
private final ContentProviderUtils contentProviderUtils;

private PrintWriter printWriter;
Expand All @@ -86,14 +80,14 @@ public class KMLTrackExporter implements TrackExporter {
private final List<Float> elevationGainList = new ArrayList<>();
private final List<Float> elevationLossList = new ArrayList<>();

@Deprecated // Figure out a better way to do this! (if needed)
private TrackPoint startTrackPoint;

public KMLTrackExporter(Context context, boolean exportTrackDetail, boolean exportSensorData, boolean exportPhotos) {
this.context = context;
this.exportTrackDetail = exportTrackDetail;
this.exportSensorData = exportSensorData;
this.exportPhotos = exportPhotos;
this.descriptionGenerator = new DescriptionGenerator(context);
this.contentProviderUtils = new ContentProviderUtils(context);
}

Expand Down Expand Up @@ -165,9 +159,12 @@ private void writeLocations(Track track, Duration offset) throws InterruptedExce

TrackPoint trackPoint = trackPointIterator.next();
setLocationTime(trackPoint, offset);
if (startTrackPoint == null) {
startTrackPoint = trackPoint;
}

if (!wroteTrack) {
writeBeginTrack(track, trackPoint);
writeBeginTrack(track);
wroteTrack = true;
}

Expand Down Expand Up @@ -202,15 +199,14 @@ private void writeLocations(Track track, Duration offset) throws InterruptedExce
writeCloseSegment();
}

if (wroteTrack) {
TrackPoint lastValidTrackPoint = contentProviderUtils.getLastValidTrackPoint(track.getId());
setLocationTime(lastValidTrackPoint, offset);
writeEndTrack(track, lastValidTrackPoint);
} else {
if (!wroteTrack) {
// Write an empty track
writeBeginTrack(track, null);
writeEndTrack(track, null);
writeBeginTrack(track);
}

writeEndTrack();

startTrackPoint = null;
}
}

Expand Down Expand Up @@ -247,8 +243,6 @@ private void writeHeader(Track[] tracks) {
}

writeTrackStyle();
writePlacemarkerStyle(START_STYLE, START_ICON, 32, 1);
writePlacemarkerStyle(END_STYLE, END_ICON, 32, 1);
writePlacemarkerStyle(MARKER_STYLE, MARKER_ICON, 20, 2);
printWriter.println("<Schema id=\"" + SCHEMA_ID + "\">");

Expand Down Expand Up @@ -312,12 +306,8 @@ private void writeMultiTrackEnd() {
}
}

private void writeBeginTrack(Track track, TrackPoint startTrackPoint) {
this.startTrackPoint = startTrackPoint;
private void writeBeginTrack(Track track) {
if (printWriter != null) {
String name = context.getString(R.string.marker_label_start, track.getName());
Location location = startTrackPoint != null ? startTrackPoint.getLocation() : null;
writePlacemark(name, "", "", START_STYLE, location);
printWriter.println("<Placemark>");

if (exportTrackDetail) {
Expand All @@ -336,17 +326,10 @@ private void writeBeginTrack(Track track, TrackPoint startTrackPoint) {
}


private void writeEndTrack(Track track, TrackPoint endTrackPoint) {
private void writeEndTrack() {
if (printWriter != null) {
printWriter.println("</gx:MultiTrack>");
printWriter.println("</Placemark>");

if (exportTrackDetail) {
String name = context.getString(R.string.marker_label_end, track.getName());
String description = descriptionGenerator.generateTrackDescription(track, false);
Location location = endTrackPoint != null ? endTrackPoint.getLocation() : null;
writePlacemark(name, "", description, END_STYLE, location);
}
}
}

Expand Down

0 comments on commit 114fc82

Please sign in to comment.