summaryrefslogtreecommitdiff
path: root/platform/android
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-07-11 15:47:20 +0200
committerTobrun Van Nuland <tobrun.van.nuland@gmail.com>2016-07-13 14:52:15 +0200
commit3dacbdd42ead4a9fd883837776584fcd8da91f81 (patch)
treea60994def8043bfd0298ecc8031f7e8cf8b0c085 /platform/android
parent081c61dcc2b4db523a3c359c0ffa206d99ff0923 (diff)
downloadqtlocation-mapboxgl-3dacbdd42ead4a9fd883837776584fcd8da91f81.tar.gz
[android] #5438 - add bearing to MyLocationView for the SDK camera object
[android] #5438 - integrate MyLocationView set bearing inside the MapView setBearing [android] #5438 - invalidate the MapView instead of calling update from core. [android] #5438 - add bearing MyLocationView to setBearing focal point on MapView [android] #5438 - Get correct bearing when camera object is rotated around the z-axis, notify MyLocationView when camera position changes, update test utilities. [android] #5438 - fixes compass tracking
Diffstat (limited to 'platform/android')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java17
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java2
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java35
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/MapboxMapUtils.java4
4 files changed, 28 insertions, 30 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 1562847e77..8a0beadd40 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
@@ -641,6 +641,7 @@ public class MapView extends FrameLayout {
if (mDestroyed) {
return;
}
+ mMyLocationView.setBearing(0);
mNativeMapView.cancelTransitions();
mNativeMapView.resetNorth();
}
@@ -1349,20 +1350,13 @@ public class MapView extends FrameLayout {
}
}
- // Used by UserLocationView
- void update() {
- if (mDestroyed) {
- return;
- }
-
- mNativeMapView.update();
- }
-
CameraPosition invalidateCameraPosition() {
if (mDestroyed) {
return new CameraPosition.Builder().build();
}
- return new CameraPosition.Builder(mNativeMapView.getCameraValues()).build();
+ CameraPosition position = new CameraPosition.Builder(mNativeMapView.getCameraValues()).build();
+ mMyLocationView.setCameraPosition(position);
+ return position;
}
double getBearing() {
@@ -1386,6 +1380,7 @@ public class MapView extends FrameLayout {
if (mDestroyed) {
return;
}
+ mMyLocationView.setBearing(bearing);
mNativeMapView.setBearing(bearing);
}
@@ -1393,6 +1388,7 @@ public class MapView extends FrameLayout {
if (mDestroyed) {
return;
}
+ mMyLocationView.setBearing(bearing);
mNativeMapView.setBearing(bearing, duration);
}
@@ -1400,6 +1396,7 @@ public class MapView extends FrameLayout {
if (mDestroyed) {
return;
}
+ mMyLocationView.setBearing(bearing);
mNativeMapView.setBearing(bearing, focalX, focalY);
}
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 84d121a372..c86a6fc4ec 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
@@ -1629,7 +1629,7 @@ public class MapboxMap {
* Triggers an invalidation of the map view.
*/
public void invalidate() {
- mMapView.update();
+ mMapView.invalidate();
}
/**
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 16ff084a48..04064d1f24 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
@@ -91,6 +91,9 @@ public class MyLocationView extends View {
private Matrix matrix;
private Camera camera;
private PointF screenLocation;
+
+ // camera vars
+ private float bearing;
private float tilt;
@MyLocationTracking.Mode
@@ -260,7 +263,7 @@ public class MyLocationView extends View {
// apply tilt to camera
camera.save();
- camera.rotate(tilt, 0, 0);
+ camera.rotate(tilt, 0, bearing);
// map camera matrix on our matrix
camera.getMatrix(matrix);
@@ -301,6 +304,15 @@ public class MyLocationView extends View {
this.tilt = (float) tilt;
}
+ public void setBearing(double bearing) {
+ this.bearing = (float) bearing;
+ }
+
+ public void setCameraPosition(CameraPosition position) {
+ setTilt(position.tilt);
+ setBearing(position.bearing);
+ }
+
public void onPause() {
compassListener.onPause();
toggleGps(false);
@@ -404,7 +416,7 @@ public class MyLocationView extends View {
compassListener.onPause();
if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) {
// always face north
- gpsDirection = 0;
+ gpsDirection = bearing;
setCompass(gpsDirection);
}
}
@@ -546,7 +558,7 @@ public class MyLocationView extends View {
SensorManager.getRotationMatrix(mR, mI, mGData, mMData);
SensorManager.getOrientation(mR, mOrientation);
- setCompass((int) (mOrientation[0] * 180.0f / Math.PI));
+ setCompass(mCurrentDegree = (int) (mOrientation[0] * 180.0f / Math.PI));
mCompassUpdateNextTimestamp = currentTime + UPDATE_RATE_MS;
}
@@ -662,7 +674,7 @@ public class MyLocationView extends View {
if (location.hasBearing()) {
builder.bearing(location.getBearing());
}
- gpsDirection = 0;
+ gpsDirection = location.getBearing();
setCompass(gpsDirection);
} else if (myBearingTrackingMode == MyBearingTracking.COMPASS) {
if (!compassListener.isPaused()) {
@@ -703,8 +715,8 @@ public class MyLocationView extends View {
latLng = new LatLng(location);
// update LatLng direction
- if (location.hasBearing()) {
- gpsDirection = clamp(location.getBearing() - (float) mapboxMap.getCameraPosition().bearing);
+ if (myBearingTrackingMode == MyBearingTracking.GPS && location.hasBearing()) {
+ gpsDirection = location.getBearing();
setCompass(gpsDirection);
}
@@ -736,17 +748,6 @@ public class MyLocationView extends View {
latLng = interpolatedLocation;
}
- private float clamp(float direction) {
- float diff = previousDirection - direction;
- if (diff > 180.0f) {
- direction += 360.0f;
- } else if (diff < -180.0f) {
- direction -= 360.f;
- }
- previousDirection = direction;
- return direction;
- }
-
@Override
void invalidate() {
screenLocation = projection.toScreenLocation(latLng);
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/MapboxMapUtils.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/MapboxMapUtils.java
index d41c692509..8b8cd72096 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/MapboxMapUtils.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/MapboxMapUtils.java
@@ -21,8 +21,8 @@ public class MapboxMapUtils {
* @param mapView
* @param direction
*/
- public static void setDirection(MapView mapView, double direction) {
- mapView.setDirection(direction);
+ public static void setDirection(MapView mapView, float direction) {
+ mapView.setBearing(direction);
}
}