summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java28
1 files changed, 23 insertions, 5 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
index b9aa371a47..6c1b6b4fd6 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationCameraController.java
@@ -21,6 +21,8 @@ import com.mapbox.mapboxsdk.maps.MapboxMap;
import java.util.HashSet;
import java.util.Set;
+import static com.mapbox.mapboxsdk.location.LocationComponentConstants.TRANSITION_ANIMATION_DURATION_MS;
+
final class LocationCameraController {
@CameraMode.Mode
@@ -87,10 +89,12 @@ final class LocationCameraController {
}
void setCameraMode(@CameraMode.Mode int cameraMode) {
- setCameraMode(cameraMode, null, null);
+ setCameraMode(cameraMode, null, TRANSITION_ANIMATION_DURATION_MS, null, null, null, null);
}
void setCameraMode(@CameraMode.Mode final int cameraMode, @Nullable Location lastLocation,
+ long transitionDuration,
+ @Nullable Double zoom, @Nullable Double bearing, @Nullable Double tilt,
@Nullable OnLocationCameraTransitionListener internalTransitionListener) {
final boolean wasTracking = isLocationTracking();
this.cameraMode = cameraMode;
@@ -101,7 +105,8 @@ final class LocationCameraController {
adjustGesturesThresholds();
notifyCameraTrackingChangeListener(wasTracking);
- transitionToCurrentLocation(wasTracking, lastLocation, internalTransitionListener);
+ transitionToCurrentLocation(
+ wasTracking, lastLocation, transitionDuration, zoom, bearing, tilt, internalTransitionListener);
}
/**
@@ -109,13 +114,26 @@ final class LocationCameraController {
* Notifies an internal listener when the transition's finished to invalidate animators and notify external listeners.
*/
private void transitionToCurrentLocation(boolean wasTracking, Location lastLocation,
+ long transitionDuration,
+ Double zoom, Double bearing, Double tilt,
final OnLocationCameraTransitionListener internalTransitionListener) {
if (!wasTracking && isLocationTracking() && lastLocation != null) {
isTransitioning = true;
LatLng target = new LatLng(lastLocation);
+
CameraPosition.Builder builder = new CameraPosition.Builder().target(target);
- if (isLocationBearingTracking()) {
- builder.bearing(cameraMode == CameraMode.TRACKING_GPS_NORTH ? 0 : lastLocation.getBearing());
+ if (zoom != null) {
+ builder.zoom(zoom);
+ }
+ if (tilt != null) {
+ builder.tilt(tilt);
+ }
+ if (bearing != null) {
+ builder.bearing(bearing);
+ } else {
+ if (isLocationBearingTracking()) {
+ builder.bearing(cameraMode == CameraMode.TRACKING_GPS_NORTH ? 0 : lastLocation.getBearing());
+ }
}
CameraUpdate update = CameraUpdateFactory.newCameraPosition(builder.build());
@@ -145,7 +163,7 @@ final class LocationCameraController {
} else {
mapboxMap.animateCamera(
update,
- (int) LocationComponentConstants.TRANSITION_ANIMATION_DURATION_MS,
+ (int) transitionDuration,
callback);
}
} else {