From 132ef9a132bb841f07eefd3f17312112db480153 Mon Sep 17 00:00:00 2001 From: danesfeder Date: Thu, 29 Mar 2018 17:25:54 -0400 Subject: [PATCH] Filter location updates and remove unused animator code --- .../locationlayer/LocationLayerAnimator.java | 10 ++ .../locationlayer/camera/MapAnimator.java | 155 ------------------ .../locationlayer/camera/TiltAnimator.java | 19 --- .../locationlayer/camera/ZoomAnimator.java | 19 --- 4 files changed, 10 insertions(+), 193 deletions(-) delete mode 100644 plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/MapAnimator.java delete mode 100644 plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/TiltAnimator.java delete mode 100644 plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/ZoomAnimator.java diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerAnimator.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerAnimator.java index 25bc6f38c..8e66156b0 100644 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerAnimator.java +++ b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/LocationLayerAnimator.java @@ -20,6 +20,8 @@ final class LocationLayerAnimator { + private static final int ONE_SECOND = 1000; + private final List layerListeners = new ArrayList<>(); private final List cameraListeners = new ArrayList<>(); @@ -58,6 +60,10 @@ void feedNewLocation(@NonNull Location newLocation, @NonNull CameraPosition curr locationUpdateTimestamp = SystemClock.elapsedRealtime(); } + if (invalidUpdateInterval()) { + return; + } + LatLng previousLayerLatLng = getPreviousLayerLatLng(); float previousLayerBearing = getPreviousLayerGpsBearing(); LatLng previousCameraLatLng = currentCameraPosition.target; @@ -179,6 +185,10 @@ void cancelAllAnimations() { cancelCameraCompassAnimations(); } + private boolean invalidUpdateInterval() { + return (SystemClock.elapsedRealtime() - locationUpdateTimestamp) < ONE_SECOND; + } + private LatLng getPreviousLayerLatLng() { LatLng previousLatLng; if (layerLatLngAnimator != null) { diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/MapAnimator.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/MapAnimator.java deleted file mode 100644 index 3a6218971..000000000 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/MapAnimator.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.mapbox.mapboxsdk.plugins.locationlayer.camera; - -import android.animation.Animator; -import android.animation.AnimatorSet; -import android.animation.ValueAnimator; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.plugins.locationlayer.Utils; - -import java.util.ArrayList; -import java.util.List; - -public class MapAnimator { - - private List animators; - private AnimatorSet animatorSet; - - private MapAnimator(List animators) { - this.animators = animators; - animatorSet = new AnimatorSet(); - } - - public void playTogether() { - animatorSet.playTogether(animators); - animatorSet.start(); - } - - public void playTogether(@Nullable Animator.AnimatorListener listener) { - animatorSet.addListener(listener); - playTogether(); - } - - public void playSequentially() { - animatorSet.playSequentially(animators); - animatorSet.start(); - } - - public void playSequentially(@Nullable Animator.AnimatorListener listener) { - animatorSet.addListener(listener); - playSequentially(); - } - - public boolean isRunning() { - return animatorSet.isRunning(); - } - - public void cancel() { - animatorSet.cancel(); - } - - public static Builder builder(MapboxMap mapboxMap) { - return new Builder(mapboxMap); - } - - public static final class Builder { - - private final MapboxMap mapboxMap; - private List animators; - private CameraPosition currentPosition; - - private Builder(MapboxMap mapboxMap) { - this.mapboxMap = mapboxMap; - this.animators = new ArrayList<>(); - // Get the current target from the current map camera position - currentPosition = mapboxMap.getCameraPosition(); - } - - public Builder addLatLngAnimator(@NonNull LatLngAnimator latLngAnimator) { - - LatLng currentTarget = currentPosition.target; - if (currentTarget == latLngAnimator.getTarget()) { - return this; - } - - latLngAnimator.setObjectValues(currentTarget, latLngAnimator.getTarget()); - latLngAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.moveCamera(CameraUpdateFactory.newLatLng((LatLng) animation.getAnimatedValue())); - } - }); - - animators.add(latLngAnimator); - return this; - } - - public Builder addZoomAnimator(@NonNull ZoomAnimator zoomAnimator) { - - float currentZoom = (float) currentPosition.zoom; - if (currentZoom == zoomAnimator.getTargetZoom()) { - return this; - } - - zoomAnimator.setFloatValues(currentZoom, zoomAnimator.getTargetZoom()); - zoomAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.moveCamera(CameraUpdateFactory.zoomTo((Float) animation.getAnimatedValue())); - } - }); - - animators.add(zoomAnimator); - return this; - } - - public Builder addBearingAnimator(@NonNull BearingAnimator bearingAnimator) { - - float currentBearing = (float) currentPosition.bearing; - float normalizedTargetBearing = Utils.shortestRotation(currentBearing, bearingAnimator.getTargetBearing()); - if (currentBearing == normalizedTargetBearing) { - return this; - } - - bearingAnimator.setFloatValues(currentBearing, normalizedTargetBearing); - bearingAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.moveCamera(CameraUpdateFactory.bearingTo((Float) animation.getAnimatedValue())); - } - }); - - animators.add(bearingAnimator); - return this; - } - - public Builder addTiltAnimator(@NonNull TiltAnimator tiltAnimator) { - - float currentTilt = (float) currentPosition.tilt; - if (currentTilt == tiltAnimator.getTargetTilt()) { - return this; - } - - tiltAnimator.setFloatValues(currentTilt, tiltAnimator.getTargetTilt()); - tiltAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - mapboxMap.moveCamera(CameraUpdateFactory.tiltTo((Float) animation.getAnimatedValue())); - } - }); - - animators.add(tiltAnimator); - return this; - } - - - public MapAnimator build() { - return new MapAnimator(animators); - } - } -} diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/TiltAnimator.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/TiltAnimator.java deleted file mode 100644 index 216afb148..000000000 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/TiltAnimator.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.mapbox.mapboxsdk.plugins.locationlayer.camera; - -import android.animation.FloatEvaluator; -import android.animation.ValueAnimator; - -public class TiltAnimator extends ValueAnimator { - - private float targetTilt; - - public TiltAnimator(double targetTilt, long duration) { - setEvaluator(new FloatEvaluator()); - setDuration(duration); - this.targetTilt = (float) targetTilt; - } - - public float getTargetTilt() { - return targetTilt; - } -} diff --git a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/ZoomAnimator.java b/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/ZoomAnimator.java deleted file mode 100644 index 34327760e..000000000 --- a/plugin-locationlayer/src/main/java/com/mapbox/mapboxsdk/plugins/locationlayer/camera/ZoomAnimator.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.mapbox.mapboxsdk.plugins.locationlayer.camera; - -import android.animation.FloatEvaluator; -import android.animation.ValueAnimator; - -public class ZoomAnimator extends ValueAnimator { - - private float targetZoom; - - public ZoomAnimator(double targetZoom, long duration) { - setEvaluator(new FloatEvaluator()); - setDuration(duration); - this.targetZoom = (float) targetZoom; - } - - public float getTargetZoom() { - return targetZoom; - } -}