summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-12-08 14:37:01 +0100
committerGitHub <noreply@github.com>2016-12-08 14:37:01 +0100
commit7cf10ee524b39d3fbcd0414ed392c4deac8677b2 (patch)
treee3d2de3d6cdc89b7cec743efd9a4f9b4a165e640 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps
parent3d2dc471918a38610105509a73eda39d5112ce6b (diff)
downloadqtlocation-mapboxgl-7cf10ee524b39d3fbcd0414ed392c4deac8677b2.tar.gz
[android] - remove location enabled flag from MapboxMap (#7308)
* [android] - remove location enabled flag from MapboxMap, decouple TrackingSettings from MyLocationViewSettings using a FocalPointChangeListener interface, Move state related to tracking modes to MyLocationView (shared object between MyLocationViewSettings and FocalPointChangeListener). * fixup tests
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java2
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java10
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java58
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java11
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java29
5 files changed, 64 insertions, 46 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
index cd7caf395d..58144d7a2c 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java
@@ -173,7 +173,7 @@ public class MapView extends FrameLayout {
Projection projection = new Projection(nativeMapView);
UiSettings uiSettings = new UiSettings(projection, focalPointInvalidator, compassView, attributionsView, logoView);
TrackingSettings trackingSettings = new TrackingSettings(myLocationView, uiSettings, focalPointInvalidator);
- MyLocationViewSettings myLocationViewSettings = new MyLocationViewSettings(projection, myLocationView, trackingSettings);
+ MyLocationViewSettings myLocationViewSettings = new MyLocationViewSettings(myLocationView, projection, focalPointInvalidator);
MarkerViewManager markerViewManager = new MarkerViewManager(markerViewContainer);
AnnotationManager annotationManager = new AnnotationManager(nativeMapView, this, markerViewManager);
Transform transform = new Transform(nativeMapView, annotationManager.getMarkerViewManager(), trackingSettings);
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
index fe274516c4..9cf09325b6 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
@@ -75,8 +75,6 @@ public final class MapboxMap {
private MapboxMap.OnFpsChangedListener onFpsChangedListener;
- private boolean myLocationEnabled;
-
private double maxZoomLevel = -1;
private double minZoomLevel = -1;
@@ -1526,7 +1524,7 @@ public final class MapboxMap {
*/
@UiThread
public boolean isMyLocationEnabled() {
- return myLocationEnabled;
+ return trackingSettings.isMyLocationEnabled();
}
/**
@@ -1543,12 +1541,6 @@ public final class MapboxMap {
*/
@UiThread
public void setMyLocationEnabled(boolean enabled) {
- if (!trackingSettings.isPermissionsAccepted()) {
- Timber.e("Could not activate user location tracking: "
- + "user did not accept the permission or permissions were not requested.");
- return;
- }
- myLocationEnabled = enabled;
trackingSettings.setMyLocationEnabled(enabled);
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java
index 560f7375c9..201cbe3c6b 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java
@@ -16,6 +16,8 @@ import com.mapbox.mapboxsdk.location.LocationListener;
import com.mapbox.mapboxsdk.location.LocationServices;
import com.mapbox.mapboxsdk.maps.widgets.MyLocationView;
+import timber.log.Timber;
+
/**
* Settings for the user location and bearing tracking of a MapboxMap.
*/
@@ -26,16 +28,12 @@ public final class TrackingSettings {
private final FocalPointChangeListener focalPointChangedListener;
private LocationListener myLocationListener;
- @MyLocationTracking.Mode
- private int myLocationTrackingMode;
-
- @MyBearingTracking.Mode
- private int myBearingTrackingMode;
+ private boolean myLocationEnabled;
+ private boolean dismissLocationTrackingOnGesture = true;
+ private boolean dismissBearingTrackingOnGesture = true;
private MapboxMap.OnMyLocationTrackingModeChangeListener onMyLocationTrackingModeChangeListener;
private MapboxMap.OnMyBearingTrackingModeChangeListener onMyBearingTrackingModeChangeListener;
- private boolean dismissLocationTrackingOnGesture = true;
- private boolean dismissBearingTrackingOnGesture = true;
TrackingSettings(@NonNull MyLocationView myLocationView, UiSettings uiSettings, FocalPointChangeListener focalPointChangedListener) {
this.myLocationView = myLocationView;
@@ -58,7 +56,6 @@ public final class TrackingSettings {
*/
@UiThread
public void setMyLocationTrackingMode(@MyLocationTracking.Mode int myLocationTrackingMode) {
- this.myLocationTrackingMode = myLocationTrackingMode;
myLocationView.setMyLocationTrackingMode(myLocationTrackingMode);
if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) {
@@ -82,7 +79,7 @@ public final class TrackingSettings {
@UiThread
@MyLocationTracking.Mode
public int getMyLocationTrackingMode() {
- return myLocationTrackingMode;
+ return myLocationView.getMyLocationTrackingMode();
}
/**
@@ -102,7 +99,6 @@ public final class TrackingSettings {
*/
@UiThread
public void setMyBearingTrackingMode(@MyBearingTracking.Mode int myBearingTrackingMode) {
- this.myBearingTrackingMode = myBearingTrackingMode;
myLocationView.setMyBearingTrackingMode(myBearingTrackingMode);
if (onMyBearingTrackingModeChangeListener != null) {
onMyBearingTrackingModeChangeListener.onMyBearingTrackingModeChange(myBearingTrackingMode);
@@ -119,7 +115,7 @@ public final class TrackingSettings {
@UiThread
@MyBearingTracking.Mode
public int getMyBearingTrackingMode() {
- return myBearingTrackingMode;
+ return myLocationView.getMyBearingTrackingMode();
}
/**
@@ -205,7 +201,7 @@ public final class TrackingSettings {
* @return True if location tracking is disabled.
*/
public boolean isLocationTrackingDisabled() {
- return myLocationTrackingMode == MyLocationTracking.TRACKING_NONE;
+ return myLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE;
}
/**
@@ -214,7 +210,7 @@ public final class TrackingSettings {
* @return True if bearing tracking is disabled.
*/
public boolean isBearingTrackingDisabled() {
- return myBearingTrackingMode == MyBearingTracking.NONE;
+ return myLocationView.getMyBearingTrackingMode() == MyBearingTracking.NONE;
}
/**
@@ -227,7 +223,9 @@ public final class TrackingSettings {
// The user settings are enabled AND;
// EITHER bearing tracking is dismissed on gesture OR there is no bearing tracking
return uiSettings.isRotateGesturesEnabled() &&
- (dismissBearingTrackingOnGesture || myBearingTrackingMode == MyBearingTracking.NONE || (myLocationTrackingMode == MyLocationTracking.TRACKING_NONE));
+ (dismissBearingTrackingOnGesture
+ || myLocationView.getMyBearingTrackingMode() == MyBearingTracking.NONE
+ || myLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE);
}
/**
@@ -237,7 +235,8 @@ public final class TrackingSettings {
*/
public boolean isScrollGestureCurrentlyEnabled() {
return uiSettings.isScrollGesturesEnabled() &&
- (dismissLocationTrackingOnGesture || myLocationTrackingMode == MyLocationTracking.TRACKING_NONE);
+ (dismissLocationTrackingOnGesture
+ || myLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE);
}
/**
@@ -263,18 +262,6 @@ public final class TrackingSettings {
resetTrackingModesIfRequired(cameraPosition.target != null, cameraPosition.bearing != -1);
}
- public void invalidateFocalPointForTracking(MyLocationView myLocationView) {
- if (!isLocationTrackingDisabled()) {
- focalPointChangedListener.onFocalPointChanged(new PointF(myLocationView.getCenterX(), myLocationView.getCenterY()));
- } else {
- focalPointChangedListener.onFocalPointChanged(null);
- }
- }
-
- void setMyLocationEnabled(boolean enabled) {
- myLocationView.setEnabled(enabled);
- }
-
Location getMyLocation() {
return myLocationView.getLocation();
}
@@ -309,7 +296,22 @@ public final class TrackingSettings {
this.onMyBearingTrackingModeChangeListener = onMyBearingTrackingModeChangeListener;
}
- MyLocationView getMyLocationView(){
+ MyLocationView getMyLocationView() {
return myLocationView;
}
+
+
+ boolean isMyLocationEnabled() {
+ return myLocationEnabled;
+ }
+
+ void setMyLocationEnabled(boolean locationEnabled) {
+ if (!isPermissionsAccepted()) {
+ Timber.e("Could not activate user location tracking: "
+ + "user did not accept the permission or permissions were not requested.");
+ return;
+ }
+ myLocationEnabled = locationEnabled;
+ myLocationView.setEnabled(locationEnabled);
+ }
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
index 1f30734d53..ca070a8864 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
@@ -488,6 +488,17 @@ public class MyLocationView extends View {
invalidate();
}
+ @MyLocationTracking.Mode
+ public int getMyLocationTrackingMode() {
+ return myLocationTrackingMode;
+ }
+
+
+ @MyBearingTracking.Mode
+ public int getMyBearingTrackingMode() {
+ return myBearingTrackingMode;
+ }
+
private void setCompass(double bearing) {
setCompass(bearing, 0 /* no animation */);
}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java
index d8450ff451..5ff97b3af0 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java
@@ -1,11 +1,13 @@
package com.mapbox.mapboxsdk.maps.widgets;
+import android.graphics.PointF;
import android.graphics.drawable.Drawable;
import android.support.annotation.ColorInt;
import android.support.annotation.IntRange;
+import com.mapbox.mapboxsdk.constants.MyLocationTracking;
+import com.mapbox.mapboxsdk.maps.FocalPointChangeListener;
import com.mapbox.mapboxsdk.maps.Projection;
-import com.mapbox.mapboxsdk.maps.TrackingSettings;
/**
* Settings to configure the visual appearance of the MyLocationView.
@@ -13,8 +15,8 @@ import com.mapbox.mapboxsdk.maps.TrackingSettings;
public class MyLocationViewSettings {
private Projection projection;
- private TrackingSettings trackingSettings;
private MyLocationView myLocationView;
+ private FocalPointChangeListener focalPointChangeListener;
//
// State
@@ -59,15 +61,17 @@ public class MyLocationViewSettings {
/**
* Creates an instance of MyLocationViewSettings
+ * <p>
*
- * @param projection the MapView projection
- * @param myLocationView the MyLocationView to apply the settings to
+ * @param myLocationView the MyLocationView to apply the settings to
+ * @param projection the MapView projection
+ * @param focalPointChangedListener the interface to be invoked when focal points changes
* @see MyLocationView
*/
- public MyLocationViewSettings(Projection projection, MyLocationView myLocationView, TrackingSettings trackingSettings) {
- this.projection = projection;
+ public MyLocationViewSettings(MyLocationView myLocationView, Projection projection, FocalPointChangeListener focalPointChangedListener) {
this.myLocationView = myLocationView;
- this.trackingSettings = trackingSettings;
+ this.projection = projection;
+ this.focalPointChangeListener = focalPointChangedListener;
}
/**
@@ -212,7 +216,7 @@ public class MyLocationViewSettings {
padding = new int[]{left, top, right, bottom};
myLocationView.setContentPadding(padding);
projection.invalidateContentPadding(padding);
- trackingSettings.invalidateFocalPointForTracking(myLocationView);
+ invalidateFocalPointForTracking(myLocationView);
}
/**
@@ -265,4 +269,13 @@ public class MyLocationViewSettings {
public void setTilt(double tilt) {
myLocationView.setTilt(tilt);
}
+
+ private void invalidateFocalPointForTracking(MyLocationView myLocationView) {
+ if (!(myLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE)) {
+ focalPointChangeListener.onFocalPointChanged(new PointF(myLocationView.getCenterX(), myLocationView.getCenterY()));
+ } else {
+ focalPointChangeListener.onFocalPointChanged(null);
+ }
+ }
+
}