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 @@ + - - - - - - - +