[android] #5737 - disable tracking when a camera change occurs, treat camera change equal to gesture (#6414)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user