diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java
index 5f44604ed..7a95a7aaa 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/CsvTrackWriter.java
@@ -123,10 +123,10 @@ public class CsvTrackWriter implements TrackFormatWriter {
waypoint.getDescription(),
Double.toString(location.getLatitude()),
Double.toString(location.getLongitude()),
- Double.toString(location.getAltitude()),
- Double.toString(location.getBearing()),
- SHORT_FORMAT.format(location.getAccuracy()),
- SHORT_FORMAT.format(location.getSpeed()),
+ getAltitude(location),
+ getBearing(location),
+ getAccuracy(location),
+ getSpeed(location),
StringUtils.formatDateTimeIso8601(location.getTime()));
}
@@ -196,16 +196,32 @@ public class CsvTrackWriter implements TrackFormatWriter {
Integer.toString(pointIndex),
Double.toString(location.getLatitude()),
Double.toString(location.getLongitude()),
- Double.toString(location.getAltitude()),
- Double.toString(location.getBearing()),
- SHORT_FORMAT.format(location.getAccuracy()),
- SHORT_FORMAT.format(location.getSpeed()),
+ getAltitude(location),
+ getBearing(location),
+ getAccuracy(location),
+ getSpeed(location),
StringUtils.formatDateTimeIso8601(location.getTime()),
power,
cadence,
heartRate);
}
-
+
+ private String getAltitude(Location location) {
+ return location.hasAltitude() ? Double.toString(location.getAltitude()) : null;
+ }
+
+ private String getBearing(Location location) {
+ return location.hasBearing() ? Double.toString(location.getBearing()) : null;
+ }
+
+ private String getAccuracy(Location location) {
+ return location.hasAccuracy() ? SHORT_FORMAT.format(location.getAccuracy()) : null;
+ }
+
+ private String getSpeed(Location location) {
+ return location.hasSpeed() ? SHORT_FORMAT.format(location.getSpeed()) : null;
+ }
+
/**
* Writes a single line of a CSV file.
*
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java
index 7161f77e2..75d45dad5 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/GpxTrackWriter.java
@@ -138,7 +138,9 @@ public class GpxTrackWriter implements TrackFormatWriter {
public void writeLocation(Location location) {
if (printWriter != null) {
printWriter.println("");
- printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + "");
+ if (location.hasAltitude()) {
+ printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + "");
+ }
printWriter.println(
"");
printWriter.println("");
@@ -161,7 +163,9 @@ public class GpxTrackWriter implements TrackFormatWriter {
Location location = waypoint.getLocation();
if (location != null) {
printWriter.println("");
- printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + "");
+ if (location.hasAltitude()) {
+ printWriter.println("" + ELEVATION_FORMAT.format(location.getAltitude()) + "");
+ }
printWriter.println(
"");
printWriter.println("" + StringUtils.formatCData(waypoint.getName()) + "");
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java
index 7c7f275e1..a7640edbe 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/KmlTrackWriter.java
@@ -229,8 +229,7 @@ public class KmlTrackWriter implements TrackFormatWriter {
if (printWriter != null) {
printWriter.println(
"" + StringUtils.formatDateTimeIso8601(location.getTime()) + "");
- printWriter.println("" + location.getLongitude() + " " + location.getLatitude()
- + " " + location.getAltitude() + "");
+ printWriter.println("" + getCoordinates(location, " ") + "");
if (location instanceof MyTracksLocation) {
SensorDataSet sensorDataSet = ((MyTracksLocation) location).getSensorDataSet();
int power = -1;
@@ -302,12 +301,20 @@ public class KmlTrackWriter implements TrackFormatWriter {
printWriter.println("#" + styleName + "");
writeCategory(category);
printWriter.println("");
- printWriter.println("" + location.getLongitude() + "," + location.getLatitude()
- + "," + location.getAltitude() + "");
+ printWriter.println("" + getCoordinates(location, ",") + "");
printWriter.println("");
printWriter.println("");
}
}
+
+ private String getCoordinates(Location location, String separator) {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(location.getLongitude() + separator + location.getLatitude());
+ if (location.hasAltitude()) {
+ buffer.append(separator + location.getAltitude());
+ }
+ return buffer.toString();
+ }
/**
* Writes the category.
diff --git a/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java b/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java
index 27dfa8b60..827b2a3b1 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/io/file/TcxTrackWriter.java
@@ -204,7 +204,9 @@ public class TcxTrackWriter implements TrackFormatWriter {
printWriter.println("" + location.getLatitude() + "");
printWriter.println("" + location.getLongitude() + "");
printWriter.println("");
- printWriter.println("" + location.getAltitude() + "");
+ if (location.hasAltitude()) {
+ printWriter.println("" + location.getAltitude() + "");
+ }
if (location instanceof MyTracksLocation) {
SensorDataSet sensorDataSet = ((MyTracksLocation) location).getSensorDataSet();