diff options
Diffstat (limited to 'platform/android')
7 files changed, 208 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle index 815fe8d00e..41d75cc0b0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle +++ b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle @@ -86,6 +86,11 @@ dependencies { transitive=true } + // Geocoder SDK + compile ('com.mapbox.mapboxsdk:mapbox-android-geocoder:1.0.0@aar'){ + transitive=true + } + // Testing dependencies testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index 3d5862b511..d5a6df9566 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -67,6 +67,9 @@ 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" /> 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 a6920567fe..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 @@ -182,8 +182,6 @@ public class MainActivity extends AppCompatActivity { mFpsTextView = (TextView) findViewById(R.id.view_fps); mFpsTextView.setText(""); - mMapView.setRotateEnabled(false); - mLocationFAB = (FloatingActionButton) findViewById(R.id.locationFAB); mLocationFAB.setOnClickListener(new View.OnClickListener() { @Override @@ -422,6 +420,10 @@ public class MainActivity extends AppCompatActivity { } 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/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/menu/menu_drawer.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml index 54be851629..2fd9e6c757 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_drawer.xml @@ -78,11 +78,10 @@ android:icon="@drawable/ic_tilt" android:title="@string/action_tilt" /> - <item - android:id="@+id/action_camera" - android:checkable="false" - android:icon="@drawable/ic_transform_24dp" - android:title="@string/action_camera" /> + <item android:id="@+id/action_camera" + android:checkable="false" + android:icon="@drawable/ic_transform_24dp" + android:title="@string/action_camera"/> <item android:id="@+id/action_map_fragment" @@ -162,6 +161,12 @@ 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 6b30fa7ac3..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,7 @@ <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> |