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 000000000..58e7e08d2
Binary files /dev/null and b/android/java/app/src/main/res/drawable-mdpi/compass.png differ
diff --git a/android/java/app/src/main/res/layout/activity_main.xml b/android/java/app/src/main/res/layout/activity_main.xml
index b69df55de..d14f2ead9 100644
--- a/android/java/app/src/main/res/layout/activity_main.xml
+++ b/android/java/app/src/main/res/layout/activity_main.xml
@@ -30,7 +30,16 @@
tools:context="${packageName}.${activityClass}"
tools:layout="@layout/fragment_main" />
-
+
+