From 4f1017ced9fef074feb9375252445ae3c69dddcc Mon Sep 17 00:00:00 2001 From: y20k Date: Mon, 26 Sep 2016 14:43:01 +0200 Subject: [PATCH] clear map did not work properly after orientation change - treat network and gps locations differently --- .../org/y20k/trackbook/MainActivityMapFragment.java | 4 +++- .../org/y20k/trackbook/helpers/LocationHelper.java | 11 +++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java index 4862c36..906bcd2 100644 --- a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java @@ -384,11 +384,13 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys { /* Removes track crumbs from map */ public void clearMap() { -// TODO clear map or clear intent + // clear map if (mTrackOverlay != null) { Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_clear_map), Toast.LENGTH_LONG).show(); mMapView.getOverlays().remove(mTrackOverlay); } + // clear track object + mTrack = null; } diff --git a/app/src/main/java/org/y20k/trackbook/helpers/LocationHelper.java b/app/src/main/java/org/y20k/trackbook/helpers/LocationHelper.java index 6dc1179..c7832ef 100644 --- a/app/src/main/java/org/y20k/trackbook/helpers/LocationHelper.java +++ b/app/src/main/java/org/y20k/trackbook/helpers/LocationHelper.java @@ -140,8 +140,15 @@ public final class LocationHelper implements TrackbookKeys { float distance = newLocation.distanceTo(lastLocation); long timeDifference = newLocation.getElapsedRealtimeNanos() - lastLocation.getElapsedRealtimeNanos(); - // distance is bigger than 10 meters and time difference bigger than 12 seconds - return distance > 10 && timeDifference >= TWELVE_SECONDS_IN_NANOSECONDS; + // TODO check for sudden location jump errors + + if (newLocation.getProvider().equals(LocationManager.GPS_PROVIDER)) { + // CASE GPS: distance is bigger than 10 meters and time difference bigger than 12 seconds + return distance > 10 && timeDifference >= TWELVE_SECONDS_IN_NANOSECONDS; + } else { + // CASE network: distance is bigger than 50 meters and time difference bigger than 12 seconds + return distance > 50 && timeDifference >= TWELVE_SECONDS_IN_NANOSECONDS; + } }