diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2015-10-26 11:52:34 +0100 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2015-10-26 11:52:34 +0100 |
commit | a638b8ed382d4fa3a5d9c79fab950d371c476468 (patch) | |
tree | 09e73424c9e01c90aad730f9b2e93b54e13fef11 | |
parent | 388636b058fed19c37c4d21b3ffc23ecf5103654 (diff) | |
download | qtlocation-mapboxgl-a638b8ed382d4fa3a5d9c79fab950d371c476468.tar.gz |
[android] #2758 - add my location tracking mode
15 files changed, 402 insertions, 37 deletions
diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyLocationTracking.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyLocationTracking.java new file mode 100644 index 0000000000..1616a62352 --- /dev/null +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MyLocationTracking.java @@ -0,0 +1,51 @@ +package com.mapbox.mapboxsdk.constants; + +import android.support.annotation.IntDef; + +import com.mapbox.mapboxsdk.views.MapView; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * MyLocationTracking exposes different types location tracking modes. + * + * @see MapView#setMyLocationTrackingMode(int) + * @see com.mapbox.mapboxsdk.views.UserLocationView#setMyLocationTrackingMode(int) + */ +public class MyLocationTracking { + + /** + * Indicates the parameter accepts one of the values from {@link MyLocationTracking}. + */ + @IntDef({TRACKING_NONE, TRACKING_FOLLOW, /**TRACKING_FOLLOW_BEARING_GPS, TRACKING_FOLLOW_BEARING_COMPASS, TRACKING_FOLLOW_BEARING**/}) + @Retention(RetentionPolicy.SOURCE) + public @interface Mode { + } + + /** + * Not tracking user + */ + public static final int TRACKING_NONE = 0x00000000; + + /** + * Tracking the location of the user + */ + public static final int TRACKING_FOLLOW = 0x00000004; + +// /** +// * Tracking the location of the user with bearing from GPS +// */ +// public static final int TRACKING_FOLLOW_BEARING_GPS = 0x00000008; +// +// /** +// * Tracking the location of the user with bearing from compass +// */ +// public static final int TRACKING_FOLLOW_BEARING_COMPASS = 0x00000012; +// +// /** +// * Tracking the location fot the user with bearing from GPS and compass +// */ +// public static final int TRACKING_FOLLOW_BEARING = 0x00000016; + +}
\ No newline at end of file diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index e3c3599b68..4c3bfcbedb 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -64,6 +64,7 @@ import com.mapbox.mapboxsdk.annotations.Polyline; import com.mapbox.mapboxsdk.annotations.PolylineOptions; import com.mapbox.mapboxsdk.annotations.Sprite; import com.mapbox.mapboxsdk.annotations.SpriteFactory; +import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.exceptions.InvalidAccessTokenException; import com.mapbox.mapboxsdk.exceptions.SpriteBitmapChangedException; @@ -121,6 +122,7 @@ public final class MapView extends FrameLayout { private static final String STATE_STYLE_CLASSES = "styleClasses"; private static final String STATE_DEFAULT_TRANSITION_DURATION = "defaultTransitionDuration"; private static final String STATE_MY_LOCATION_ENABLED = "myLocationEnabled"; + private static final String STATE_MY_LOCATION_TRACKING_MODE = "myLocationTracking"; private static final String STATE_COMPASS_ENABLED = "compassEnabled"; private static final String STATE_COMPASS_GRAVITY = "compassGravity"; private static final String STATE_COMPASS_MARGIN_LEFT = "compassMarginLeft"; @@ -801,6 +803,9 @@ public final class MapView extends FrameLayout { , savedInstanceState.getInt(STATE_ATTRIBUTION_MARGIN_TOP) , savedInstanceState.getInt(STATE_ATTRIBUTION_MARGIN_RIGHT) , savedInstanceState.getInt(STATE_ATTRIBUTION_MARGIN_BOTTOM)); + + //noinspection ResourceType + setMyLocationTrackingMode(savedInstanceState.getInt(STATE_MY_LOCATION_TRACKING_MODE, MyLocationTracking.TRACKING_NONE)); } // Force a check for an access token @@ -852,6 +857,7 @@ public final class MapView extends FrameLayout { outState.putStringArrayList(STATE_STYLE_CLASSES, new ArrayList<>(getStyleClasses())); outState.putLong(STATE_DEFAULT_TRANSITION_DURATION, mNativeMapView.getDefaultTransitionDuration()); outState.putBoolean(STATE_MY_LOCATION_ENABLED, isMyLocationEnabled()); + outState.putInt(STATE_MY_LOCATION_TRACKING_MODE, mUserLocationView.getMyLocationTrackingMode()); // Compass LayoutParams compassParams = (LayoutParams) mCompassView.getLayoutParams(); @@ -2493,8 +2499,13 @@ public final class MapView extends FrameLayout { mNativeMapView.cancelTransitions(); // Scale the map - mNativeMapView.scaleBy(detector.getScaleFactor(), detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity); - + if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { + // around gesture + mNativeMapView.scaleBy(detector.getScaleFactor(), detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity); + } else { + // around center map + mNativeMapView.scaleBy(detector.getScaleFactor(), (getWidth() / 2) / mScreenDensity, (getHeight() / 2) / mScreenDensity); + } return true; } } @@ -2559,11 +2570,18 @@ public final class MapView extends FrameLayout { // Cancel any animation mNativeMapView.cancelTransitions(); - // Rotate the map + // Get rotate value double bearing = mNativeMapView.getBearing(); bearing += detector.getRotationDegreesDelta(); - mNativeMapView.setBearing(bearing, detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity); + // Rotate the map + if (mUserLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE) { + // around gesture + mNativeMapView.setBearing(bearing, detector.getFocusX() / mScreenDensity, detector.getFocusY() / mScreenDensity); + } else { + // around center map + mNativeMapView.setBearing(bearing, (getWidth() / 2) / mScreenDensity, (getHeight() / 2) / mScreenDensity); + } return true; } } @@ -3116,6 +3134,42 @@ public final class MapView extends FrameLayout { mUserLocationView.setOnMyLocationChangeListener(listener); } + /** + * Set the current my location tracking mode. + * Tracking my location disbales gestures, automatically moves the viewport + * and shows the direction the user is heading. + * See {@link MyLocationTracking} for different values. + * + * @param userLocationTrackingMode to be used. + * @see MyLocationTracking + */ + @UiThread + public void setMyLocationTrackingMode(@MyLocationTracking.Mode int userLocationTrackingMode) { + mUserLocationView.setMyLocationTrackingMode(userLocationTrackingMode); + + // Enable/disable gestures based on tracking mode + if (userLocationTrackingMode == MyLocationTracking.TRACKING_NONE) { + mScrollEnabled = true; + mRotateEnabled = true; + } else { + mScrollEnabled = false; + mRotateEnabled = (userLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW); + } + } + + /** + * Returns the current user location tracking mode. + * See {@link MyLocationTracking} for possible return values. + * + * @return the current user location tracking mode. + * @see MyLocationTracking + */ + @UiThread + @MyLocationTracking.Mode + public int getMyLocationTrackingMode() { + return mUserLocationView.getMyLocationTrackingMode(); + } + // // Compass // diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java index 7453f4e28c..06ef550a7d 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java @@ -5,7 +5,6 @@ import android.animation.ValueAnimator; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; @@ -21,17 +20,16 @@ import android.view.View; import android.view.ViewGroup; import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapzen.android.lost.api.LocationListener; import com.mapzen.android.lost.api.LocationRequest; import com.mapzen.android.lost.api.LocationServices; import com.mapzen.android.lost.api.LostApiClient; -import java.lang.ref.WeakReference; - final class UserLocationView extends View { - private WeakReference<MapView> mMapView; + private MapView mMapView; private static final int BLUE_COLOR = 0x39ACCBFF; @@ -79,6 +77,9 @@ final class UserLocationView extends View { MapView.OnMyLocationChangeListener mOnMyLocationChangeListener; + @MyLocationTracking.Mode + private int mMyLocationTrackingMode; + public UserLocationView(MapView mapView, Context context) { super(context); initialize(mapView, context); @@ -95,7 +96,7 @@ final class UserLocationView extends View { } private void initialize(MapView mapView, Context context) { - mMapView = new WeakReference<MapView>(mapView); + mMapView = mapView; // View configuration setEnabled(false); @@ -208,6 +209,20 @@ final class UserLocationView extends View { } } + public void setMyLocationTrackingMode(@MyLocationTracking.Mode int myLocationTrackingMode) { + mMyLocationTrackingMode = myLocationTrackingMode; + + if (myLocationTrackingMode != MyLocationTracking.TRACKING_NONE && mUserLocation != null) { + // center map directly if we have a location fix + mMapView.setCenterCoordinate(new LatLng(mUserLocation.getLatitude(), mUserLocation.getLongitude())); + } + } + + @MyLocationTracking.Mode + public int getMyLocationTrackingMode() { + return mMyLocationTrackingMode; + } + @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); @@ -221,7 +236,7 @@ final class UserLocationView extends View { // compute new marker position // TODO add JNI method that takes existing pointf - mMarkerScreenPoint = mMapView.get().toScreenLocation(mMarkerCoordinate); + mMarkerScreenPoint = mMapView.toScreenLocation(mMarkerCoordinate); mMarkerScreenMatrix.reset(); mMarkerScreenMatrix.setTranslate( mMarkerScreenPoint.x, @@ -230,14 +245,14 @@ final class UserLocationView extends View { // rotate so arrow in points to bearing if (mShowDirection) { mMarkerScreenMatrix.preRotate(mMarkerDirection + - (float) mMapView.get().getDirection()); + (float) mMapView.getDirection()); } // adjust accuracy circle if (mShowAccuracy) { mAccuracyPath.reset(); mAccuracyPath.addCircle(0.0f, 0.0f, - (float) (mMarkerAccuracy / mMapView.get().getMetersPerPixelAtLatitude( + (float) (mMarkerAccuracy / mMapView.getMetersPerPixelAtLatitude( mMarkerCoordinate.getLatitude())), Path.Direction.CW); @@ -344,12 +359,19 @@ final class UserLocationView extends View { previousCoordinate = new LatLng(mUserLocation); } - mMarkerCoordinateAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); - mMarkerCoordinateAnimator.setDuration(1000); - mMarkerCoordinateAnimator.addUpdateListener(new MarkerCoordinateAnimatorListener( - previousCoordinate, new LatLng(location) - )); - mMarkerCoordinateAnimator.start(); + if(mMyLocationTrackingMode== MyLocationTracking.TRACKING_NONE) { + // moving marker above map + mMarkerCoordinateAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); + mMarkerCoordinateAnimator.setDuration(1000); + mMarkerCoordinateAnimator.addUpdateListener(new MarkerCoordinateAnimatorListener( + previousCoordinate, new LatLng(location) + )); + mMarkerCoordinateAnimator.start(); + }else{ + // moving map under the tracker + mMarkerCoordinate = new LatLng(location); + mMapView.setCenterCoordinate(mMarkerCoordinate, true); + } mShowDirection = location.hasBearing(); if (mShowDirection) { @@ -388,7 +410,7 @@ final class UserLocationView extends View { } void updateOnNextFrame() { - mMapView.get().update(); + mMapView.update(); } public void pause() { diff --git a/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivityTest.java b/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivityTest.java new file mode 100644 index 0000000000..b21cd070a6 --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivityTest.java @@ -0,0 +1,33 @@ +package com.mapbox.mapboxsdk.testapp; + +import android.support.test.rule.ActivityTestRule; +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.LargeTest; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Tests on User LocationTrackingModeActivity + */ +@RunWith(AndroidJUnit4.class) +@LargeTest +public class MyLocationTrackingModeActivityTest extends BaseTest { + + @Rule + public ActivityTestRule<MyLocationTrackingModeActivity> mActivityRule = new ActivityTestRule<>(MyLocationTrackingModeActivity.class); + + private MyLocationTrackingModeActivity mActivity = null; + + @Before + public void setActivity() { + mActivity = mActivityRule.getActivity(); + } + + @Test + public void testSanity() { + checkViewIsDisplayed(R.id.mapView); + } +}
\ No newline at end of file diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index 846a19ed88..d4bf05256f 100644 --- a/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -36,7 +36,7 @@ <activity android:name=".InfoWindowActivity" android:label="@string/activity_info_window" /> - + <activity android:name=".BulkMarkerActivity" android:label="@string/action_add_bulk_markers" /> @@ -49,6 +49,10 @@ android:name=".PressForMarkerActivity" android:label="@string/activity_press_for_marker" /> + <activity + android:name=".MyLocationTrackingModeActivity" + android:label="@string/activity_user_tracking_mode" /> + <meta-data android:name="io.fabric.ApiKey" android:value="9724157045ff7d083492c6d9ae03e60e8609d461" /> diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java index 6e9f99a9c0..006c11d478 100644 --- a/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java +++ b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java @@ -339,6 +339,10 @@ public class MainActivity extends AppCompatActivity { startActivity(new Intent(getApplicationContext(), VisibleCoordinateBoundsActivity.class)); return true; + case R.id.action_user_tracking_mode: + startActivity(new Intent(getApplicationContext(), MyLocationTrackingModeActivity.class)); + return true; + default: return changeMapStyle(menuItem.getItemId()); } diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivity.java b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivity.java new file mode 100644 index 0000000000..366db4b8f4 --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivity.java @@ -0,0 +1,169 @@ +package com.mapbox.mapboxsdk.testapp; + +import android.location.Location; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.Snackbar; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Spinner; + +import com.mapbox.mapboxsdk.constants.MyLocationTracking; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.utils.ApiAccess; +import com.mapbox.mapboxsdk.views.MapView; + +public class MyLocationTrackingModeActivity extends AppCompatActivity implements MapView.OnMyLocationChangeListener, AdapterView.OnItemSelectedListener { + + private MapView mMapView; + private Spinner mSpinner; + private Location mLocation; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_my_location_tracking); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayShowTitleEnabled(false); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowHomeEnabled(true); + } + + ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(actionBar.getThemedContext(), R.array.user_tracking_mode, android.R.layout.simple_spinner_item); + spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + mSpinner = (Spinner) findViewById(R.id.spinner); + mSpinner.setAdapter(spinnerAdapter); + mSpinner.setOnItemSelectedListener(this); + mSpinner.setEnabled(false); + + mMapView = (MapView) findViewById(R.id.mapView); + mMapView.setAccessToken(ApiAccess.getToken(this)); + mMapView.onCreate(savedInstanceState); + mMapView.setOnMyLocationChangeListener(this); + mMapView.setMyLocationEnabled(true); + } + + @Override + public void onMyLocationChange(@Nullable Location location) { + if (location != null) { + if (mLocation == null) { + // initial location to reposition map + mMapView.setCenterCoordinate(new LatLng(location.getLatitude(), location.getLongitude())); + mSpinner.setEnabled(true); + } + mLocation = location; + showSnackBar(); + } + } + + private void showSnackBar() { + String desc = "Loc Chg: "; + boolean noInfo = true; + if (mLocation.hasSpeed()) { + desc += String.format("Spd = %.1f km/h ", mLocation.getSpeed() * 3.6f); + noInfo = false; + } + if (mLocation.hasAltitude()) { + desc += String.format("Alt = %.0f m ", mLocation.getAltitude()); + noInfo = false; + } + if (noInfo) { + desc += "No extra info"; + } + Snackbar.make(findViewById(android.R.id.content), desc, Snackbar.LENGTH_SHORT).show(); + } + + @Override + public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { + switch (position) { + case 0: + mMapView.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE); + break; + + case 1: + mMapView.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); + break; + +// case 2: +// mMapView.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW_BEARING_GPS); +// break; +// +// case 3: +// mMapView.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW_BEARING_COMPASS); +// break; +// +// case 4: +// mMapView.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW_BEARING); +// break; + } + } + + @Override + public void onNothingSelected(AdapterView<?> parent) { + + } + + @Override + protected void onStart() { + super.onStart(); + mMapView.onStart(); + } + + @Override + public void onResume() { + super.onResume(); + mMapView.onResume(); + } + + @Override + public void onPause() { + super.onPause(); + mMapView.onPause(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mMapView.onSaveInstanceState(outState); + } + + @Override + protected void onStop() { + super.onStop(); + mMapView.onStop(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mMapView.onDestroy(); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mMapView.onLowMemory(); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + onBackPressed(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + +}
\ No newline at end of file diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-hdpi/ic_gps_fixed_white_24dp.png b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-hdpi/ic_gps_fixed_white_24dp.png Binary files differnew file mode 100644 index 0000000000..745db489be --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-hdpi/ic_gps_fixed_white_24dp.png diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-mdpi/ic_gps_fixed_white_24dp.png b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-mdpi/ic_gps_fixed_white_24dp.png Binary files differnew file mode 100644 index 0000000000..d1c563cc9f --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-mdpi/ic_gps_fixed_white_24dp.png diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xhdpi/ic_gps_fixed_white_24dp.png b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xhdpi/ic_gps_fixed_white_24dp.png Binary files differnew file mode 100644 index 0000000000..ffab865d95 --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xhdpi/ic_gps_fixed_white_24dp.png diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_gps_fixed_white_24dp.png b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_gps_fixed_white_24dp.png Binary files differnew file mode 100644 index 0000000000..387ecdfbcb --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxhdpi/ic_gps_fixed_white_24dp.png diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxxhdpi/ic_gps_fixed_white_24dp.png b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxxhdpi/ic_gps_fixed_white_24dp.png Binary files differnew file mode 100644 index 0000000000..c55220a5fe --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable-xxxhdpi/ic_gps_fixed_white_24dp.png diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_my_location_tracking.xml b/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_my_location_tracking.xml new file mode 100644 index 0000000000..0a750b074c --- /dev/null +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_my_location_tracking.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="@color/primary" + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> + + <Spinner + android:id="@+id/spinner" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + + </android.support.v7.widget.Toolbar> + + <com.mapbox.mapboxsdk.views.MapView + android:id="@+id/mapView" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:style_url="@string/style_mapbox_streets" + app:zoom_level="15" /> + +</LinearLayout>
\ No newline at end of file diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml b/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml index 5167182a44..94357dc093 100644 --- a/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml @@ -59,20 +59,6 @@ </menu> </item> - <!-- - <group android:id="@+id/locationFollowModesSeparator"/> - - <group android:id="@+id/locationFollowModes" android:checkableBehavior="single"> - <item android:id="@+id/followNone" - android:title="@string/action_location_none"/> - <item android:id="@+id/followFollow" - android:title="@string/action_location_follow"/> - <item android:id="@+id/followBearing" - android:title="@string/action_location_bearing"/> - </group> - --> - - <group android:id="@+id/testsSeparator" /> <item @@ -116,6 +102,12 @@ android:icon="@drawable/ic_blur_on_white_24dp" android:title="@string/action_add_bulk_markers" /> + <item + android:id="@+id/action_user_tracking_mode" + android:checkable="false" + android:icon="@drawable/ic_gps_fixed_white_24dp" + android:title="@string/activity_user_tracking_mode" /> + </menu> </item> diff --git a/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml b/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml index e47c4643af..b526628249 100644 --- a/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml +++ b/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml @@ -10,14 +10,13 @@ <string name="activity_marker_in_bulk">Add Bulk Markers Activity</string> <string name="activity_info_window">InfoWindow Activity</string> <string name="activity_visible_coordinate_bounds">Visible Coordinate Bounds</string> + <string name="activity_user_tracking_mode">User tracking mode</string> <string name="navdrawer_menu_title_mainactivity_controls">Main Activity Controls</string> <string name="navdrawer_menu_title_mainactivity_styles">Main Activity Styles</string> <string name="navdrawer_menu_title_individual_tests">Individual Tests</string> <string name="action_gps">Toggle GPS location</string> - <string name="action_location_none">Disable tracking</string> - <string name="action_location_follow">Use follow tracking mode</string> - <string name="action_location_bearing">Use bearing tracking mode tracking</string> + <string name="action_user_location_tracking">User location tracking</string> <string name="action_compass">Toggle compass</string> <string name="action_debug">Toggle debug mode</string> <string name="action_point_annotations">Toggle point annotations</string> @@ -50,4 +49,12 @@ <item>10000</item> </string-array> + <string-array name="user_tracking_mode"> + <item>Disable tracking</item> + <item>Follow tracking mode</item> + <!--<item>Bearing tracking GPS mode</item>--> + <!--<item>Bearing tracking Compass mode</item>--> + <!--<item>Bearing tracking mode</item>--> + </string-array> + </resources> |