diff options
author | Pablo Guardiola <guardiola31337@gmail.com> | 2017-02-09 14:33:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-09 14:33:24 +0100 |
commit | dfb3c34837ca6b59ebafd7f03dfe3cf23a7955ea (patch) | |
tree | 4063a76b444bca49c941847162e0dd00ad1ed703 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java | |
parent | 5f28bdc6999ca25013b6b855f5df9a6db9e1e248 (diff) | |
download | qtlocation-mapboxgl-dfb3c34837ca6b59ebafd7f03dfe3cf23a7955ea.tar.gz |
Compass click rotates around focal point (if available) (#7977)
* add set bearing method taking focal point into account
* notify CompassView when FocalPoint changes
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java index dc4a21f2fe..ed6ef5199a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/CompassView.java @@ -1,17 +1,20 @@ package com.mapbox.mapboxsdk.maps.widgets; import android.content.Context; +import android.graphics.PointF; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewPropertyAnimatorCompat; import android.support.v4.view.ViewPropertyAnimatorListenerAdapter; +import android.support.v7.widget.AppCompatImageView; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.maps.FocalPointChangeListener; import com.mapbox.mapboxsdk.maps.MapboxMap; import java.lang.ref.WeakReference; @@ -25,7 +28,7 @@ import java.lang.ref.WeakReference; * use {@link com.mapbox.mapboxsdk.maps.UiSettings}. * </p> */ -public final class CompassView extends ImageView implements Runnable { +public final class CompassView extends AppCompatImageView implements Runnable, FocalPointChangeListener { private static final long TIME_WAIT_IDLE = 500; private static final long TIME_FADE_ANIMATION = TIME_WAIT_IDLE; @@ -34,6 +37,7 @@ public final class CompassView extends ImageView implements Runnable { private double direction = 0.0; private boolean fadeCompassViewFacingNorth = true; private ViewPropertyAnimatorCompat fadeAnimator; + private PointF focalPoint; public CompassView(Context context) { super(context); @@ -96,6 +100,11 @@ public final class CompassView extends ImageView implements Runnable { } } + @Nullable + PointF getFocalPoint() { + return focalPoint; + } + public void update(final double direction) { this.direction = direction; @@ -143,6 +152,11 @@ public final class CompassView extends ImageView implements Runnable { } } + @Override + public void onFocalPointChanged(PointF pointF) { + focalPoint = pointF; + } + static class CompassClickListener implements View.OnClickListener { private WeakReference<MapboxMap> mapboxMap; @@ -158,7 +172,12 @@ public final class CompassView extends ImageView implements Runnable { final MapboxMap mapboxMap = this.mapboxMap.get(); final CompassView compassView = this.compassView.get(); if (mapboxMap != null && compassView != null) { - mapboxMap.resetNorth(); + PointF focalPoint = compassView.getFocalPoint(); + if (focalPoint != null) { + mapboxMap.setFocalBearing(0, focalPoint.x, focalPoint.y, TIME_MAP_NORTH_ANIMATION); + } else { + mapboxMap.setFocalBearing(0, mapboxMap.getWidth() / 2, mapboxMap.getHeight() / 2, TIME_MAP_NORTH_ANIMATION); + } compassView.postDelayed(compassView, TIME_WAIT_IDLE + TIME_MAP_NORTH_ANIMATION); } } |