summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukasz.paczos@mapbox.com>2018-06-19 15:52:31 +0200
committerŁukasz Paczos <lukasz.paczos@mapbox.com>2018-06-19 15:52:31 +0200
commitc643bb05486af42951e8bcd945020b089a75e6ea (patch)
tree99a46725abde61ad78a61f2a1321191825316b5d
parent87143a355d12fa4bfd3f094e187a8bab8148e7de (diff)
downloadqtlocation-mapboxgl-upstream/12165-dispatch-camera-start-when-moving.tar.gz
[android] - dispatch camera start callback only when actually movingupstream/12165-dispatch-camera-start-when-moving
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java28
1 files changed, 12 insertions, 16 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java
index 896f655bbc..6cb09f2195 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java
@@ -438,25 +438,24 @@ final class MapGestureDetector {
}
transform.cancelTransitions();
- cameraChangeDispatcher.onCameraMoveStarted(REASON_API_GESTURE);
-
sendTelemetryEvent(Telemetry.PAN, detector.getFocalPoint());
-
notifyOnMoveBeginListeners(detector);
-
return true;
}
@Override
public boolean onMove(MoveGestureDetector detector, float distanceX, float distanceY) {
- // dispatching start even once more if another detector ended, and this one didn't
- cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE);
+ // first move event is often delivered with no displacement
+ if (distanceX != 0 || distanceY != 0) {
+ // dispatching camera start event only when the movement actually occurred
+ cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE);
- // Scroll the map
- transform.moveBy(-distanceX, -distanceY, 0 /*no duration*/);
+ // Scroll the map
+ transform.moveBy(-distanceX, -distanceY, 0 /*no duration*/);
- notifyOnScrollListeners();
- notifyOnMoveListeners(detector);
+ notifyOnScrollListeners();
+ notifyOnMoveListeners(detector);
+ }
return true;
}
@@ -485,7 +484,6 @@ final class MapGestureDetector {
}
transform.cancelTransitions();
- cameraChangeDispatcher.onCameraMoveStarted(REASON_API_GESTURE);
quickZoom = detector.getPointersCount() == 1;
if (quickZoom) {
@@ -514,7 +512,7 @@ final class MapGestureDetector {
@Override
public boolean onScale(StandardScaleGestureDetector detector) {
- // dispatching start even once more if another detector ended, and this one didn't
+ // dispatching camera start event only when the movement actually occurred
cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE);
setScaleFocalPoint(detector);
@@ -615,7 +613,6 @@ final class MapGestureDetector {
}
transform.cancelTransitions();
- cameraChangeDispatcher.onCameraMoveStarted(REASON_API_GESTURE);
if (uiSettings.isIncreaseScaleThresholdWhenRotating()) {
// when rotation starts, interrupting scale and increasing the threshold
@@ -637,7 +634,7 @@ final class MapGestureDetector {
@Override
public boolean onRotate(RotateGestureDetector detector, float rotationDegreesSinceLast,
float rotationDegreesSinceFirst) {
- // dispatching start even once more if another detector ended, and this one didn't
+ // dispatching camera start event only when the movement actually occurred
cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE);
setRotateFocalPoint(detector);
@@ -743,7 +740,6 @@ final class MapGestureDetector {
}
transform.cancelTransitions();
- cameraChangeDispatcher.onCameraMoveStarted(REASON_API_GESTURE);
sendTelemetryEvent(Telemetry.PITCH, detector.getFocalPoint());
@@ -757,7 +753,7 @@ final class MapGestureDetector {
@Override
public boolean onShove(ShoveGestureDetector detector, float deltaPixelsSinceLast, float deltaPixelsSinceStart) {
- // dispatching start even once more if another detector ended, and this one didn't
+ // dispatching camera start event only when the movement actually occurred
cameraChangeDispatcher.onCameraMoveStarted(CameraChangeDispatcher.REASON_API_GESTURE);
// Get tilt value (scale and clamp)