From da88c8fd83bd21b95e21343559313b8927fd5150 Mon Sep 17 00:00:00 2001 From: Erlend Fagerheim Date: Thu, 6 Aug 2015 12:55:15 +0200 Subject: [PATCH] added tracking modes --- android/java/MapboxGLAndroidSDK/build.gradle | 1 + .../com/mapbox/mapboxgl/views/MapView.java | 94 ++++++++++++++++++ .../drawable-hdpi/ic_explore_black_24dp.png | Bin 0 -> 465 bytes .../ic_my_location_black_24dp.png | Bin 0 -> 549 bytes .../drawable-mdpi/ic_explore_black_24dp.png | Bin 0 -> 322 bytes .../ic_my_location_black_24dp.png | Bin 0 -> 341 bytes .../drawable-xhdpi/ic_explore_black_24dp.png | Bin 0 -> 624 bytes .../ic_my_location_black_24dp.png | Bin 0 -> 660 bytes .../src/main/res/drawable-xxhdpi/compass.png | Bin 0 -> 2376 bytes .../drawable-xxhdpi/ic_explore_black_24dp.png | Bin 0 -> 913 bytes .../ic_my_location_black_24dp.png | Bin 0 -> 976 bytes .../ic_explore_black_24dp.png | Bin 0 -> 1219 bytes .../ic_my_location_black_24dp.png | Bin 0 -> 1334 bytes .../src/main/res/values/strings.xml | 1 + 14 files changed, 96 insertions(+) create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_explore_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_my_location_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_explore_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_my_location_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_explore_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_my_location_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/compass.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_explore_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/ic_my_location_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_explore_black_24dp.png create mode 100644 android/java/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/ic_my_location_black_24dp.png diff --git a/android/java/MapboxGLAndroidSDK/build.gradle b/android/java/MapboxGLAndroidSDK/build.gradle index 44f82831f72..2f09959cc6c 100644 --- a/android/java/MapboxGLAndroidSDK/build.gradle +++ b/android/java/MapboxGLAndroidSDK/build.gradle @@ -33,6 +33,7 @@ dependencies { compile 'com.android.support:support-v4:22.2.1' compile 'com.squareup.okhttp:okhttp:2.4.0' compile 'com.mapzen.android:lost:1.0.1' + compile 'com.android.support:design:22.2.1' } android { diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java index ed2038c2401..953bd6ae0a2 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java @@ -7,8 +7,11 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Color; import android.graphics.Matrix; import android.graphics.PointF; import android.hardware.GeomagneticField; @@ -22,6 +25,8 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; +import android.support.design.widget.FloatingActionButton; +import android.support.v4.content.res.ResourcesCompat; import android.support.v4.view.GestureDetectorCompat; import android.support.v4.view.ScaleGestureDetectorCompat; import android.text.TextUtils; @@ -37,6 +42,7 @@ import android.view.SurfaceView; import android.view.View; import android.view.ViewConfiguration; +import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ZoomButtonsController; @@ -58,6 +64,7 @@ import org.apache.commons.validator.routines.UrlValidator; import java.nio.ByteBuffer; import java.util.ArrayList; +import java.util.Date; import java.util.List; // Custom view that shows a Map @@ -141,6 +148,11 @@ public class MapView extends FrameLayout implements LocationListener { private float mCompassBearing; private boolean mCompassValid = false; + // Used for map toggle mode + private FloatingActionButton trackingModeButton; + private int trackingMode = 0; + private long t0 = new Date().getTime(); + // Used to manage Event Listeners private ArrayList mOnMapChangedListener; @@ -293,6 +305,20 @@ private void initialize(Context context, AttributeSet attrs) { addView(mCompassView); mCompassView.setOnClickListener(new CompassOnClickListener()); + // Setup tracking mode + trackingModeButton = new FloatingActionButton(mContext); + trackingModeButton.setContentDescription(getResources().getString(R.string.trackingModeButtonContentDescription)); + trackingModeButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.background_material_light))); + trackingModeButton.setElevation(4); + trackingModeButton.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_my_location_black_24dp)); + LayoutParams lp2 = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + lp2.gravity = Gravity.BOTTOM | Gravity.END; + int twentyDp = (int)(20 * mScreenDensity); + lp2.setMargins(twentyDp, twentyDp, twentyDp, twentyDp); + trackingModeButton.setLayoutParams(lp2); + addView(trackingModeButton); + trackingModeButton.setOnClickListener(new ToggleModeClickListener()); + // Setup Support For Listener Tracking // MapView's internal listener is setup in onCreate() mOnMapChangedListener = new ArrayList(); @@ -890,6 +916,10 @@ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float d return false; } + if (trackingMode != 0) { + setTrackingMode(0); + } + // Cancel any animation mNativeMapView.cancelTransitions(); // TODO need to test canceling // transitions with touch @@ -1578,6 +1608,9 @@ private class CompassOnClickListener implements View.OnClickListener { @Override public void onClick(View view) { + if(trackingMode == 2){ + setTrackingMode(0); + } resetNorth(); } } @@ -1596,6 +1629,12 @@ public void onLocationChanged(Location location) { private void updateLocation(Location location) { if (location != null) { mGpsLocation = location; + + // Update map position if in follow mode + if (trackingMode != 0) { + setCenterCoordinate(new LatLng(mGpsLocation)); + } + updateMap(); } } @@ -1639,6 +1678,16 @@ private void updateMap() { rotateImageView(mGpsMarker, 0.0f); mGpsMarker.requestLayout(); + // Update direction if tracking mode + if(trackingMode == 2 && mCompassValid){ + // TODO need to do proper filtering (see branch filter-compass) or else map will lock up because of all the compass events + long t = new Date().getTime(); + if((t-t0)>1000){ + t0 = t; + setDirection(-mCompassBearing, true); + } + } + /* // Used For User Location Bearing UI if (mGpsLocation.hasBearing() || mCompassValid) { @@ -1659,4 +1708,49 @@ private void updateMap() { } } } + + private class ToggleModeClickListener implements OnClickListener { + @Override + public void onClick(View v) { + setTrackingMode((trackingMode + 1) % 3); + } + } + + public void setTrackingMode(int trackingMode) { + + this.trackingMode = trackingMode; + + switch (trackingMode) { + + case 0: { + trackingModeButton.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_my_location_black_24dp, mContext.getTheme())); + trackingModeButton.setColorFilter(Color.TRANSPARENT); + updateMap(); + } + break; + + case 1: { + trackingModeButton.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_my_location_black_24dp, mContext.getTheme())); + trackingModeButton.setColorFilter(Color.BLUE); + if(mGpsLocation != null){ + setCenterCoordinate(new LatLng(mGpsLocation)); + } + updateMap(); + } + break; + + case 2: { + trackingModeButton.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_explore_black_24dp, mContext.getTheme())); + trackingModeButton.setColorFilter(Color.BLUE); + if(mGpsLocation != null){ + setCenterCoordinate(new LatLng(mGpsLocation)); + } + updateMap(); + } + break; + + default: + break; + } + } } diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_explore_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/ic_explore_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f4bc5acd008d74f521e382cc37930af05e787cc5 GIT binary patch literal 465 zcmV;?0WSWDP)zzL>$B+NW=(k(oRL_AU;FzAqu5*C^0&T zOH#PrlBm#U%VTt^ddBr-ipjD>8w;9Ll2VBV9+G%7o2U=DPIa0>Q>Y@@Q(4ggJOPQ63J zPf@m7_Of3r$l4J(^(8JdwXjczgZ=7Yq+FWCCT}XAvHG*iR93pm_1S5Hp zGX{g3?7{FW1~WTE1v&0B)$aWAV|TJUEMI4Vh=>I~Eg~f)`bUbsvBa4vI%APZJ|NE; zS0tp?c;%8+^1MTZHfhFaF~^AZ80bfR8dQmisnWF0?lOWOivMAs61I>7o-}(5etQc3 zW(t=Q*GlZ*QPJi9WQ;5UCnl3HONKmcUCkIi0XHVsB!|$`+Jp$PIdkEDiW5@$l+e}KHK>XL2GeFWdrUB7$wV6n8>Ei0iSS^K z=Z7{5y;D_$J7-ZHp=ORx?M)`Kf-yqJS=6;x2@N7&(Tl%`L%Ya#YYk`7z30|sQ4g80 z*Lne78Wk85Q(Xo|0QUIf@zkeKuOA|f-32DEnDS;fBGv_$1n#m_CUSyLx zUAo+}P64FMv&k;wl-GS<6W|kYt7j@lhB^8sazfy#`K4`S29I5>#|uP4vFFe9;gv>NR1ZS{7KkmM6)zWGe(^m-XX^d7xb_zdYrRNjt`h% no>RS36~_OkuMzu0>#O_)RZ4aRmaPDG00000NkvXXu0mjf7M<-G literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_explore_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_explore_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9da64daa13096c7d7309c61530260d8c58228b GIT binary patch literal 322 zcmV-I0lof-P)db|w-s4}^E&zOs{y}JZgEeY3xY9-cCUm`HF4TT% zRoL~uDLdGr)@qb4{ml;=QThNXB{q_XSK%?rI{=q9{`3a-!XkdtCvasaj)}~KN_(oF zaqYW*(jbizVR|Z8UL2)tZs^-fBe^wDj7)Y4SrhM>+i#30%{_Q?aPaEhOzF)20~&+} U`B9}ZjsO4v07*qoM6N<$f`Gb?E&u=k literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_my_location_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/ic_my_location_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..5684aa7dc5d4dd20ffac6d3191a20b810fa3b56c GIT binary patch literal 341 zcmV-b0jmCqP)mMbk{NI>0N1x?|uus^FEj=X)&pHzW-zSTS)^M<$cW&4ZYJcs=$YBhD;OSn~x>^datnyArVw)DU;Gg0)Zj8#)n zvEOVsVD8IDj$T&^mqn$1cGf=f59R|YEe}L#KYAzm#9c{d-LoWdQk3+qH>6fP6iLS= zHbg$(d&OcGMVj*x+ajNrE!Hs-X$BHI|GPPJM;)=(IkB*z#8_l|6Y!A`w#>EN6$=|l zEUvs>fMIi-OW zpO{oQRv$a4v99;s%YSoR@|?%ka@=_XLn9LtBSQo0UbEy0@YH_@FdzKA=A!Zd0000< KMNUMnLSTY+uq#CX literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_my_location_black_24dp.png b/android/java/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/ic_my_location_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..7faa3455f60127e423ab3cd481745bfa47eb121f GIT binary patch literal 660 zcmV;F0&D$=P)%+^Dn#{hi&+J@;JCoEaj|OrYZL7kDW!#0DpPlLFTqv(5ld zAjt|ff|$5qnIwEe*UG7d=7p)6Mf5+2YK8}7}aF5bzPJQLg7;+9r@&{7z|1J zU}*a)K}1wSB}VX7?ptDQsMOEs$JcXc0 zV2FJLGxFJJ)tW{hf?H#O8w9!5yYU4a1oy@Q4Fv9gR3M9>ZY*UlM_nxwYhB(^tOj)t-4}Irl~@CEvS9>iDv{ft<02T9Penfl z7b>}gE={qeQ9gUP=*sff8!fA4O(qD-v(F6;8hGq7M%bhrU=gDvo?2KZgRNKG$#1>{ zZ7fI|PDx?I;Y=DghlK;JM8@LuXZl-VBh96x)S19!k~>-Z6$eYbc#_uSkP)JcQr2ec zCvUJv54F%xR@r8T94;<7X4z4%m7Jc}bjYPZU==>QI6TNaKiY18%^Z)AV2LVz%*iV( ulHduvV~rziwk|2NO8>wAC-9}f^Y90NP?&Wf5nE#b0000F;&-Y`@6;yRCQSV~1a)066EUBX5c6tjiQ!3N0~mlMr1N@~m8VJc4LQ|J z;UFL}MJq|&zxmv5K*xduxEJ?}@>Q+@o4F5hkHO&qV4%ld^By~oW zAlQOU*yioXQeY;Mx;}xQ&`tBL42=JKy_pOuZmB8P z2{{1ys8V73`}<5ctw^Wrp#sC>cdYdtHed@jTk}J=6oVDfg$G5Z^GBO4CUe;Jd=_$ zV;9-qvCGbLuP~CBBvB`X=FGt5vX1B685%w$hpXs8F`0_u5(J->*l{C)+4kO-(F*~BwtAo;ads ztX(2Vyf1QZAKKM})oFcW!&y3UD#sx)$vLPM>_burCqtAj6i=oySpze$!v|~w;8WPj z>)n=w3(2{f5%d^hFbG-TB#nb-obymCDf~B-0fmT&;rTyG7nvo%#BIq^UY zT*s<~vqSp;m3u3M8`2nVkB3i5$>AiStk|J;#f!?7r>{%HElyp!cO!y=dm@t7gvfZ> z`L)JYqM$R4-|sECgL6;Xw>^Ph~UtA~?^I%(q&*#j2=g6PnOyYjAs zD9{l7eeRO7dN@J9s7_WY0v7>-h@7=72)bey*dOoA#hq78uTtGCFoKH!LEe8-WCftF z+W{8=f@lTX&Zu|#njD7%;vz_pVeK3f#OGjZCxjsW(M|DB1pJ<=HBGuf>}4m|g<_~r zPoF&xsG1Y>4*&rF|8_b0YybcRdPzhZCE_T)_k z4^l<9-#`ViFBaS4(Ss-y>=p|4U{89eXQ5cwp7c{zo}XtQmzN{I+Q49_Ua-w+&({XeNBn`0FJ4YX zeBxaE)Ucf0A{~79{sTKcK4v>Rza!$fj)lcVw+>QXR!r*b`e1m*Fzuhkblw@M91tMM z0F(xZSa2?WYFhU9vH%?(9hSuF$5#>O{y8vWSXIyHd6f^+fH ze$!qk1JIMnNyZ^PefB&AsjLwM7CsoBF-@mY79dP7OtXW7gV0nf3lLavE`DlR)<{`^ z&@YGaX>H9PMZ64Yk=nq*2NTFtXeIlVCd9NIHad1SvtYi8VT$oSvE*Y_yL0!RTb3uF zI%$S>-j_5b2E?Qi;Bu0sSZGDoaA`AH0#Cq#rC4XyiP!|OM0vd`=5?C9u-wOTFqxY1xvZ6Kk8a6~TJY&11J!9m$a9+7Lq zs9sYurZ$yiwvqs$4Ie$d7(p^k@I3+~uE4PEFH$2UK9758fY1lxqQU@?&v7hb%ld8m zb{-JUk`4GA3qw*^p;7cz$HBN2L8pD5b+xsSuf!of_K^VUGflHjqT4FMA52WROQ*K5 zoTh6~BQ#(cho)e8LcR@OWgHUAY18&5!LTcU!_g3=D!l7@I-1~PB7~Hi6c^c>GDtc? zWHx$LuBdI3{7;U1QUGD9T_Gp-L`QCokLwQQu1AE}x9T;A1g$Y`_TXEZ|4R31`~OJn zz^>Jpq~ka-nfGqN{&n_&&cHDrGkv2MD1GZo@*oSH!K9JLTOS%T7bKO9~4jM-# zX-@F>aB1~mtF^tIYEQJ|!8xblZ&y_-I@1l)3UNvD8BAyUq6!GMU{hzxdef?BBPT-A zdvHfqH}SuQqY|9Gh~;tDs({cIHeox?j!;IcRn8CO2n|Vr7XnD*BnZWsi)w_e0|+*w z=Q)v$^k!~LxrBjAan*~sm9{0qe>XG&bO0sUp?hsFLe3Ths(7zjhyGJ_-3_kjBtDqH zPb}BEri~}GsOm1dUd25sDd0RQ0*(6gjx36M5NDy=Ihn-qZTO5k;#j5~J#14SswaV2 z9O_})YUgbUy;4$m@0JSCwc#|qw-2Z18Iu#h3OP1H%Wi`nqWBhI)%~i({q!dIeG=uV u%=_YG6?M@DZAr)3m_j)L`)}r~6Zi+-n6!b6vRQlp0000Lj*;LMDWmqP|#Ltp}90M zZH3m0hIl9#SYt4Rk_P+(x-7+_vV@=&+MVeB>cKF^*_nA~-gm^qe!k~~m&}`Ip5dL< z($dn&F~*o;kt!>Ac&t!mktxPFN(XOIiPOyEp@{0-uGCQCG-eX$xiKu-m+kg(AzyaZ40QX$#9JgO(_e zLK|h2QM2So?0b}9-;&S}a$19FMiG8rBpZWIkh44{`52gaV=k32_6u^R1`L!q4{(tL_N=K>|7jG&0_5TO$f zCFpO?P$1fSR8d6#ktftKl%Oxk5pNj9G(e~^WZVOCn7EH(I!mZ2WZW4{e1>A1B-CPp zt6adBr~hSng62?c3xuj7!!F?K;SoYSq??VpkwFzgtr*Xp66^9j!oOE-yzT}vs75Fc z88wctAK`ZZ-(DKXpt|jWUa-gLKtCX(>b8&UIfaT1eu=zEAV4|JJ$hc8L9Yrw>86D>< zl%OMo>cERx-8T_!D`Uog9fS1)?xKiJ5M?J9d5RKNCeo?M@2qyh>}7&FO3?_BO01!f z&e2>qH)x<#d2|tDCiJ6t8$q8lhb+2DtUlDVOMzW^nES}GPcbl$0(tDh*TD!?WL+5} z2P4=ouhMcuRkpu?cc-zd-Ku$YO zLf@eb`-a4F+(sGo8=Fa?z!J)!-{~Z!B1;(@rwa=OW*tAQPAuiPf*kcVn{i^0RR?qD zI1ZKg+3F>6l_JjdrCc@2^pcrgrW3qCJZ{oM=8Bx;4)vJTz03$*yhV8iILjmpRH#v> nPK^o+OfX76?X126oEP)hbF_M~pKs-ng5!67dvJ&uMT#<#ewipzY&>qA?Z$U`K zdMF~c|3D-m8bNHSG5r-vDk3(RT)dc=YC_ki*N10clJ}k2?4j=Gdz=|~;GLOwHsM{= zAgbDF4AdB?F;I$b%8YOqQQc*PGCPT=qlg}^@d8<+7hGjeJ;vHZnZFRvW;sok4HI#k zzmdS6(MQAv*v2FhvkBU%u_DVzf|fW;%|v{SIC{eb7dSu%IWlC((ZNA3a)&pFqsv5) zTod0R*nZ{&n*q1?>E|JW?K)`^iX7ui(Swh@Oe3amNyskNGG$WuN;AM~1l=VPC?e?o zWCx+Tm_^WiOibI%lXagK;@H9iM72m8F+@z7ao!`YW`0CeW5jUWELICiY%vR0B+w@G zCb7&8lKKdJdp{*ZkTRkw18(h{XN-APS>-unoMS8C_9>z&5g_6*`n{9FrHvn`Af^hp zXvHPXFY3G*0`wrN9$fm?*xg=n43~X~YB%1l=}iKcL1dji$7M>LaRpB){WZu5s`Vir z6{%KI#~1L_t#@=bW3_pHiY!sUYGFm4u|50=o1ohFh-WvcHW~h;ji^g5V6{_0Jgd-( zHKdLY<3<0lIe>K@31|?jR~;S44G?#9V2vRG-Nx!f-1!ZZ!i9g~uByu(;_?NuPM_iO zDEtlr*n_C{;!L*B+XX@gA=pw0Z^q;YwkRgcuke?+-5_ujYs-pypm_Sqy zXeO>^ezH4U9PKQbk#fY5H{-mdKum`bvv6I6>Nbn@mO~_P8A11&0n+$t;tcjLvR{!% z#C60p%|3kW=U2q^4T+^4BMDQKXaU@EoZ=DU7$-$dT*CdmJjoEfbdo1amOP#GGQ>US zclTSqq=r6W5lPTX4pC!mj3Y4{rND+L@)QZ|2}jvL8A{9`p8Y{T8R}p+S6D#SXn|pN yQD@sJF>LOvafUfb2X)Z+zkOq%#z60ghW`K~?beCrQMK^^0000+8kFf2?L?A%BJ>mv{hBTy2;3X;YLEg%xMYzSci@|Xfj zP@^RwiW(vmLSiB&h+)yBL|TeiLMaHel$6KJ&+g=A9`~F(_ulDZKHu#u?oH15=YIzu z<>lq&<>ggU&lZkwjt=@5B0k&@eROb^!)&3RDU3*EET@GoWYAS&ETfbWqJVmi^9Wfs z$agHEfSf9)iR&nfy7`2001BuF zG!Up_j-r5TAwobZxrjpO0u=;cHrG)|by0)Q=5Y&!*iBx=N3*$wLhdFnva}Y3R)X)@jGVECEX-s8h0+s_Fc&z9oYBuqc-DqOXn*~SFd`?eB$l+qLUnA|`y|EuOn+GV>0YoDP2`;#bzIPFGh+k~ZZ z{zU=RMjgo}@(`u%4rN$rLID(~m0D8UjxzQU777Dc9)>u;EYc~V4`u8c1sJPGzILA- zRFX*}a%~aDjw9ddp_y_r8%;NI?Hdf0@d)`+2kR)p-6~|zLrO5R+@}x2r4(T1GBWBt zjI^LE`>8nzZ7izWve@Smtcv049P(K5<{u1P3W1 zm7U14c3kx#Pc6kMhMsF5$;Q)w$UfHLv<5jN zic^GMWZko1UZ95}oEltTU_G*rXTcnyW}IMV(h;iSd4+T$`xp%365pqsWc$%`?ZIgU z@>FjSV{`|pjA1Wvgov|;F*sd9o@&R{S?h1zO46w!I$RY_un>9dG_DRKs}6+vm*qjf zm$^8zuvLpZ*W~v)-HN?d@61;3_h#4Lh~8X7%_T7>Oan>M&PF z8_KfJF|rI9bqO#A?U$ggmNSMXU4T_GNx83dq$3n5+INd#mp zu@DAl5rJCG0~ApAh!TS7oI(NgBUOYZ%HKXO%*zQ`F`KyK)7REUBIHCFA7(jRJ87hp zoGPG>uNgp=^>d6j8N~=u%)9L43NomJy}V6?5ot1uX(q-Q+UaGGXTuHBOFO4INE3^g hOkQ4IUS6JW{sZ&_hTZvVNN4~6002ovPDHLkV1l3LD?fgpj}7bM_akU$+7b}+y-C4p-Uu!9VB)Tm|b;uim6*~EKpvXiCMkT6}` z=QEarC~}YOgsHkXhk1+TGXCZu4OC5py-Z+vjB$1orV845fn_M3v!04tz&XBP8H~@I zAxed`@C3_;ctnZ{_?~}k=9dQy(oH)l5=4lQAVoVpoaQ0LvcH|81E1x{Ypc(5g)EJf z)5vD7qAz2HEI#Vi&i0cWBEeiOrk^S89sCiW{9A_ zOAJpA3-i9cINKOvlqm`nm}Hb8wi3tQO{Kp5co0_l<$t!1tyNs&BbE@;Tx131H7if& z*MxAbOKHRbo9D$Kvsn6|z)9v)PQUV-Ex2~Sq^JpE=&j^;Ec@Uot>`uIuH^c=xU@`J zyd6d_xoHq21lw3Va!pxkICxOmNwfQzFw4#%wP;zw-uH2gQ{1db9JVHmBkA|{F zy^ITW$}U?Lok1)YF@R2|^19?gM(K%hWUH8Ul|X@3WDAwiw;IQGloas*ol96QV+ftc zC0BOg*g#1UgUA~B=sJN9G$1=$a^*3cQZ~rDk!{2B5IJPMCD#pO%d&}fWJ8`3IFD?j z-7lRdkU}=A;DB6!+n}Za__y)bB%ByDrm+mPCKlSLf@^p@!CyicQIn26)YulB|4^hs1 z25e@eJjaQGgKaH~EUtx>)2nHkD6f?vK4>0W7igipwDN}iiVz+gRGM)edky3`&j{n> z$urIf=jo&#d$*PP_Tfof7@EJ}mpw{dZ;0X1Zs8a@gCEujN9jFy7UsF|cWK777RH4A z(+~!%7rv2r$r4Oj%Adk9>skysgC(TUj43Tb^DRzbOq9o1LPuJI3Ewg%zHCM?C?)Ry z%&-fu_K07>Ot2ioI+(!{;sz<)N^@H*^Aj8JL6)NC__Ut}oQiWqv#(ub6F&J#lY+%N zj*w)ok{s23Iyg%gKFTtqKXKtYoh+oBMdY}tKhfb6oA6nO&30~)N1UaXjigBuB}$Ss z8|mXLzuJ5vKEVbmpovi|A7X^%R7jLl6pc2%$O$4;)OS2H*8Hcer3&WJ$6L>he?t!; zswT#MUb}AmEA|ni>OyScuEWFb0(Zy~qJ}KyXD-_xcQC;)-6W_{U$L4ljxnq>e3)Z& su^MB7e}oGX2oeYq2oeYq2m}KE19wYc%&+VoivR!s07*qoM6N<$g8N!-_W%F@ literal 0 HcmV?d00001 diff --git a/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml b/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml index df022a4679a..78e20893b6a 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml +++ b/android/java/MapboxGLAndroidSDK/src/main/res/values/strings.xml @@ -1,4 +1,5 @@ Map compass. Click to reset the map rotation to North. + Press button to toggle tracking modes (None, Follow, FollowWithHeading)