diff --git a/MyTracks/src/com/google/android/apps/mytracks/MyTracksMap.java b/MyTracks/src/com/google/android/apps/mytracks/MyTracksMap.java index 758c0f550..dc9e180df 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MyTracksMap.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MyTracksMap.java @@ -201,7 +201,10 @@ public class MyTracksMap extends MapActivity MyTracksConstants.MAX_DISPLAYED_WAYPOINTS_POINTS); if (cursor != null && cursor.moveToFirst()) { do { - mapOverlay.addWaypoint(providerUtils.createWaypoint(cursor)); + Waypoint waypoint = providerUtils.createWaypoint(cursor); + if (MyTracksUtils.isValidLocation(waypoint.getLocation())) { + mapOverlay.addWaypoint(waypoint); + } } while (cursor.moveToNext()); } } catch (RuntimeException e) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java index 12f66f2ae..a3ece7d66 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java +++ b/MyTracks/src/com/google/android/apps/mytracks/services/TrackRecordingService.java @@ -897,7 +897,14 @@ public class TrackRecordingService extends Service implements LocationListener { } wpt.setTrackId(recordingTrackId); wpt.setLength(length); - if (lastValidLocation != null) { + if (lastValidLocation == null) { + // A null location is ok, and expected on track start. + // Make it an impossible location. + Location l = new Location(""); + l.setLatitude(100); + l.setLongitude(200); + wpt.setLocation(l); + } else { // A null location is ok, and expected on track start. wpt.setLocation(lastLocation); wpt.setDuration(lastLocation.getTime()