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 d939b55a4..0d35f19b0 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
@@ -1,8 +1,14 @@
package com.mapbox.mapboxgl.app;
import android.os.Bundle;
+import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.Toolbar;
import android.util.Log;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Spinner;
import com.mapbox.mapboxgl.lib.MapView;
@@ -15,6 +21,13 @@ public class MainActivity extends ActionBarActivity {
// Tag used for logging
private static final String TAG = "MainActivity";
+ //
+ // Instance members
+ //
+
+ // Holds the MapFragment
+ MapFragment mMapFragment;
+
//
// Lifecycle events
//
@@ -25,10 +38,65 @@ public class MainActivity extends ActionBarActivity {
super.onCreate(savedInstanceState);
Log.v(TAG, "onCreate");
- // Show the app icon
- //getActionBar().setHomeButtonEnabled(true);
-
// Load the layout
setContentView(R.layout.activity_main);
+ mMapFragment = (MapFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_map);
+
+ // TODO move to layout file and save state
+ // Add the spinner to select map styles
+ Spinner styleSpinner = (Spinner)findViewById(R.id.spinner_style);
+ ArrayAdapter styleAdapter = ArrayAdapter.createFromResource(this,
+ R.array.style_list, android.R.layout.simple_spinner_dropdown_item);
+ styleSpinner.setAdapter(styleAdapter);
+ styleSpinner.setOnItemSelectedListener(new StyleSpinnerListener());
+
+ // Add a toolbar as the action bar
+ Toolbar mainToolbar = (Toolbar)findViewById(R.id.toolbar_main);
+ setSupportActionBar(mainToolbar);
+ getSupportActionBar().setDisplayShowTitleEnabled(false);
+ }
+
+ // This class handles navigation events
+ private class StyleSpinnerListener implements AdapterView.OnItemSelectedListener {
+
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ switch(position) {
+ // Basic
+ case 0:
+ mMapFragment.getMap().setStyleUrl("asset://styles/styles/basic-v6.json");
+ break;
+
+ // Bright
+ case 1:
+ mMapFragment.getMap().setStyleUrl("asset://styles/styles/bright-v6.json");
+ break;
+
+ // Outdoors (Vector)
+ case 2:
+ mMapFragment.getMap().setStyleUrl("asset://styles/styles/outdoors-v6.json");
+ break;
+
+ // Outdoors (Raster)
+ case 3:
+ mMapFragment.getMap().setStyleUrl("asset://styles/styles/outdoors-raster-v6.json");
+ break;
+
+ // Pencil
+ case 4:
+ mMapFragment.getMap().setStyleUrl("asset://styles/styles/pencil-v6.json");
+ break;
+
+ // Satellite
+ case 5:
+ mMapFragment.getMap().setStyleUrl("asset://styles/styles/satellite-v6.json");
+ break;
+ }
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+ mMapFragment.getMap().setStyleUrl("");
+ }
}
}
diff --git a/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MapFragment.java b/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MapFragment.java
index d5c5edafc..e9b797a7e 100644
--- a/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MapFragment.java
+++ b/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MapFragment.java
@@ -7,7 +7,6 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.mapbox.mapboxgl.lib.LonLat;
import com.mapbox.mapboxgl.lib.MapView;
public class MapFragment extends Fragment {
@@ -19,8 +18,12 @@ public class MapFragment extends Fragment {
// Tag used for logging
private static final String TAG = "MapFragment";
+ //
+ // Instance members
+ //
+
// The map
- private MapView mMapView;
+ private MapView mMap;
//
// Lifecycle events
@@ -33,16 +36,16 @@ public class MapFragment extends Fragment {
Log.v(TAG, "onCreateView");
// Create the map
- mMapView = (MapView) inflater.inflate(R.layout.fragment_main, container, true);
+ mMap = (MapView) inflater.inflate(R.layout.fragment_main, container, true);
// Load the API key
- mMapView.setAccessToken("pk.eyJ1IjoibGpiYWRlIiwiYSI6IlJSQ0FEZ2MifQ.7mE4aOegldh3595AG9dxpQ");
+ mMap.setAccessToken("pk.eyJ1IjoibGpiYWRlIiwiYSI6IlJSQ0FEZ2MifQ.7mE4aOegldh3595AG9dxpQ");
// Need to pass on any saved state to the map
- mMapView.onCreate(savedInstanceState);
+ mMap.onCreate(savedInstanceState);
// Return the map as the root view
- return mMapView;
+ return mMap;
}
// Called when the fragment is destroyed
@@ -52,8 +55,8 @@ public class MapFragment extends Fragment {
Log.v(TAG, "onDestroyView");
// Need to pass on to view
- mMapView.onDestroy();
- mMapView = null;
+ mMap.onDestroy();
+ mMap = null;
}
// Called when the fragment is visible
@@ -63,7 +66,7 @@ public class MapFragment extends Fragment {
Log.v(TAG, "onStart");
// Need to pass on to view
- mMapView.onStart();
+ mMap.onStart();
}
// Called when the fragment is invisible
@@ -73,7 +76,7 @@ public class MapFragment extends Fragment {
Log.v(TAG, "onStop");
// Need to pass on to view
- mMapView.onStop();
+ mMap.onStop();
}
// Called when the fragment is in the background
@@ -83,7 +86,7 @@ public class MapFragment extends Fragment {
Log.v(TAG, "onPause");
// Need to pass on to view
- mMapView.onPause();
+ mMap.onPause();
}
// Called when the fragment is no longer in the background
@@ -93,7 +96,7 @@ public class MapFragment extends Fragment {
Log.v(TAG, "onResume");
// Need to pass on to view
- mMapView.onResume();
+ mMap.onResume();
}
// Called before fragment is destroyed
@@ -102,7 +105,7 @@ public class MapFragment extends Fragment {
Log.v(TAG, "onSaveInstanceState");
// Need to retrieve any saved state from the map
- mMapView.onSaveInstanceState(outState);
+ mMap.onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
}
@@ -110,7 +113,7 @@ public class MapFragment extends Fragment {
// Property methods
//
- public MapView getMapView() {
- return mMapView;
+ public MapView getMap() {
+ return mMap;
}
}
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 523fc4a10..478903d50 100644
--- a/android/java/app/src/main/res/layout/activity_main.xml
+++ b/android/java/app/src/main/res/layout/activity_main.xml
@@ -1,7 +1,25 @@
-
\ No newline at end of file
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/java/app/src/main/res/layout/fragment_main.xml b/android/java/app/src/main/res/layout/fragment_main.xml
index be994fc2d..721c639bd 100644
--- a/android/java/app/src/main/res/layout/fragment_main.xml
+++ b/android/java/app/src/main/res/layout/fragment_main.xml
@@ -2,5 +2,4 @@
\ No newline at end of file
+ android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/android/java/app/src/main/res/values/strings.xml b/android/java/app/src/main/res/values/strings.xml
index f6d4e76fa..0d0970d93 100644
--- a/android/java/app/src/main/res/values/strings.xml
+++ b/android/java/app/src/main/res/values/strings.xml
@@ -3,4 +3,13 @@
Mapbox GL
+
+ - Basic
+ - Bright
+ - Outdoors (Vector)
+ - Outdoors (Raster)
+ - Pencil
+ - Satellite
+
+
diff --git a/android/java/app/src/main/res/values/styles.xml b/android/java/app/src/main/res/values/styles.xml
index 4c67848fc..2399c78be 100644
--- a/android/java/app/src/main/res/values/styles.xml
+++ b/android/java/app/src/main/res/values/styles.xml
@@ -1,20 +1,5 @@
+
-
-
-
-
-
-
-
+
+
diff --git a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java
index 2dacf4e03..0393df171 100644
--- a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java
+++ b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/MapView.java
@@ -60,7 +60,6 @@ public class MapView extends SurfaceView {
private static final String STATE_APPLIED_CLASSES = "appliedClasses";
private static final String STATE_DEFAULT_TRANSITION_DURATION = "defaultTransitionDuration";
-
//
// Instance members
//
@@ -161,7 +160,9 @@ public class MapView extends SurfaceView {
setScrollEnabled(typedArray.getBoolean(R.styleable.MapView_scrollEnabled, true));
setRotateEnabled(typedArray.getBoolean(R.styleable.MapView_rotateEnabled, true));
setDebugActive(typedArray.getBoolean(R.styleable.MapView_debugActive, false));
- setStyleUrl(typedArray.getString(R.styleable.MapView_styleUrl));
+ if (typedArray.getString(R.styleable.MapView_styleUrl) != null) {
+ setStyleUrl(typedArray.getString(R.styleable.MapView_styleUrl));
+ }
} finally {
typedArray.recycle();
}
diff --git a/src/map/map.cpp b/src/map/map.cpp
index e1dbc0ae0..9f4bc78b6 100644
--- a/src/map/map.cpp
+++ b/src/map/map.cpp
@@ -411,7 +411,13 @@ void Map::setup() {
void Map::setStyleURL(const std::string &url) {
// TODO: Make threadsafe.
+
+ // TODO fix this properly
styleURL = url;
+ if (async) {
+ stop();
+ start();
+ }
}