From 014ebd2f133c883eec652b7ea598acc71924a217 Mon Sep 17 00:00:00 2001 From: Leith Bade Date: Fri, 28 Nov 2014 00:58:48 +1100 Subject: [PATCH] Add compass for #644 --- .../com/mapbox/mapboxgl/app/MainActivity.java | 27 ++++++++++++++++++ .../src/main/res/drawable-mdpi/compass.png | Bin 0 -> 2376 bytes .../app/src/main/res/layout/activity_main.xml | 11 ++++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 android/java/app/src/main/res/drawable-mdpi/compass.png diff --git a/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java b/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java index d75bded3b..7a42306c8 100644 --- a/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java +++ b/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java @@ -14,6 +14,7 @@ import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; @@ -39,6 +40,9 @@ public class MainActivity extends ActionBarActivity { // The FPS label TextView mFpsTextView; + // The compass + ImageView mCompassView; + // // Lifecycle events // @@ -53,9 +57,14 @@ public class MainActivity extends ActionBarActivity { setContentView(R.layout.activity_main); mMapFragment = (MapFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_map); mMapFragment.getMap().setOnFpsChangedListener(new MyOnFpsChangedListener()); + mMapFragment.getMap().setOnMapChangedListener(new MyOnMapChangedListener()); + mFpsTextView = (TextView)findViewById(R.id.view_fps); mFpsTextView.setText(""); + mCompassView = (ImageView)findViewById(R.id.view_compass); + mCompassView.setOnClickListener(new CompassOnClickListener()); + // Add a toolbar as the action bar Toolbar mainToolbar = (Toolbar)findViewById(R.id.toolbar_main); setSupportActionBar(mainToolbar); @@ -197,4 +206,22 @@ public class MainActivity extends ActionBarActivity { mFpsTextView.setText(getResources().getString(R.string.label_fps) + String.format(" %4.2f", fps)); } } + + // Called when map state changes + public class MyOnMapChangedListener implements MapView.OnMapChangedListener { + + @Override + public void onMapChanged() { + mCompassView.setRotation((float)mMapFragment.getMap().getDirection()); + } + } + + // Called when someone presses the compass + public class CompassOnClickListener implements View.OnClickListener { + + @Override + public void onClick(View view) { + mMapFragment.getMap().resetNorth(); + } + } } diff --git a/android/java/app/src/main/res/drawable-mdpi/compass.png b/android/java/app/src/main/res/drawable-mdpi/compass.png new file mode 100644 index 0000000000000000000000000000000000000000..58e7e08d2455e10b98d529d45ae3a9646956027c GIT binary patch literal 2376 zcmV-O3Agr%P)F;&-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!b6vRQlp0000 - + +