diff options
Diffstat (limited to 'platform/android')
9 files changed, 140 insertions, 31 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index 0f7f014d54..0f3c82a043 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -123,7 +123,7 @@ public final class MapView extends FrameLayout { private static final long ANIMATION_DURATION = 300; // Used for saving instance state - private static final String STATE_CENTER_COORDINATE = "centerCoordinate"; + private static final String STATE_CENTER_LATLNG = "centerLatLng"; private static final String STATE_CENTER_DIRECTION = "centerDirection"; private static final String STATE_ZOOM = "zoomLevel"; private static final String STATE_TILT = "tilt"; @@ -830,11 +830,16 @@ public final class MapView extends FrameLayout { try { double centerLatitude = typedArray.getFloat(R.styleable.MapView_center_latitude, 0.0f); double centerLongitude = typedArray.getFloat(R.styleable.MapView_center_longitude, 0.0f); - LatLng centerCoordinate = new LatLng(centerLatitude, centerLongitude); - setCenterCoordinate(centerCoordinate); + setLatLng(new LatLng(centerLatitude, centerLongitude)); + // need to set zoom level first because of limitation on rotating when zoomed out - setZoom(typedArray.getFloat(R.styleable.MapView_zoom, 0.0f)); - setZoomLevel(typedArray.getFloat(R.styleable.MapView_zoom_level, 0.0f)); + float zoom = typedArray.getFloat(R.styleable.MapView_zoom, 0.0f); + if(zoom != 0.0f){ + setZoom(zoom); + }else{ + setZoomLevel(typedArray.getFloat(R.styleable.MapView_zoom_level, 0.0f)); + } + setDirection(typedArray.getFloat(R.styleable.MapView_direction, 0.0f)); setZoomEnabled(typedArray.getBoolean(R.styleable.MapView_zoom_enabled, true)); setScrollEnabled(typedArray.getBoolean(R.styleable.MapView_scroll_enabled, true)); @@ -914,7 +919,7 @@ public final class MapView extends FrameLayout { @UiThread public void onCreate(@Nullable Bundle savedInstanceState) { if (savedInstanceState != null) { - setCenterCoordinate((LatLng) savedInstanceState.getParcelable(STATE_CENTER_COORDINATE)); + setLatLng((LatLng) savedInstanceState.getParcelable(STATE_CENTER_LATLNG)); // need to set zoom level first because of limitation on rotating when zoomed out setZoom(savedInstanceState.getDouble(STATE_ZOOM)); setDirection(savedInstanceState.getDouble(STATE_CENTER_DIRECTION)); @@ -1003,7 +1008,7 @@ public final class MapView extends FrameLayout { return; } - outState.putParcelable(STATE_CENTER_COORDINATE, getCenterCoordinate()); + outState.putParcelable(STATE_CENTER_LATLNG, getLatLng()); // need to set zoom level first because of limitation on rotating when zoomed out outState.putDouble(STATE_ZOOM, getZoom()); outState.putDouble(STATE_CENTER_DIRECTION, getDirection()); @@ -1117,12 +1122,108 @@ public final class MapView extends FrameLayout { // /** + * Returns the current {@link LatLng} at the center of the map view. + * + * @return The current center. + */ + @UiThread + @NonNull + public LatLng getLatLng() { + return mNativeMapView.getLatLng(); + } + + /** + * <p> + * Centers the map on a new {@link LatLng} immediately without changing the zoom level. + * </p> + * <p> + * The initial {@link LatLng} is (0, 0). + * </p> + * If you want to animate the change, use {@link MapView#setLatLng(LatLng, boolean)}. + * + * @param latLng The new center. + * @see MapView#setLatLng(LatLng, boolean) + */ + @UiThread + public void setLatLng(@NonNull LatLng latLng) { + setLatLng(latLng, false); + } + + /** + * <p> + * Centers the map on a new {@link LatLng} without changing the zoom level and optionally animates the change. + * </p> + * The initial {@link LatLng} is (0, 0). + * + * @param latLng The new center. + * @param animated If true, animates the change. If false, immediately changes the map. + */ + @UiThread + public void setLatLng(@NonNull LatLng latLng, boolean animated) { + if (latLng == null) { + Log.w(TAG, "latLng was null, so just returning"); + return; + } + + if (animated) { + CameraPosition cameraPosition = new CameraPosition.Builder(getCameraPosition()) + .target(latLng) + .build(); + animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), + (int) ANIMATION_DURATION, null); + } else { + jumpTo(mNativeMapView.getBearing(), latLng, mNativeMapView.getPitch(), mNativeMapView.getZoom()); + } + } + + + /** + * <p> + * Centers the map on a new {@link LatLng} immediately while changing the current zoom level. + * </p> + * <p> + * The initial value is a center {@link LatLng} of (0, 0) and a zoom level of 0. + * </p> + * If you want to animate the change, use {@link MapView#setLatLng(LatLng, boolean)}. + * + * @param latLngZoom The new center and zoom level. + * @see MapView#setLatLng(LatLngZoom, boolean) + */ + @UiThread + public void setLatLng(@NonNull LatLngZoom latLngZoom) { + setLatLng(latLngZoom, false); + } + + /** + * <p> + * Centers the map on a new {@link LatLng} while changing the zoom level and optionally animates the change. + * </p> + * The initial value is a center {@link LatLng} of (0, 0) and a zoom level of 0. + * + * @param latLngZoom The new center and zoom level. + * @param animated If true, animates the change. If false, immediately changes the map. + */ + @UiThread + public void setLatLng(@NonNull LatLngZoom latLngZoom, boolean animated) { + if (latLngZoom == null) { + Log.w(TAG, "latLngZoom was null, so just returning"); + return; + } + long duration = animated ? ANIMATION_DURATION : 0; + mNativeMapView.cancelTransitions(); + mNativeMapView.setLatLngZoom(latLngZoom, duration); + } + + + /** * Returns the current coordinate at the center of the map view. * * @return The current coordinate. + * @deprecated use {@link #getLatLng()} instead. */ @UiThread @NonNull + @Deprecated public LatLng getCenterCoordinate() { return mNativeMapView.getLatLng(); } @@ -1138,8 +1239,10 @@ public final class MapView extends FrameLayout { * * @param centerCoordinate The new coordinate. * @see MapView#setCenterCoordinate(LatLng, boolean) + * @deprecated use {@link #setLatLng(LatLng)}} instead. */ @UiThread + @Deprecated public void setCenterCoordinate(@NonNull LatLng centerCoordinate) { setCenterCoordinate(centerCoordinate, false); } @@ -1152,8 +1255,10 @@ public final class MapView extends FrameLayout { * * @param centerCoordinate The new coordinate. * @param animated If true, animates the change. If false, immediately changes the map. + * @deprecated use {@link #setLatLng(LatLng, boolean)}} instead. */ @UiThread + @Deprecated public void setCenterCoordinate(@NonNull LatLng centerCoordinate, boolean animated) { if (centerCoordinate == null) { Log.w(TAG, "centerCoordinate was null, so just returning"); @@ -1183,23 +1288,15 @@ public final class MapView extends FrameLayout { * * @param centerCoordinate The new coordinate and zoom level. * @see MapView#setCenterCoordinate(LatLngZoom, boolean) + * @deprecated use {@link #setLatLng(LatLngZoom)} instead. */ @UiThread + @Deprecated public void setCenterCoordinate(@NonNull LatLngZoom centerCoordinate) { setCenterCoordinate(centerCoordinate, false); } /** - * Resets the map to the minimum zoom level, a center coordinate of (0, 0), a true north heading, - * and animates the change. - */ - @UiThread - public void resetPosition() { - mNativeMapView.cancelTransitions(); - mNativeMapView.resetPosition(); - } - - /** * <p> * Centers the map on a new coordinate while changing the zoom level and optionally animates the change. * </p> @@ -1207,8 +1304,10 @@ public final class MapView extends FrameLayout { * * @param centerCoordinate The new coordinate and zoom level. * @param animated If true, animates the change. If false, immediately changes the map. + * @deprecated use {@link #setLatLng(LatLngZoom, boolean)}} instead. */ @UiThread + @Deprecated public void setCenterCoordinate(@NonNull LatLngZoom centerCoordinate, boolean animated) { if (centerCoordinate == null) { @@ -1221,6 +1320,16 @@ public final class MapView extends FrameLayout { } /** + * Resets the map to the minimum zoom level, a center coordinate of (0, 0), a true north heading, + * and animates the change. + */ + @UiThread + public void resetPosition() { + mNativeMapView.cancelTransitions(); + mNativeMapView.resetPosition(); + } + + /** * Returns whether the user may scroll around the map. * * @return If true, scrolling is enabled. @@ -1633,7 +1742,7 @@ public final class MapView extends FrameLayout { * @return The current position of the Camera. */ public final CameraPosition getCameraPosition() { - return new CameraPosition(getCenterCoordinate(), (float) getZoom(), (float) getTilt(), (float) getBearing()); + return new CameraPosition(getLatLng(), (float) getZoom(), (float) getTilt(), (float) getBearing()); } /** @@ -4314,7 +4423,7 @@ public final class MapView extends FrameLayout { Context context = ((Dialog) dialog).getContext(); String url = context.getResources().getStringArray(R.array.attribution_links)[which]; if (which == ATTRIBUTION_INDEX_IMPROVE_THIS_MAP) { - LatLng latLng = mMapView.getCenterCoordinate(); + LatLng latLng = mMapView.getLatLng(); url = String.format(url, latLng.getLongitude(), latLng.getLatitude(), (int) mMapView.getZoom()); } Intent intent = new Intent(Intent.ACTION_VIEW); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java index d58b406352..67dc9a3499 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/UserLocationView.java @@ -244,7 +244,7 @@ final class UserLocationView extends View implements LocationListener { if (myLocationTrackingMode != MyLocationTracking.TRACKING_NONE && mUserLocation != null) { // center map directly if we have a location fix mMarkerCoordinate = new LatLng(mUserLocation.getLatitude(), mUserLocation.getLongitude()); - mMapView.setCenterCoordinate(new LatLng(mUserLocation)); + mMapView.setLatLng(new LatLng(mUserLocation)); // center view directly mMarkerScreenMatrix.reset(); @@ -290,7 +290,7 @@ final class UserLocationView extends View implements LocationListener { } if (mCurrentMapViewCoordinate == null) { - mCurrentMapViewCoordinate = mMapView.getCenterCoordinate(); + mCurrentMapViewCoordinate = mMapView.getLatLng(); } // only update if there is an actual change diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/BulkMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/BulkMarkerActivity.java index eeed77d5c6..314d9bbe77 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/BulkMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/BulkMarkerActivity.java @@ -53,7 +53,7 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView mMapView = (MapView) findViewById(R.id.mapView); mMapView.setAccessToken(ApiAccess.getToken(this)); mMapView.onCreate(savedInstanceState); - mMapView.setCenterCoordinate(new LatLngZoom(38.87031, -77.00897, 10)); + mMapView.setLatLng(new LatLngZoom(38.87031, -77.00897, 10)); mMapView.setCompassEnabled(false); ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter.createFromResource(actionBar.getThemedContext(), R.array.bulk_marker_list, android.R.layout.simple_spinner_item); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/CoordinateChangeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/CoordinateChangeActivity.java index 8fba65a7cf..10e8e54f67 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/CoordinateChangeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/CoordinateChangeActivity.java @@ -38,7 +38,7 @@ public class CoordinateChangeActivity extends AppCompatActivity { mMapView.setAccessToken(ApiAccess.getToken(this)); mMapView.onCreate(savedInstanceState); mMapView.setStyle(Style.MAPBOX_STREETS); - mMapView.setCenterCoordinate(new LatLngZoom(38.87031, -77.00897, 16)); + mMapView.setLatLng(new LatLngZoom(38.87031, -77.00897, 16)); mMapView.setCompassEnabled(false); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); @@ -46,12 +46,12 @@ public class CoordinateChangeActivity extends AppCompatActivity { fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - mMapView.setCenterCoordinate(getCoordinate(), true); + mMapView.setLatLng(getNextLatLng(), true); } }); } - private LatLng getCoordinate() { + private LatLng getNextLatLng() { boolean first = (boolean) mMapView.getTag(); mMapView.setTag(!first); return first ? new LatLng(38.87000, -77.00800) : new LatLng(38.87031, -77.00897); 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 2c4e84302e..e9bd1aac53 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 @@ -479,7 +479,7 @@ public class MainActivity extends AppCompatActivity { public void onMyLocationChange(@Nullable Location location) { if (location != null) { mMapView.setZoom(16); - mMapView.setCenterCoordinate(new LatLng(location)); + mMapView.setLatLng(new LatLng(location)); mMapView.setOnMyLocationChangeListener(null); } } @@ -508,7 +508,7 @@ public class MainActivity extends AppCompatActivity { addPolyline(); addPolygon(); mMapView.setZoom(7); - mMapView.setCenterCoordinate(new LatLng(38.11727, -122.22839)); + mMapView.setLatLng(new LatLng(38.11727, -122.22839)); } } else { if (mIsAnnotationsOn) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MapFragmentActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MapFragmentActivity.java index f3f61275e0..191b282474 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MapFragmentActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MapFragmentActivity.java @@ -51,7 +51,7 @@ public class MapFragmentActivity extends AppCompatActivity { MapView mapView = getMap(); mapView.setStyleUrl(Style.EMERALD); mapView.setZoom(12); - mapView.setCenterCoordinate(new LatLng(50.853658, 4.352419)); + mapView.setLatLng(new LatLng(50.853658, 4.352419)); // move attribution control to right of screen mapView.setAttributionGravity(Gravity.BOTTOM | Gravity.END); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivity.java index ae4f4291df..c9df97bd20 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/MyLocationTrackingModeActivity.java @@ -94,7 +94,7 @@ public class MyLocationTrackingModeActivity extends AppCompatActivity implements if (location != null) { if (mLocation == null) { // initial location to reposition map - mMapView.setCenterCoordinate(new LatLng(location.getLatitude(), location.getLongitude())); + mMapView.setLatLng(new LatLng(location.getLatitude(), location.getLongitude())); mLocationSpinner.setEnabled(true); mBearingSpinner.setEnabled(true); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PressForMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PressForMarkerActivity.java index 9e216d40f6..126c92da87 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PressForMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/PressForMarkerActivity.java @@ -44,7 +44,7 @@ public class PressForMarkerActivity extends AppCompatActivity implements MapView mMapView = new MapView(this, ApiAccess.getToken(this)); mMapView.setStyleUrl(Style.EMERALD); mMapView.onCreate(savedInstanceState); - mMapView.setCenterCoordinate(new LatLng(45.1855569, 5.7215506)); + mMapView.setLatLng(new LatLng(45.1855569, 5.7215506)); mMapView.setZoom(11); mMapView.setOnMapLongClickListener(this); ((ViewGroup) findViewById(R.id.activity_container)).addView(mMapView); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java index b7e1e2c548..7bb045bad6 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/TiltActivity.java @@ -34,7 +34,7 @@ public class TiltActivity extends AppCompatActivity { mMapView = (MapView) findViewById(R.id.tiltMapView); mMapView.setAccessToken(ApiAccess.getToken(this)); mMapView.setStyleUrl(Style.MAPBOX_STREETS); - mMapView.setCenterCoordinate(dc); + mMapView.setLatLng(dc); mMapView.setZoom(11); mMapView.onCreate(savedInstanceState); } |