[Android] #3761 - add map padding, introduce new feature activity

[android] #3781 #3899 - add map padding, user location view, ViewSettings, TrackingSettings

[android] #3761 - update map padding sample

[android] #3761 - add map padding
This commit is contained in:
Tobrun
2016-02-10 12:29:13 +01:00
parent 7d6ac6adfc
commit 1b7ebca279
17 changed files with 633 additions and 208 deletions

View File

@@ -89,6 +89,10 @@
<activity
android:name=".DynamicMarkerChangeActivity"
android:label="@string/activity_dynamic_marker" />
<activity
android:name=".MapPaddingActivity"
android:screenOrientation="portrait"
android:label="@string/activity_map_padding" />
<meta-data
android:name="com.mapbox.AccessToken"

View File

@@ -18,6 +18,7 @@ import com.mapbox.mapboxsdk.constants.Style;
import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.maps.TrackingSettings;
import com.mapbox.mapboxsdk.maps.UiSettings;
public class DoubleMapActivity extends AppCompatActivity {
@@ -72,7 +73,8 @@ public class DoubleMapActivity extends AppCompatActivity {
mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(18));
try {
mapboxMap.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
TrackingSettings settings = mapboxMap.getTrackingSettings();
settings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
} catch (SecurityException e) {
// permission is handled in MainActivity
getActivity().finish();
@@ -96,7 +98,8 @@ public class DoubleMapActivity extends AppCompatActivity {
uiSettings.setLogoEnabled(false);
try {
mapboxMap.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
TrackingSettings settings = mapboxMap.getTrackingSettings();
settings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
}catch (SecurityException e){
// permission is handled in MainActivity
getActivity().finish();

View File

@@ -38,6 +38,7 @@ import com.mapbox.mapboxsdk.constants.Style;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.layers.CustomLayer;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.maps.TrackingSettings;
import com.mapbox.mapboxsdk.maps.UiSettings;
import com.mapbox.mapboxsdk.testapp.layers.ExampleCustomLayer;
import com.mapbox.mapboxsdk.testapp.utils.GeoParseUtil;
@@ -466,6 +467,10 @@ public class MainActivity extends AppCompatActivity {
case R.id.action_dynamic_marker:
startActivity(new Intent(getApplicationContext(), DynamicMarkerChangeActivity.class));
return true;
case R.id.action_map_padding:
startActivity(new Intent(getApplicationContext(),MapPaddingActivity.class));
return true;
default:
return changeMapStyle(menuItem.getItemId());
@@ -551,8 +556,11 @@ public class MainActivity extends AppCompatActivity {
}
});
mMapboxMap.setMyLocationEnabled(true);
mMapboxMap.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE);
mMapboxMap.setMyBearingTrackingMode(MyBearingTracking.GPS);
TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings();
trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE);
trackingSettings.setMyBearingTrackingMode(MyBearingTracking.GPS);
mLocationFAB.setColorFilter(ContextCompat.getColor(this, R.color.primary));
}
} else {

View File

@@ -0,0 +1,162 @@
package com.mapbox.mapboxsdk.testapp;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import com.mapbox.mapboxsdk.annotations.MarkerOptions;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.constants.Style;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.CameraUpdateFactory;
import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.maps.TrackingSettings;
import com.mapbox.mapboxsdk.utils.ApiAccess;
public class MapPaddingActivity extends AppCompatActivity {
private MapView mMapView;
private MapboxMap mMapboxMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_padding);
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
mMapView = (MapView) findViewById(R.id.mapView);
mMapView.setTag(true);
mMapView.setAccessToken(ApiAccess.getToken(this));
mMapView.onCreate(savedInstanceState);
mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(@NonNull MapboxMap mapboxMap) {
mMapboxMap = mapboxMap;
mapboxMap.setStyle(Style.MAPBOX_STREETS);
moveToBangalore();
int paddingLeft = (int) getResources().getDimension(R.dimen.map_padding_left);
int paddingBottom = (int) getResources().getDimension(R.dimen.map_padding_bottom);
int paddingRight = (int) getResources().getDimension(R.dimen.map_padding_right);
mapboxMap.setPadding(paddingLeft, toolbar.getHeight(), paddingRight, paddingBottom);
}
});
}
@Override
protected void onStart() {
super.onStart();
mMapView.onStart();
}
@Override
public void onResume() {
super.onResume();
mMapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mMapView.onPause();
}
@Override
protected void onStop() {
super.onStop();
mMapView.onStop();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mMapView.onSaveInstanceState(outState);
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mMapView.onLowMemory();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_padding, menu);
return true;
}
private void toggleGps(boolean enable) {
try {
// Enable user location
mMapboxMap.setMyLocationEnabled(enable);
TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings();
trackingSettings.setDismissTrackingOnGesture(false);
trackingSettings.setMyLocationTrackingMode(enable ? MyLocationTracking.TRACKING_FOLLOW : MyLocationTracking.TRACKING_NONE);
} catch (SecurityException e) {
// permission not granted is handled in MainActivity
finish();
}
}
private void moveToBangalore() {
toggleGps(false);
LatLng bangalore = new LatLng(12.9810816, 77.6368034);
mMapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(
new CameraPosition.Builder()
.zoom(16)
.target(bangalore)
.bearing(40)
.tilt(45)
.build()));
mMapboxMap.addMarker(new MarkerOptions().title("Center map").position(bangalore));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
case R.id.action_user_tracking:
if (mMapboxMap != null) {
toggleGps(true);
}
return true;
case R.id.action_bangalore:
if (mMapboxMap != null) {
moveToBangalore();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}

View File

@@ -21,6 +21,7 @@ import com.mapbox.mapboxsdk.constants.MyBearingTracking;
import com.mapbox.mapboxsdk.constants.MyLocationTracking;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.maps.TrackingSettings;
import com.mapbox.mapboxsdk.utils.ApiAccess;
import com.mapbox.mapboxsdk.maps.MapView;
@@ -135,28 +136,29 @@ public class MyLocationTrackingModeActivity extends AppCompatActivity implements
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) throws SecurityException {
TrackingSettings trackingSettings = mMapboxMap.getTrackingSettings();
if (parent.getId() == R.id.spinner_location) {
switch (position) {
case 0:
mMapboxMap.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE);
trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE);
break;
case 1:
mMapboxMap.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
break;
}
} else if (parent.getId() == R.id.spinner_bearing) {
switch (position) {
case 0:
mMapboxMap.setMyBearingTrackingMode(MyBearingTracking.NONE);
trackingSettings.setMyBearingTrackingMode(MyBearingTracking.NONE);
break;
case 1:
mMapboxMap.setMyBearingTrackingMode(MyBearingTracking.GPS);
trackingSettings.setMyBearingTrackingMode(MyBearingTracking.GPS);
break;
case 2:
mMapboxMap.setMyBearingTrackingMode(MyBearingTracking.COMPASS);
trackingSettings.setMyBearingTrackingMode(MyBearingTracking.COMPASS);
break;
}
}

View File

@@ -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="#FF000000"
android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"/>
</vector>

View File

@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.mapbox.mapboxsdk.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<View
android:layout_width="@dimen/map_padding_left"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"
android:alpha="0.5"
android:background="@color/mapbox_blue" />
<View
android:layout_width="match_parent"
android:layout_height="@dimen/map_padding_bottom"
android:layout_gravity="bottom"
android:layout_marginEnd="@dimen/map_padding_right"
android:layout_marginLeft="@dimen/map_padding_left"
android:layout_marginRight="@dimen/map_padding_right"
android:layout_marginStart="@dimen/map_padding_left"
android:alpha="0.5"
android:background="@color/mapbox_blue" />
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:alpha="0.5"
android:background="@color/primary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
<View
android:layout_width="@dimen/map_padding_right"
android:layout_height="match_parent"
android:layout_gravity="end"
android:layout_marginLeft="@dimen/map_padding_left"
android:layout_marginStart="@dimen/map_padding_left"
android:alpha="0.5"
android:layout_marginTop="?attr/actionBarSize"
android:background="@color/mapbox_blue" />
</FrameLayout>

View File

@@ -198,7 +198,12 @@
android:icon="@drawable/ic_dynamic_marker"
android:title="@string/action_dynamic_marker" />
<item
android:id="@+id/action_map_padding"
android:checkable="false"
android:icon="@drawable/ic_map_padding"
android:title="@string/action_map_padding" />
</menu>
</item>
</menu>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mapbox="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_user_tracking"
android:title="My Location Tracking"
mapbox:showAsAction="never" />
<item
android:id="@+id/action_bangalore"
android:title="Bangalore"
mapbox:showAsAction="never" />
</menu>

View File

@@ -3,4 +3,8 @@
<dimen name="fab_margin">16dp</dimen>
<dimen name="attr_margin">10dp</dimen>
<dimen name="coordinatebounds_margin">32dp</dimen>
<dimen name="map_padding_left">96dp</dimen>
<dimen name="map_padding_bottom">256dp</dimen>
<dimen name="map_padding_right">32dp</dimen>
</resources>

View File

@@ -26,6 +26,7 @@
<string name="activity_double_map">Double Map Activity</string>
<string name="activity_scroll_by">Scroll By Activity</string>
<string name="activity_dynamic_marker">Dynamic Marker Activity</string>
<string name="activity_map_padding">Map Padding Activity</string>
<string name="navdrawer_menu_title_mainactivity_controls">Main Activity Controls</string>
<string name="navdrawer_menu_title_mainactivity_styles">Main Activity Styles</string>
@@ -54,6 +55,7 @@
<string name="action_remove_polylines">Remove polylines</string>
<string name="action_double_mapview">Double MapView</string>
<string name="action_dynamic_marker">Dynamic Marker</string>
<string name="action_map_padding">Map Padding</string>
<string name="button_camera_move">Move</string>
<string name="button_camera_ease">Ease</string>