summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2018-01-31 11:38:31 +0100
committerTobrun <tobrun.van.nuland@gmail.com>2018-01-31 11:38:31 +0100
commitd2ace04fb130335bdb84b635fda607b23d65d42d (patch)
treef49a36c552e7349ed6fe9d038a953f72549bf21c
parent7694c9c879ae1f9817166576a7c3b484da875ba6 (diff)
parent6dce687c53c7344ae3b0c82fb31b76960794fea7 (diff)
downloadqtlocation-mapboxgl-upstream/martinhellwigbosch-master.tar.gz
Merge branch 'master' of https://github.com/martinhellwigbosch/mapbox-gl-native into martinhellwigbosch-masterupstream/martinhellwigbosch-master
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyBearingTracking.java7
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java16
2 files changed, 18 insertions, 5 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyBearingTracking.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyBearingTracking.java
index ceac862f39..c042b00577 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyBearingTracking.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyBearingTracking.java
@@ -22,7 +22,7 @@ import java.lang.annotation.RetentionPolicy;
*/
public class MyBearingTracking {
- @IntDef( {NONE, COMPASS, GPS})
+ @IntDef( {NONE, COMPASS, GPS, GPS_NORTH_FACING})
@Retention(RetentionPolicy.SOURCE)
public @interface Mode {
}
@@ -42,4 +42,9 @@ public class MyBearingTracking {
*/
public static final int GPS = 0x00000008;
+ /**
+ * Tracking the bearing of the user based on GPS data, but camera always faces north direction
+ */
+ public static final int GPS_NORTH_FACING = 0x0000000B;
+
}
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..0b725642d8 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
@@ -356,7 +356,7 @@ 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 +383,7 @@ 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);
}
@@ -580,7 +580,7 @@ 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 +616,7 @@ 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 +1017,14 @@ 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);