diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera')
4 files changed, 0 insertions, 1078 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java deleted file mode 100644 index fb89688e28..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java +++ /dev/null @@ -1,414 +0,0 @@ -package com.mapbox.mapboxsdk.camera; - -import android.content.res.TypedArray; -import android.os.Parcel; -import android.os.Parcelable; -import android.support.annotation.FloatRange; -import android.support.annotation.Keep; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.Size; - -import com.mapbox.mapboxsdk.R; -import com.mapbox.mapboxsdk.constants.MapboxConstants; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.utils.MathUtils; - -import java.util.Arrays; - -/** - * Resembles the position, angle, zoom and tilt of the user's viewpoint. - */ -public final class CameraPosition implements Parcelable { - - public static final CameraPosition DEFAULT = new CameraPosition(new LatLng(), 0, 0, 0, new double[] {0, 0, 0, 0}); - - public static final Parcelable.Creator<CameraPosition> CREATOR = - new Parcelable.Creator<CameraPosition>() { - public CameraPosition createFromParcel(Parcel in) { - double bearing = in.readDouble(); - LatLng target = in.readParcelable(LatLng.class.getClassLoader()); - double tilt = in.readDouble(); - double zoom = in.readDouble(); - - double[] padding = null; - int paddingSize = in.readInt(); - if (paddingSize > 0) { - padding = new double[paddingSize]; - for (int i = 0; i < paddingSize; i++) { - padding[i] = in.readDouble(); - } - } - - return new CameraPosition(target, zoom, tilt, bearing, padding); - } - - public CameraPosition[] newArray(int size) { - return new CameraPosition[size]; - } - }; - - /** - * Direction that the camera is pointing in, in degrees clockwise from north. - */ - @Keep - public final double bearing; - - /** - * The location that the camera is pointing at. - */ - @Keep - public final LatLng target; - - /** - * The angle, in degrees, of the camera angle from the nadir (directly facing the Earth). - * See {@link Builder#tilt(double)} for details of restrictions on the range of values. - */ - @Keep - public final double tilt; - - /** - * Zoom level near the center of the screen. See {@link Builder#zoom(double)} for the definition of the camera's - * zoom level. - */ - @Keep - public final double zoom; - - /** - * Padding in pixels. Specified in left, top, right, bottom order. - * See {@link Builder#padding(double[])} for the definition of the camera's padding. - */ - @Keep - public final double[] padding; - - /** - * Constructs a CameraPosition. - * - * @param target The target location to align with the center of the screen. - * @param zoom Zoom level at target. See zoom(float) for details of restrictions. - * @param tilt The camera angle, in degrees, from the nadir (directly down). See tilt(float) - * for details of restrictions. - * @param bearing Direction that the camera is pointing in, in degrees clockwise from north. - * This value will be normalized to be within 0 degrees inclusive and 360 degrees - * exclusive. - * @throws NullPointerException if target is null - * @throws IllegalArgumentException if tilt is outside the range of 0 to 90 degrees inclusive. - * @deprecated use {@link CameraPosition#CameraPosition(LatLng, double, double, double, double[])} instead. - */ - @Deprecated - CameraPosition(LatLng target, double zoom, double tilt, double bearing) { - this(target, zoom, tilt, bearing, null); - } - - /** - * Constructs a CameraPosition. - * - * @param target The target location to align with the center of the screen. - * @param zoom Zoom level at target. See zoom(float) for details of restrictions. - * @param tilt The camera angle, in degrees, from the nadir (directly down). See tilt(float) - * for details of restrictions. - * @param bearing Direction that the camera is pointing in, in degrees clockwise from north. - * This value will be normalized to be within 0 degrees inclusive and 360 degrees - * exclusive. - * @param padding Padding in pixels. Specified in left, top, right, bottom order. - * @throws NullPointerException if target is null - * @throws IllegalArgumentException if tilt is outside the range of 0 to 90 degrees inclusive. - */ - @Keep - CameraPosition(LatLng target, double zoom, double tilt, double bearing, double[] padding) { - this.target = target; - this.bearing = bearing; - this.tilt = tilt; - this.zoom = zoom; - this.padding = padding; - } - - /** - * Describe the kinds of special objects contained in this Parcelable's - * marshalled representation. - * - * @return integer 0. - */ - @Override - public int describeContents() { - return 0; - } - - /** - * Flatten this object in to a Parcel. - * - * @param out The Parcel in which the object should be written. - * @param flags Additional flags about how the object should be written. May be 0 or - * {@link #PARCELABLE_WRITE_RETURN_VALUE}. - */ - @Override - public void writeToParcel(Parcel out, int flags) { - out.writeDouble(bearing); - out.writeParcelable(target, flags); - out.writeDouble(tilt); - out.writeDouble(zoom); - - if (padding != null) { - int length = padding.length; - out.writeInt(length); - for (double v : padding) { - out.writeDouble(v); - } - } else { - out.writeInt(-1); - } - } - - /** - * Returns a String with the camera target, zoom, bearing and tilt. - * - * @return A String with CameraPosition information. - */ - @Override - public String toString() { - return "Target: " + target + ", Zoom:" + zoom + ", Bearing:" + bearing + ", Tilt:" + tilt - + ", Padding:" + Arrays.toString(padding); - } - - /** - * Compares this {@link CameraPosition} object with another {@link CameraPosition} and - * determines if their target, zoom, tilt, and bearing match. - * - * @param o Another {@link CameraPosition} to compare with this object. - * @return True if target, zoom, tilt, and bearing match this {@link CameraPosition} object. - * Else, false. - */ - @Override - public boolean equals(@Nullable Object o) { - if (this == o) { - return true; - } - - if (o == null || getClass() != o.getClass()) { - return false; - } - - CameraPosition cameraPosition = (CameraPosition) o; - if (target != null && !target.equals(cameraPosition.target)) { - return false; - } else if (zoom != cameraPosition.zoom) { - return false; - } else if (tilt != cameraPosition.tilt) { - return false; - } else if (bearing != cameraPosition.bearing) { - return false; - } else if (!Arrays.equals(padding, cameraPosition.padding)) { - return false; - } - return true; - } - - /** - * Gives an integer which can be used as the bucket number for storing elements of the set/map. - * This bucket number is the address of the element inside the set/map. There's no guarantee - * that this hash value will be consistent between different Java implementations, or even - * between different execution runs of the same program. - * - * @return integer value you can use for storing element. - */ - @Override - public int hashCode() { - int result; - long temp; - temp = Double.doubleToLongBits(bearing); - result = (int) (temp ^ (temp >>> 32)); - result = 31 * result + (target != null ? target.hashCode() : 0); - temp = Double.doubleToLongBits(tilt); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(zoom); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + Arrays.hashCode(padding); - return result; - } - - /** - * Builder for composing CameraPosition objects. - */ - public static final class Builder { - - private double bearing = -1; - @Nullable - private LatLng target = null; - private double tilt = -1; - private double zoom = -1; - private double[] padding = null; - - /** - * Create an empty builder. - */ - public Builder() { - super(); - } - - /** - * Create a builder with an existing CameraPosition data. - * - * @param previous Existing CameraPosition values to use - */ - public Builder(@Nullable CameraPosition previous) { - super(); - if (previous != null) { - this.bearing = previous.bearing; - this.target = previous.target; - this.tilt = previous.tilt; - this.zoom = previous.zoom; - this.padding = previous.padding; - } - } - - /** - * Create a builder with an existing CameraPosition data. - * - * @param typedArray TypedArray containing attribute values - */ - public Builder(@Nullable TypedArray typedArray) { - super(); - if (typedArray != null) { - this.bearing = typedArray.getFloat(R.styleable.mapbox_MapView_mapbox_cameraBearing, 0.0f); - double lat = typedArray.getFloat(R.styleable.mapbox_MapView_mapbox_cameraTargetLat, 0.0f); - double lng = typedArray.getFloat(R.styleable.mapbox_MapView_mapbox_cameraTargetLng, 0.0f); - this.target = new LatLng(lat, lng); - this.tilt = typedArray.getFloat(R.styleable.mapbox_MapView_mapbox_cameraTilt, 0.0f); - this.zoom = typedArray.getFloat(R.styleable.mapbox_MapView_mapbox_cameraZoom, 0.0f); - } - } - - /** - * Create a builder from an existing CameraPositionUpdate update. - * - * @param update Update containing camera options - */ - public Builder(@Nullable CameraUpdateFactory.CameraPositionUpdate update) { - super(); - if (update != null) { - bearing = update.getBearing(); - target = update.getTarget(); - tilt = update.getTilt(); - zoom = update.getZoom(); - padding = update.getPadding(); - } - } - - /** - * Create builder from an existing CameraPositionUpdate update. - * - * @param update Update containing camera options - */ - public Builder(@Nullable CameraUpdateFactory.ZoomUpdate update) { - super(); - if (update != null) { - this.zoom = update.getZoom(); - } - } - - /** - * Sets the direction that the camera is pointing in, in degrees clockwise from north. - * - * @param bearing Bearing - * @return this - */ - @NonNull - public Builder bearing(double bearing) { - double direction = bearing; - - while (direction >= 360) { - direction -= 360; - } - while (direction < 0) { - direction += 360; - } - - this.bearing = direction; - return this; - } - - /** - * Sets the location where the camera is pointing at. - * - * @param location target of the camera - * @return this - */ - @NonNull - public Builder target(LatLng location) { - this.target = location; - return this; - } - - /** - * Set the tilt of the camera in degrees - * <p> - * value is clamped to {@link MapboxConstants#MINIMUM_TILT} and {@link MapboxConstants#MAXIMUM_TILT}. - * </p> - * - * @param tilt Tilt value of the camera - * @return this - */ - @NonNull - public Builder tilt(@FloatRange(from = MapboxConstants.MINIMUM_TILT, - to = MapboxConstants.MAXIMUM_TILT) double tilt) { - this.tilt = MathUtils.clamp(tilt, MapboxConstants.MINIMUM_TILT, MapboxConstants.MAXIMUM_TILT); - return this; - } - - /** - * Set the zoom of the camera - * <p> - * Zoom ranges from {@link MapboxConstants#MINIMUM_ZOOM} to {@link MapboxConstants#MAXIMUM_ZOOM} - * </p> - * - * @param zoom Zoom value of the camera - * @return this - */ - @NonNull - public Builder zoom(@FloatRange(from = MapboxConstants.MINIMUM_ZOOM, - to = MapboxConstants.MAXIMUM_ZOOM) double zoom) { - this.zoom = zoom; - return this; - } - - /** - * Padding in pixels that shifts the viewport by the specified amount. - * Applied padding is going to persist and impact following camera transformations. - * <p> - * Specified in left, top, right, bottom order. - * </p> - * - * @param padding Camera padding - * @return this - */ - @NonNull - public Builder padding(@Size(4) double[] padding) { - this.padding = padding; - return this; - } - - /** - * Padding in pixels that shifts the viewport by the specified amount. - * Applied padding is going to persist and impact following camera transformations. - * <p> - * Specified in left, top, right, bottom order. - * </p> - * - * @return this - */ - @NonNull - public Builder padding(double left, double top, double right, double bottom) { - this.padding = new double[] {left, top, right, bottom}; - return this; - } - - /** - * Builds the CameraPosition. - * - * @return CameraPosition - */ - public CameraPosition build() { - return new CameraPosition(target, zoom, tilt, bearing, padding); - } - } -} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdate.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdate.java deleted file mode 100644 index 39b937210c..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdate.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.mapbox.mapboxsdk.camera; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.mapbox.mapboxsdk.maps.MapboxMap; - -/** - * Interface definition for camera updates. - */ -public interface CameraUpdate { - - /** - * Get the camera position from the camera update. - * - * @param mapboxMap Map object to build the position from - * @return the camera position from the implementing camera update - */ - @Nullable - CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap); - -} - diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java deleted file mode 100644 index b611456f43..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java +++ /dev/null @@ -1,637 +0,0 @@ -package com.mapbox.mapboxsdk.camera; - -import android.graphics.Point; -import android.graphics.PointF; -import android.support.annotation.IntDef; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.geometry.LatLngBounds; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.Projection; -import com.mapbox.mapboxsdk.maps.UiSettings; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.util.Arrays; - -/** - * Factory for creating CameraUpdate objects. - */ -public final class CameraUpdateFactory { - - /** - * Returns a CameraUpdate that moves the camera to a specified CameraPosition. - * - * @param cameraPosition Camera Position to change to - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newCameraPosition(@NonNull CameraPosition cameraPosition) { - return new CameraPositionUpdate(cameraPosition.bearing, cameraPosition.target, cameraPosition.tilt, - cameraPosition.zoom, cameraPosition.padding); - } - - /** - * Returns a CameraUpdate that moves the center of the screen to a latitude and longitude - * specified by a LatLng object. This centers the camera on the LatLng object. - * - * @param latLng Target location to change to - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newLatLng(@NonNull LatLng latLng) { - return new CameraPositionUpdate(-1, latLng, -1, -1, null); - } - - /** - * Returns a CameraUpdate that transforms the camera such that the specified - * latitude/longitude bounds are centered on screen at the greatest possible zoom level while maintaining - * current camera position bearing and tilt values. - * <p> - * You can specify padding, in order to inset the bounding box from the map view's edges. - * The padding will not persist and impact following camera transformations. - * </p> - * - * @param bounds Bounds to match Camera position with - * @param padding Padding added to the bounds - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newLatLngBounds(@NonNull LatLngBounds bounds, int padding) { - return newLatLngBounds(bounds, padding, padding, padding, padding); - } - - /** - * Returns a CameraUpdate that transforms the camera such that the specified - * latitude/longitude bounds are centered on screen at the greatest possible zoom level while using - * provided bearing and tilt values. - * <p> - * You can specify padding, in order to inset the bounding box from the map view's edges. - * The padding will not persist and impact following camera transformations. - * </p> - * - * @param bounds Bounds to match Camera position with - * @param bearing Bearing to take in account when generating the bounds - * @param tilt Tilt to take in account when generating the bounds - * @param padding Padding added to the bounds - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newLatLngBounds(@NonNull LatLngBounds bounds, double bearing, double tilt, int padding) { - return newLatLngBounds(bounds, bearing, tilt, padding, padding, padding, padding); - } - - /** - * Returns a CameraUpdate that transforms the camera such that the specified - * latitude/longitude bounds are centered on screen at the greatest possible zoom level while maintaining - * current camera position bearing and tilt values. - * <p> - * You can specify padding, in order to inset the bounding box from the map view's edges. - * The padding will not persist and impact following camera transformations. - * </p> - * - * @param bounds Bounds to base the Camera position out of - * @param paddingLeft Padding left of the bounds - * @param paddingTop Padding top of the bounds - * @param paddingRight Padding right of the bounds - * @param paddingBottom Padding bottom of the bounds - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newLatLngBounds(@NonNull LatLngBounds bounds, int paddingLeft, int paddingTop, - int paddingRight, int paddingBottom) { - return new CameraBoundsUpdate(bounds, null, null, paddingLeft, paddingTop, paddingRight, paddingBottom); - } - - /** - * Returns a CameraUpdate that transforms the camera such that the specified - * latitude/longitude bounds are centered on screen at the greatest possible zoom level while using - * provided bearing and tilt values. - * <p> - * You can specify padding, in order to inset the bounding box from the map view's edges. - * The padding will not persist and impact following camera transformations. - * </p> - * - * @param bounds Bounds to base the Camera position out of - * @param bearing Bearing to take in account when generating the bounds - * @param tilt Tilt to take in account when generating the bounds - * @param paddingLeft Padding left of the bounds - * @param paddingTop Padding top of the bounds - * @param paddingRight Padding right of the bounds - * @param paddingBottom Padding bottom of the bounds - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newLatLngBounds(@NonNull LatLngBounds bounds, double bearing, double tilt, - int paddingLeft, int paddingTop, int paddingRight, int paddingBottom) { - return new CameraBoundsUpdate(bounds, bearing, tilt, paddingLeft, paddingTop, paddingRight, paddingBottom); - } - - /** - * Returns a CameraUpdate that moves the center of the screen to a latitude and longitude - * specified by a LatLng object taking the specified padding into account. - * - * @param latLng Target location to change to - * @param zoom Zoom level to change to - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newLatLngZoom(@NonNull LatLng latLng, double zoom) { - return new CameraPositionUpdate(-1, latLng, -1, zoom, null); - } - - /** - * Returns a CameraUpdate that moves the center of the screen to a latitude and longitude - * specified by a LatLng object, and moves to the given zoom level. - * Applied padding is going to persist and impact following camera transformations. - * - * @param latLng Target location to change to - * @param left Left padding - * @param top Top padding - * @param right Right padding - * @param bottom Bottom padding - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate newLatLngPadding(@NonNull LatLng latLng, - double left, double top, double right, double bottom) { - return new CameraPositionUpdate(-1, latLng, -1, -1, new double[] {left, top, right, bottom}); - } - - /** - * Returns a CameraUpdate that shifts the zoom level of the current camera viewpoint. - * - * @param amount Amount of zoom level to change with - * @param focus Focus point of zoom - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate zoomBy(double amount, Point focus) { - return new ZoomUpdate(amount, focus.x, focus.y); - } - - /** - * Returns a CameraUpdate that shifts the zoom level of the current camera viewpoint. - * - * @param amount Amount of zoom level to change with - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate zoomBy(double amount) { - return new ZoomUpdate(ZoomUpdate.ZOOM_BY, amount); - } - - /** - * Returns a CameraUpdate that zooms in on the map by moving the viewpoint's height closer to - * the Earth's surface. The zoom increment is 1.0. - * - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate zoomIn() { - return new ZoomUpdate(ZoomUpdate.ZOOM_IN); - } - - /** - * Returns a CameraUpdate that zooms out on the map by moving the viewpoint's height farther - * away from the Earth's surface. The zoom increment is -1.0. - * - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate zoomOut() { - return new ZoomUpdate(ZoomUpdate.ZOOM_OUT); - } - - /** - * Returns a CameraUpdate that moves the camera viewpoint to a particular zoom level. - * - * @param zoom Zoom level to change to - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate zoomTo(double zoom) { - return new ZoomUpdate(ZoomUpdate.ZOOM_TO, zoom); - } - - /** - * Returns a CameraUpdate that moves the camera viewpoint to a particular bearing. - * - * @param bearing Bearing to change to - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate bearingTo(double bearing) { - return new CameraPositionUpdate(bearing, null, -1, -1, null); - } - - /** - * Returns a CameraUpdate that moves the camera viewpoint to a particular tilt. - * - * @param tilt Tilt to change to - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate tiltTo(double tilt) { - return new CameraPositionUpdate(-1, null, tilt, -1, null); - } - - /** - * Returns a CameraUpdate that when animated changes the camera padding. - * Applied padding is going to persist and impact following camera transformations. - * <p> - * Specified in left, top, right, bottom order. - * </p> - * - * @param padding Padding to change to - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate paddingTo(double[] padding) { - return new CameraPositionUpdate(-1, null, -1, -1, padding); - } - - /** - * Returns a CameraUpdate that when animated changes the camera padding. - * Applied padding is going to persist and impact following camera transformations. - * <p> - * Specified in left, top, right, bottom order. - * </p> - * - * @return CameraUpdate Final Camera Position - */ - public static CameraUpdate paddingTo(double left, double top, double right, double bottom) { - return paddingTo(new double[] {left, top, right, bottom}); - } - - // - // CameraUpdate types - // - - static final class CameraPositionUpdate implements CameraUpdate { - - private final double bearing; - private final LatLng target; - private final double tilt; - private final double zoom; - private final double[] padding; - - CameraPositionUpdate(double bearing, LatLng target, double tilt, double zoom, double[] padding) { - this.bearing = bearing; - this.target = target; - this.tilt = tilt; - this.zoom = zoom; - this.padding = padding; - } - - public LatLng getTarget() { - return target; - } - - public double getBearing() { - return bearing; - } - - public double getTilt() { - return tilt; - } - - public double getZoom() { - return zoom; - } - - public double[] getPadding() { - return padding; - } - - @Override - public CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap) { - if (target == null) { - CameraPosition previousPosition = mapboxMap.getCameraPosition(); - return new CameraPosition.Builder(this) - .target(previousPosition.target) - .build(); - } - return new CameraPosition.Builder(this).build(); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - CameraPositionUpdate that = (CameraPositionUpdate) o; - - if (Double.compare(that.bearing, bearing) != 0) { - return false; - } - if (Double.compare(that.tilt, tilt) != 0) { - return false; - } - if (Double.compare(that.zoom, zoom) != 0) { - return false; - } - if (target != null ? !target.equals(that.target) : that.target != null) { - return false; - } - return Arrays.equals(padding, that.padding); - } - - @Override - public int hashCode() { - int result; - long temp; - temp = Double.doubleToLongBits(bearing); - result = (int) (temp ^ (temp >>> 32)); - result = 31 * result + (target != null ? target.hashCode() : 0); - temp = Double.doubleToLongBits(tilt); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(zoom); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + Arrays.hashCode(padding); - return result; - } - - @Override - public String toString() { - return "CameraPositionUpdate{" - + "bearing=" + bearing - + ", target=" + target - + ", tilt=" + tilt - + ", zoom=" + zoom - + ", padding=" + Arrays.toString(padding) - + '}'; - } - } - - static final class CameraBoundsUpdate implements CameraUpdate { - - private final LatLngBounds bounds; - private final int[] padding; - private final Double bearing; - private final Double tilt; - - CameraBoundsUpdate(LatLngBounds bounds, Double bearing, Double tilt, int[] padding) { - this.bounds = bounds; - this.padding = padding; - this.bearing = bearing; - this.tilt = tilt; - } - - CameraBoundsUpdate(LatLngBounds bounds, Double bearing, Double tilt, int paddingLeft, - int paddingTop, int paddingRight, int paddingBottom) { - this(bounds, bearing, tilt, new int[] {paddingLeft, paddingTop, paddingRight, paddingBottom}); - } - - public LatLngBounds getBounds() { - return bounds; - } - - public int[] getPadding() { - return padding; - } - - @Override - public CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap) { - if (bearing == null && tilt == null) { - // use current camera position tilt and bearing - return mapboxMap.getCameraForLatLngBounds(bounds, padding); - } else { - // use provided tilt and bearing - assert bearing != null; - assert tilt != null; - return mapboxMap.getCameraForLatLngBounds(bounds, padding, bearing, tilt); - } - } - - @Override - public boolean equals(@Nullable Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - CameraBoundsUpdate that = (CameraBoundsUpdate) o; - - if (!bounds.equals(that.bounds)) { - return false; - } - return Arrays.equals(padding, that.padding); - } - - @Override - public int hashCode() { - int result = bounds.hashCode(); - result = 31 * result + Arrays.hashCode(padding); - return result; - } - - @Override - public String toString() { - return "CameraBoundsUpdate{" - + "bounds=" + bounds - + ", padding=" + Arrays.toString(padding) - + '}'; - } - } - - static final class CameraMoveUpdate implements CameraUpdate { - - private float x; - private float y; - - CameraMoveUpdate(float x, float y) { - this.x = x; - this.y = y; - } - - @Override - 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(); - 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 - ); - - LatLng latLng = projection.fromScreenLocation(targetPoint); - CameraPosition previousPosition = mapboxMap.getCameraPosition(); - CameraPosition position = - new CameraPosition.Builder() - .target(latLng) - .zoom(previousPosition.zoom) - .tilt(previousPosition.tilt) - .bearing(previousPosition.bearing) - .build(); - return position; - } - - @Override - public boolean equals(@Nullable Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - CameraMoveUpdate that = (CameraMoveUpdate) o; - - if (Float.compare(that.x, x) != 0) { - return false; - } - return Float.compare(that.y, y) == 0; - } - - @Override - public int hashCode() { - int result = (x != +0.0f ? Float.floatToIntBits(x) : 0); - result = 31 * result + (y != +0.0f ? Float.floatToIntBits(y) : 0); - return result; - } - - @Override - public String toString() { - return "CameraMoveUpdate{" - + "x=" + x - + ", y=" + y - + '}'; - } - } - - static final class ZoomUpdate implements CameraUpdate { - - @IntDef( {ZOOM_IN, ZOOM_OUT, ZOOM_BY, ZOOM_TO, ZOOM_TO_POINT}) - @Retention(RetentionPolicy.SOURCE) - @interface Type { - } - - static final int ZOOM_IN = 0; - static final int ZOOM_OUT = 1; - static final int ZOOM_BY = 2; - static final int ZOOM_TO = 3; - static final int ZOOM_TO_POINT = 4; - - @Type - private final int type; - private final double zoom; - private float x; - private float y; - - ZoomUpdate(@Type int type) { - this.type = type; - this.zoom = 0; - } - - ZoomUpdate(@Type int type, double zoom) { - this.type = type; - this.zoom = zoom; - } - - ZoomUpdate(double zoom, float x, float y) { - this.type = ZOOM_TO_POINT; - this.zoom = zoom; - this.x = x; - this.y = y; - } - - public double getZoom() { - return zoom; - } - - @Type - public int getType() { - return type; - } - - public float getX() { - return x; - } - - public float getY() { - return y; - } - - double transformZoom(double currentZoom) { - switch (getType()) { - case CameraUpdateFactory.ZoomUpdate.ZOOM_IN: - currentZoom++; - break; - case CameraUpdateFactory.ZoomUpdate.ZOOM_OUT: - currentZoom--; - if (currentZoom < 0) { - currentZoom = 0; - } - break; - case CameraUpdateFactory.ZoomUpdate.ZOOM_TO: - currentZoom = getZoom(); - break; - case CameraUpdateFactory.ZoomUpdate.ZOOM_BY: - currentZoom = currentZoom + getZoom(); - break; - case CameraUpdateFactory.ZoomUpdate.ZOOM_TO_POINT: - currentZoom = currentZoom + getZoom(); - break; - } - return currentZoom; - } - - @Override - public CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap) { - CameraPosition cameraPosition = mapboxMap.getCameraPosition(); - if (getType() != CameraUpdateFactory.ZoomUpdate.ZOOM_TO_POINT) { - return new CameraPosition.Builder(cameraPosition) - .zoom(transformZoom(cameraPosition.zoom)) - .build(); - } else { - return new CameraPosition.Builder(cameraPosition) - .zoom(transformZoom(cameraPosition.zoom)) - .target(mapboxMap.getProjection().fromScreenLocation(new PointF(getX(), getY()))) - .build(); - } - } - - @Override - public boolean equals(@Nullable Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - - ZoomUpdate that = (ZoomUpdate) o; - - if (type != that.type) { - return false; - } - if (Double.compare(that.zoom, zoom) != 0) { - return false; - } - if (Float.compare(that.x, x) != 0) { - return false; - } - return Float.compare(that.y, y) == 0; - } - - @Override - public int hashCode() { - int result; - long temp; - result = type; - temp = Double.doubleToLongBits(zoom); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + (x != +0.0f ? Float.floatToIntBits(x) : 0); - result = 31 * result + (y != +0.0f ? Float.floatToIntBits(y) : 0); - return result; - } - - @Override - public String toString() { - return "ZoomUpdate{" - + "type=" + type - + ", zoom=" + zoom - + ", x=" + x - + ", y=" + y - + '}'; - } - } -} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/package-info.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/package-info.java deleted file mode 100644 index 04ef699c21..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Contains the Mapbox Maps Android Camera API classes. - */ -package com.mapbox.mapboxsdk.camera; |