diff options
author | Pablo Guardiola <guardiola31337@gmail.com> | 2017-05-31 09:56:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-31 09:56:31 +0200 |
commit | 893584517182c270b7238a2fddb616a8a0e657d6 (patch) | |
tree | d7ccce3bfdcbbb845b98bd0131ffab5333b6079c /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java | |
parent | 04c5399d41907592d40bf1ab335d741613918278 (diff) | |
download | qtlocation-mapboxgl-893584517182c270b7238a2fddb616a8a0e657d6.tar.gz |
[android] Fix tracking mode + camera race condition (#9133)
* [android] fix tracking mode + camera race condition
* fix resetTrackingModesIfRequired bug (comparing current camera position with target camera position
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java | 49 |
1 files changed, 5 insertions, 44 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java index aecf3cc655..db2a335453 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java @@ -484,19 +484,8 @@ public class MyLocationView extends View { if (location != null) { if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) { // center map directly - mapboxMap.getTrackingSettings().setDismissTrackingModeForCameraPositionChange(false); mapboxMap.easeCamera(CameraUpdateFactory.newLatLng(new LatLng(location)), 0, false /*linear interpolator*/, - new MapboxMap.CancelableCallback() { - @Override - public void onCancel() { - - } - - @Override - public void onFinish() { - mapboxMap.getTrackingSettings().setDismissTrackingModeForCameraPositionChange(true); - } - }); + null, true); } else { // do not use interpolated location from tracking mode latLng = null; @@ -662,19 +651,8 @@ public class MyLocationView extends View { private void rotateCamera(float rotation) { CameraPosition.Builder builder = new CameraPosition.Builder(); builder.bearing(rotation); - mapboxMap.getTrackingSettings().setDismissTrackingModeForCameraPositionChange(false); mapboxMap.easeCamera(CameraUpdateFactory.newCameraPosition(builder.build()), COMPASS_UPDATE_RATE_MS, - false /*linear interpolator*/, new MapboxMap.CancelableCallback() { - @Override - public void onCancel() { - - } - - @Override - public void onFinish() { - mapboxMap.getTrackingSettings().setDismissTrackingModeForCameraPositionChange(true); - } - }); + false /*linear interpolator*/, null); } @Override @@ -749,7 +727,7 @@ public class MyLocationView extends View { abstract void invalidate(); } - private class MyLocationTrackingBehavior extends MyLocationBehavior implements MapboxMap.CancelableCallback { + private class MyLocationTrackingBehavior extends MyLocationBehavior { @Override void updateLatLng(@NonNull Location location) { @@ -788,10 +766,9 @@ public class MyLocationView extends View { // accuracy updateAccuracy(location); - // disable dismiss of tracking settings, enabled in #onFinish - mapboxMap.getTrackingSettings().setDismissTrackingModeForCameraPositionChange(false); // ease to new camera position with a linear interpolator - mapboxMap.easeCamera(CameraUpdateFactory.newCameraPosition(builder.build()), animationDuration, false, this); + mapboxMap.easeCamera(CameraUpdateFactory.newCameraPosition(builder.build()), animationDuration, false, null, + true); } @Override @@ -802,22 +779,6 @@ public class MyLocationView extends View { screenLocation = new PointF(x, y); MyLocationView.this.invalidate(); } - - @Override - public void onCancel() { - //no op - } - - @Override - public void onFinish() { - // Posting to end message queue to avoid race condition #8560 - post(new Runnable() { - @Override - public void run() { - mapboxMap.getTrackingSettings().setDismissTrackingModeForCameraPositionChange(true); - } - }); - } } private class MyLocationShowBehavior extends MyLocationBehavior { |