diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp/src/main')
10 files changed, 441 insertions, 42 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index af74d52c2c..d5a6df9566 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -66,6 +66,12 @@ <activity android:name=".DirectionsActivity" android:label="@string/activity_directions" /> + <activity + android:name=".GeocoderActivity" + android:label="@string/activity_geocoder" /> + <activity + android:name=".DoubleMapActivity" + android:label="@string/activity_double_map" /> <meta-data android:name="com.mapbox.AccessToken" diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/DoubleMapActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/DoubleMapActivity.java new file mode 100644 index 0000000000..ae22622a19 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/DoubleMapActivity.java @@ -0,0 +1,147 @@ +package com.mapbox.mapboxsdk.testapp; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; + +import com.mapbox.mapboxsdk.constants.MyLocationTracking; +import com.mapbox.mapboxsdk.constants.Style; +import com.mapbox.mapboxsdk.views.MapView; + +public class DoubleMapActivity extends AppCompatActivity { + + private static final String TAG_FRAGMENT = "map"; + private DoubleMapFragment mMapFragment; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_map_fragment); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowHomeEnabled(true); + } + + if (savedInstanceState == null) { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + transaction.add(R.id.fragment_container, mMapFragment = new DoubleMapFragment(), TAG_FRAGMENT); + transaction.commit(); + } else { + mMapFragment = (DoubleMapFragment) getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT); + } + } + + public static class DoubleMapFragment extends Fragment { + + private MapView mMapView; + private MapView mMapViewMini; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_double_map, container, false); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + // MapView large + mMapView = (MapView) view.findViewById(R.id.mapview); + mMapView.onCreate(savedInstanceState); + mMapView.setStyle(Style.DARK); + mMapView.setZoom(18); + + // MapView mini + mMapViewMini = (MapView) view.findViewById(R.id.mini_map); + mMapViewMini.onCreate(savedInstanceState); + mMapViewMini.setStyle(Style.LIGHT); + mMapViewMini.setAttributionVisibility(View.GONE); + mMapViewMini.setLogoVisibility(View.GONE); + mMapViewMini.setCompassEnabled(false); + mMapViewMini.setZoom(4); + mMapViewMini.setAllGesturesEnabled(false); + + try { + mMapView.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); + mMapViewMini.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); + }catch (SecurityException e){ + // permission is handled in MainActivity + getActivity().finish(); + } + } + + @Override + public void onStart() { + super.onStart(); + mMapView.onStart(); + mMapViewMini.onStart(); + } + + @Override + public void onResume() { + super.onResume(); + mMapView.onResume(); + mMapViewMini.onResume(); + } + + @Override + public void onPause() { + super.onPause(); + mMapView.onPause(); + mMapViewMini.onPause(); + } + + @Override + public void onStop() { + super.onStop(); + mMapView.onStop(); + mMapViewMini.onStop(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + mMapView.onDestroy(); + mMapViewMini.onDestroy(); + } + + @Override + public void onLowMemory() { + super.onLowMemory(); + mMapView.onLowMemory(); + mMapViewMini.onLowMemory(); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mMapView.onSaveInstanceState(outState); + mMapViewMini.onSaveInstanceState(outState); + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case android.R.id.home: + onBackPressed(); + return true; + default: + return super.onOptionsItemSelected(item); + } + } + + +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/GeocoderActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/GeocoderActivity.java new file mode 100644 index 0000000000..200ca8ac0e --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/GeocoderActivity.java @@ -0,0 +1,158 @@ +package com.mapbox.mapboxsdk.testapp; + +import android.os.Bundle; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.util.Log; +import android.widget.TextView; + +import com.mapbox.geocoder.GeocoderCriteria; +import com.mapbox.geocoder.MapboxGeocoder; +import com.mapbox.geocoder.service.models.GeocoderFeature; +import com.mapbox.geocoder.service.models.GeocoderResponse; +import com.mapbox.mapboxsdk.annotations.MarkerOptions; +import com.mapbox.mapboxsdk.constants.Style; +import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.utils.ApiAccess; +import com.mapbox.mapboxsdk.views.MapView; + +import java.util.List; + +import retrofit.Callback; +import retrofit.Response; +import retrofit.Retrofit; + +public class GeocoderActivity extends AppCompatActivity { + + private static final String LOG_TAG = "GeocoderActivity"; + + private MapView mapView; + private TextView textView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_geocoder); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowHomeEnabled(true); + } + + textView = (TextView) findViewById(R.id.message); + setMessage("Tap the map to trigger the geocoder."); + + LatLng dupontCircle = new LatLng(38.90962, -77.04341); + + mapView = (MapView) findViewById(R.id.mapView); + mapView.setAccessToken(ApiAccess.getToken(this)); + mapView.setStyleUrl(Style.MAPBOX_STREETS); + mapView.setCenterCoordinate(dupontCircle); + mapView.setZoomLevel(15); + mapView.onCreate(savedInstanceState); + + mapView.setOnMapClickListener(new MapView.OnMapClickListener() { + @Override + public void onMapClick(LatLng point) { + setMessage("Geocoding..."); + mapView.removeAllAnnotations(); + mapView.addMarker(new MarkerOptions() + .position(point) + .title("Your finger is here")); + geocode(point); + } + }); + } + + @Override + protected void onStart() { + super.onStart(); + mapView.onStart(); + } + + @Override + protected void onStop() { + super.onStop(); + mapView.onStop(); + } + + @Override + public void onPause() { + super.onPause(); + mapView.onPause(); + } + + @Override + public void onResume() { + super.onResume(); + mapView.onResume(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + mapView.onDestroy(); + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + mapView.onSaveInstanceState(outState); + } + + /* + * Forward geocoding + */ + + private void geocode(LatLng point) { + MapboxGeocoder client = new MapboxGeocoder.Builder() + .setAccessToken(ApiAccess.getToken(this)) + .setCoordinates(point.getLongitude(), point.getLatitude()) + .setType(GeocoderCriteria.TYPE_POI) + .build(); + + client.enqueue(new Callback<GeocoderResponse>() { + @Override + public void onResponse(Response<GeocoderResponse> response, Retrofit retrofit) { + List<GeocoderFeature> results = response.body().getFeatures(); + if (results.size() > 0) { + String placeName = results.get(0).getPlaceName(); + setSuccess(placeName); + } else { + setMessage("No results."); + } + } + + @Override + public void onFailure(Throwable t) { + setError(t.getMessage()); + } + }); + + } + + /* + * Update text view + */ + + private void setMessage(String message) { + Log.d(LOG_TAG, "Message: " + message); + textView.setText(message); + } + + private void setSuccess(String placeName) { + Log.d(LOG_TAG, "Place name: " + placeName); + textView.setText(placeName); + } + + private void setError(String message) { + Log.e(LOG_TAG, "Error: " + message); + textView.setText("Error: " + message); + } + +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java index 63fa396af0..6451046448 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MainActivity.java @@ -389,8 +389,6 @@ public class MainActivity extends AppCompatActivity { } else { startActivity(new Intent(getApplicationContext(), MyLocationTrackingModeActivity.class)); } - - return true; case R.id.action_polyline: @@ -409,6 +407,23 @@ public class MainActivity extends AppCompatActivity { startActivity(new Intent(getApplicationContext(), DirectionsActivity.class)); return true; + case R.id.action_double_mapview: + if ((ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_COARSE_LOCATION) + != PackageManager.PERMISSION_GRANTED) || + (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) + != PackageManager.PERMISSION_GRANTED)) { + ActivityCompat.requestPermissions(MainActivity.this, + new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, + PERMISSIONS_TRACKING_MODE_ACTIVITY); + } else { + startActivity(new Intent(getApplicationContext(), DoubleMapActivity.class)); + } + return true; + + case R.id.action_geocoder: + startActivity(new Intent(getApplicationContext(), GeocoderActivity.class)); + return true; + default: return changeMapStyle(menuItem.getItemId()); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PolylineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PolylineActivity.java index e000cf079d..d2d266a31b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PolylineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PolylineActivity.java @@ -22,6 +22,12 @@ import java.util.List; public class PolylineActivity extends AppCompatActivity { private static final String STATE_POLYLINE_OPTIONS = "polylineOptions"; + private static final LatLng ANDORRA = new LatLng(42.505777, 1.52529); + private static final LatLng LUXEMBOURG = new LatLng(49.815273, 6.129583); + private static final LatLng MONACO = new LatLng(43.738418, 7.424616); + private static final LatLng VATICAN_CITY = new LatLng(41.902916, 12.453389); + private static final LatLng SAN_MARINO = new LatLng(43.942360, 12.457777); + private static final LatLng LIECHTENSTEIN = new LatLng(47.166000, 9.555373); private List<Polyline> mPolylines; private ArrayList<PolylineOptions> mPolylineOptions = new ArrayList<>(); @@ -48,8 +54,9 @@ public class PolylineActivity extends AppCompatActivity { if (savedInstanceState != null) { mPolylineOptions = savedInstanceState.getParcelableArrayList(STATE_POLYLINE_OPTIONS); } else { - mPolylineOptions.addAll(PolylineProvider.getAll()); + mPolylineOptions.addAll(getAllPolylines()); } + mPolylines = mMapView.addPolylines(mPolylineOptions); findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() { @@ -65,12 +72,38 @@ public class PolylineActivity extends AppCompatActivity { } } mPolylineOptions.clear(); - mPolylineOptions.addAll(PolylineProvider.getRandomLine()); + mPolylineOptions.addAll(getRandomLine()); mPolylines = mMapView.addPolylines(mPolylineOptions); } }); } + private List<PolylineOptions> getAllPolylines() { + List<PolylineOptions> options = new ArrayList<>(); + options.add(generatePolyline(ANDORRA, LUXEMBOURG, "#F44336")); + options.add(generatePolyline(ANDORRA, MONACO, "#FF5722")); + options.add(generatePolyline(MONACO, VATICAN_CITY, "#673AB7")); + options.add(generatePolyline(VATICAN_CITY, SAN_MARINO, "#009688")); + options.add(generatePolyline(SAN_MARINO, LIECHTENSTEIN, "#795548")); + options.add(generatePolyline(LIECHTENSTEIN, LUXEMBOURG, "#3F51B5")); + return options; + } + + private PolylineOptions generatePolyline(LatLng start, LatLng end, String color) { + PolylineOptions line = new PolylineOptions(); + line.add(start); + line.add(end); + line.color(Color.parseColor(color)); + return line; + } + + public List<PolylineOptions> getRandomLine() { + final List<PolylineOptions> randomLines = getAllPolylines(); + Collections.shuffle(randomLines); + return new ArrayList<PolylineOptions>(){{ + add(randomLines.get(0)); + }}; + } @Override protected void onStart() { @@ -139,42 +172,4 @@ public class PolylineActivity extends AppCompatActivity { } } - private static class PolylineProvider { - private static final LatLng ANDORRA = new LatLng(42.505777, 1.52529); - private static final LatLng LUXEMBOURG = new LatLng(49.815273, 6.129583); - private static final LatLng MONACO = new LatLng(43.738418, 7.424616); - private static final LatLng VATICAN_CITY = new LatLng(41.902916, 12.453389); - private static final LatLng SAN_MARINO = new LatLng(43.942360, 12.457777); - private static final LatLng LIECHTENSTEIN = new LatLng(47.166000, 9.555373); - - private static final List<PolylineOptions> POLYLINES = new ArrayList<PolylineOptions>() {{ - add(generatePolyline(ANDORRA, LUXEMBOURG, "#F44336")); - add(generatePolyline(ANDORRA, MONACO, "#FF5722")); - add(generatePolyline(MONACO, VATICAN_CITY, "#673AB7")); - add(generatePolyline(VATICAN_CITY, SAN_MARINO, "#009688")); - add(generatePolyline(SAN_MARINO, LIECHTENSTEIN, "#795548")); - add(generatePolyline(LIECHTENSTEIN, LUXEMBOURG, "#3F51B5")); - }}; - - private static PolylineOptions generatePolyline(LatLng start, LatLng end, String color) { - PolylineOptions line = new PolylineOptions(); - line.add(start); - line.add(end); - line.color(Color.parseColor(color)); - return line; - } - - public static List<PolylineOptions> getAll() { - return POLYLINES; - } - - public static List<PolylineOptions> getRandomLine() { - List<PolylineOptions> randomLines = new ArrayList<>(); - Collections.shuffle(POLYLINES); - randomLines.add(POLYLINES.get(0)); - return randomLines; - } - - } - } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/ic_dns_24dp.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/ic_dns_24dp.xml new file mode 100644 index 0000000000..5b7b1bce6a --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/ic_dns_24dp.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FFFFFF" + android:pathData="M20,13H4c-0.55,0 -1,0.45 -1,1v6c0,0.55 0.45,1 1,1h16c0.55,0 1,-0.45 1,-1v-6c0,-0.55 -0.45,-1 -1,-1zM7,19c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM20,3H4c-0.55,0 -1,0.45 -1,1v6c0,0.55 0.45,1 1,1h16c0.55,0 1,-0.45 1,-1V4c0,-0.55 -0.45,-1 -1,-1zM7,9c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/> +</vector> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_geocoder.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_geocoder.xml new file mode 100644 index 0000000000..ce0802385a --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_geocoder.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <android.support.v7.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="@color/primary" + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" /> + + <com.mapbox.mapboxsdk.views.MapView + android:id="@+id/mapView" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="5" /> + + <TextView + android:id="@+id/message" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:gravity="center" /> + +</LinearLayout> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml new file mode 100644 index 0000000000..0695fafd12 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/fragment_double_map.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:mapbox="http://schemas.android.com/apk/res-auto" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <com.mapbox.mapboxsdk.views.MapView + android:id="@+id/mapview" + android:layout_width="match_parent" + android:layout_height="match_parent" + mapbox:access_token="@string/access_token" /> + + <FrameLayout + android:id="@+id/map_card" + android:layout_width="100dp" + android:layout_height="100dp" + android:layout_marginLeft="5dp" + android:layout_marginRight="5dp" + android:layout_marginTop="5dp"> + + <com.mapbox.mapboxsdk.views.MapView + android:id="@+id/mini_map" + android:layout_width="100dp" + android:layout_height="100dp" + mapbox:access_token="@string/access_token" /> + </FrameLayout> +</RelativeLayout>
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml index ad9deba187..2fd9e6c757 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml @@ -155,6 +155,18 @@ android:icon="@drawable/ic_directions" android:title="@string/activity_directions" /> + <item + android:id="@+id/action_double_mapview" + android:checkable="false" + android:icon="@drawable/ic_dns_24dp" + android:title="@string/action_double_mapview" /> + + <item + android:id="@+id/action_geocoder" + android:checkable="false" + android:icon="@drawable/ic_directions" + android:title="@string/activity_geocoder" /> + </menu> </item> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml index c096284fd8..6caf0f7df7 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml @@ -20,6 +20,8 @@ <string name="activity_animate_coordinate_change">Animate Coordinate Change</string> <string name="activity_custom_layer">Custom Layer</string> <string name="activity_directions">Directions Activity</string> + <string name="activity_geocoder">Geocoder Activity</string> + <string name="activity_double_map">Double Map Activity</string> <string name="navdrawer_menu_title_mainactivity_controls">Main Activity Controls</string> <string name="navdrawer_menu_title_mainactivity_styles">Main Activity Styles</string> @@ -43,6 +45,7 @@ <string name="action_visible_bounds">Set Visible Bounds</string> <string name="action_visible_bounds_explanation">Center map around 2 markers</string> <string name="action_remove_polylines">Remove polylines</string> + <string name="action_double_mapview">Double MapView</string> <string name="button_camera_move">Move</string> <string name="button_camera_ease">Ease</string> |