summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java29
1 files changed, 21 insertions, 8 deletions
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 4f27e0ada8..3f37da99d5 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
@@ -35,9 +35,9 @@ import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.Projection;
-import com.mapbox.services.android.telemetry.location.LocationEngine;
-import com.mapbox.services.android.telemetry.location.LocationEngineListener;
-import com.mapbox.services.android.telemetry.location.LocationEnginePriority;
+import com.mapbox.android.core.location.LocationEngine;
+import com.mapbox.android.core.location.LocationEngineListener;
+import com.mapbox.android.core.location.LocationEnginePriority;
import java.lang.ref.WeakReference;
@@ -356,7 +356,9 @@ public class MyLocationView extends View {
foregroundDrawable.draw(canvas);
}
} else if (foregroundBearingDrawable != null && foregroundBounds != null) {
- if (myBearingTrackingMode == MyBearingTracking.GPS || compassListener.isSensorAvailable()) {
+ if (myBearingTrackingMode == MyBearingTracking.GPS
+ || myBearingTrackingMode == MyBearingTracking.GPS_NORTH_FACING
+ || compassListener.isSensorAvailable()) {
foregroundBearingDrawable.draw(canvas);
} else {
// We are tracking MyBearingTracking.COMPASS, but sensor is not available.
@@ -383,7 +385,8 @@ public class MyLocationView extends View {
public void setBearing(double bearing) {
this.bearing = bearing;
if (myLocationTrackingMode == MyLocationTracking.TRACKING_NONE) {
- if (myBearingTrackingMode == MyBearingTracking.GPS) {
+ if (myBearingTrackingMode == MyBearingTracking.GPS
+ || myBearingTrackingMode == MyBearingTracking.GPS_NORTH_FACING) {
if (location != null) {
setCompass(location.getBearing() - bearing);
}
@@ -519,7 +522,8 @@ public class MyLocationView extends View {
}
private void toggleGps(boolean enableGps) {
- toggleGps(enableGps, mapboxMap != null && mapboxMap.getTrackingSettings().isCustomLocationSource());
+ toggleGps(enableGps, mapboxMap != null
+ && mapboxMap.getTrackingSettings().isCustomLocationSource());
}
/**
@@ -580,7 +584,8 @@ public class MyLocationView extends View {
this.location = location;
myLocationBehavior.updateLatLng(location);
- if (mapboxMap != null && myBearingTrackingMode == MyBearingTracking.GPS
+ if (mapboxMap != null && (myBearingTrackingMode == MyBearingTracking.GPS
+ || myBearingTrackingMode == MyBearingTracking.GPS_NORTH_FACING)
&& myLocationTrackingMode == MyLocationTracking.TRACKING_NONE) {
setBearing(mapboxMap.getCameraPosition().bearing);
}
@@ -616,7 +621,8 @@ public class MyLocationView extends View {
compassListener.onResume();
} else {
compassListener.onPause();
- if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) {
+ if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW
+ && myBearingTrackingMode == MyBearingTracking.GPS) {
// always face north
setCompass(0);
} else {
@@ -1017,6 +1023,13 @@ public class MyLocationView extends View {
setCompass(0, COMPASS_UPDATE_RATE_MS);
}
+ if (myBearingTrackingMode == MyBearingTracking.GPS_NORTH_FACING) {
+ builder.bearing(0);
+ if (location.hasBearing()) {
+ setCompass(location.getBearing(), COMPASS_UPDATE_RATE_MS);
+ }
+ }
+
// accuracy
updateAccuracy(location);