[android] - expose moveBy, replace CameraUpdateFactory hook to moveBy for scrolling api
This commit is contained in:
@@ -20,3 +20,4 @@ public interface CameraUpdate {
|
||||
CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -93,7 +93,9 @@ public final class CameraUpdateFactory {
|
||||
* @param xPixel Amount of pixels to scroll to in x direction
|
||||
* @param yPixel Amount of pixels to scroll to in y direction
|
||||
* @return CameraUpdate Final Camera Position
|
||||
* @deprecated use {@link MapboxMap#scrollBy(float, float)} for more precise displacements when using a padded map.
|
||||
*/
|
||||
@Deprecated
|
||||
public static CameraUpdate scrollBy(float xPixel, float yPixel) {
|
||||
return new CameraMoveUpdate(xPixel, yPixel);
|
||||
}
|
||||
@@ -336,22 +338,27 @@ public final class CameraUpdateFactory {
|
||||
public CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap) {
|
||||
UiSettings uiSettings = mapboxMap.getUiSettings();
|
||||
Projection projection = mapboxMap.getProjection();
|
||||
|
||||
// Calculate the new center point
|
||||
float viewPortWidth = uiSettings.getWidth();
|
||||
float viewPortHeight = uiSettings.getHeight();
|
||||
PointF targetPoint = new PointF(viewPortWidth / 2 + x, viewPortHeight / 2 + y);
|
||||
int[] padding = mapboxMap.getPadding();
|
||||
|
||||
// we inverse the map padding, is reapplied when using moveTo/easeTo or animateTo
|
||||
PointF targetPoint = new PointF(
|
||||
(viewPortWidth - padding[0] + padding[1]) / 2 + x,
|
||||
(viewPortHeight + padding[1] - padding[3]) / 2 + y
|
||||
);
|
||||
|
||||
// Convert point to LatLng
|
||||
LatLng latLng = projection.fromScreenLocation(targetPoint);
|
||||
|
||||
CameraPosition previousPosition = mapboxMap.getCameraPosition();
|
||||
return new CameraPosition.Builder()
|
||||
.target(latLng != null ? latLng : previousPosition.target)
|
||||
.zoom(previousPosition.zoom)
|
||||
.tilt(previousPosition.tilt)
|
||||
.bearing(previousPosition.bearing)
|
||||
.build();
|
||||
CameraPosition position =
|
||||
new CameraPosition.Builder()
|
||||
.target(latLng)
|
||||
.zoom(previousPosition.zoom)
|
||||
.tilt(previousPosition.tilt)
|
||||
.bearing(previousPosition.bearing)
|
||||
.build();
|
||||
return position;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -866,6 +866,29 @@ public final class MapboxMap {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Scrolls the camera over the map, shifting the center of view by the specified number of pixels in the x and y
|
||||
* directions.
|
||||
*
|
||||
* @param x Amount of pixels to scroll to in x direction
|
||||
* @param y Amount of pixels to scroll to in y direction
|
||||
*/
|
||||
public void scrollBy(float x, float y) {
|
||||
nativeMapView.moveBy(x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scrolls the camera over the map, shifting the center of view by the specified number of pixels in the x and y
|
||||
* directions.
|
||||
*
|
||||
* @param x Amount of pixels to scroll to in x direction
|
||||
* @param y Amount of pixels to scroll to in y direction
|
||||
* @param duration Amount of time the scrolling should take
|
||||
*/
|
||||
public void scrollBy(float x, float y, long duration) {
|
||||
nativeMapView.moveBy(x, y, duration);
|
||||
}
|
||||
|
||||
//
|
||||
// Reset North
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user