[android] #5737 - disable tracking when a camera change occurs, treat camera change equal to gesture (#6414)

This commit is contained in:
Tobrun
2016-09-22 16:30:24 +02:00
committed by Antonio Zugaldia
parent d3eaf98ca1
commit e8d47269f8
2 changed files with 18 additions and 2 deletions

View File

@@ -2571,7 +2571,7 @@ public class MapView extends FrameLayout {
ContextCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED;
}
private void resetTrackingModesIfRequired() {
void resetTrackingModesIfRequired() {
TrackingSettings trackingSettings = mapboxMap.getTrackingSettings();
if (trackingSettings.isDismissLocationTrackingOnGesture()) {
resetLocationTrackingMode();
@@ -2592,7 +2592,8 @@ public class MapView extends FrameLayout {
private void resetBearingTrackingMode() {
try {
setMyBearingTrackingMode(MyBearingTracking.NONE);
TrackingSettings trackingSettings = mapboxMap.getTrackingSettings();
trackingSettings.setMyBearingTrackingMode(MyBearingTracking.NONE);
} catch (SecurityException ignore) {
// User did not accept location permissions
}

View File

@@ -368,6 +368,11 @@ public class MapboxMap {
*/
@UiThread
public final void moveCamera(CameraUpdate update, MapboxMap.CancelableCallback callback) {
// dismiss tracking, moving camera is equal to a gesture
if (!trackingSettings.isLocationTrackingDisabled()) {
mapView.resetTrackingModesIfRequired();
}
cameraPosition = update.getCameraPosition(this);
mapView.jumpTo(cameraPosition.bearing, cameraPosition.target, cameraPosition.tilt, cameraPosition.zoom);
if (callback != null) {
@@ -433,6 +438,11 @@ public class MapboxMap {
@UiThread
public final void easeCamera(
CameraUpdate update, int durationMs, boolean easingInterpolator, final MapboxMap.CancelableCallback callback) {
// dismiss tracking, moving camera is equal to a gesture
if (!trackingSettings.isLocationTrackingDisabled()) {
mapView.resetTrackingModesIfRequired();
}
cameraPosition = update.getCameraPosition(this);
mapView.easeTo(cameraPosition.bearing, cameraPosition.target, getDurationNano(durationMs), cameraPosition.tilt,
cameraPosition.zoom, easingInterpolator, new CancelableCallback() {
@@ -521,6 +531,11 @@ public class MapboxMap {
*/
@UiThread
public final void animateCamera(CameraUpdate update, int durationMs, final MapboxMap.CancelableCallback callback) {
// dismiss tracking, moving camera is equal to a gesture
if (!trackingSettings.isLocationTrackingDisabled() && trackingSettings.isDismissLocationTrackingOnGesture()) {
mapView.resetTrackingModesIfRequired();
}
cameraPosition = update.getCameraPosition(this);
mapView.flyTo(cameraPosition.bearing, cameraPosition.target, getDurationNano(durationMs), cameraPosition.tilt,
cameraPosition.zoom, new CancelableCallback() {