diff options
author | Tobrun <tobrun@mapbox.com> | 2016-01-11 11:32:00 +0100 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2016-01-29 13:15:58 +0100 |
commit | 8ed1dc9f7412d61a66bae576346f2674e6ab3926 (patch) | |
tree | cdd6ee3b83dcdb3733a80cb46797318b6598dda7 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java | |
parent | 710398b780cc05e961a9c58c18176af46bbd34be (diff) | |
download | qtlocation-mapboxgl-8ed1dc9f7412d61a66bae576346f2674e6ab3926.tar.gz |
[android] #3145 - MapboxMap
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java | 122 |
1 files changed, 99 insertions, 23 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 index 7b98a0df37..6b059ed475 100644 --- 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 @@ -1,9 +1,17 @@ package com.mapbox.mapboxsdk.camera; +import android.content.res.TypedArray; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.FloatRange; + +import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.constants.MapboxConstants; +import com.mapbox.mapboxsdk.constants.MathConstants; import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.MapboxMap; +import com.mapbox.mapboxsdk.utils.MathUtils; public final class CameraPosition implements Parcelable { @@ -44,35 +52,22 @@ public final class CameraPosition implements Parcelable { public final float zoom; /** - * * 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 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 NullPointerException if target is null * @throws IllegalArgumentException if tilt is outside the range of 0 to 90 degrees inclusive. */ - public CameraPosition (LatLng target, float zoom, float tilt, float bearing) throws NullPointerException, IllegalArgumentException{ - super(); - if (target == null) { - throw new NullPointerException("target is NULL"); - } + CameraPosition(LatLng target, float zoom, float tilt, float bearing) { this.target = target; - - // Allow for default value of -1 - if (tilt != -1) { - if (tilt < 0.0f || tilt > 90.0f) { - throw new IllegalArgumentException("tilt is outside of 0 to 90 degrees range"); - } - } - this.tilt = tilt; - this.bearing = bearing; + this.tilt = tilt; this.zoom = zoom; } - @Override public int describeContents() { return 0; @@ -86,6 +81,36 @@ public final class CameraPosition implements Parcelable { out.writeFloat(zoom); } + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + + if (o == null || getClass() != o.getClass()) { + return false; + } + + CameraPosition cameraPosition = (CameraPosition) o; + if (!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; + } + return true; + } + + @Override + public int hashCode() { + int result = 1; + result = 31 * result + (target != null ? target.hashCode() : 0); + return result; + } + /** * Builds camera position. */ @@ -105,6 +130,7 @@ public final class CameraPosition implements Parcelable { /** * Create Builder with an existing CameraPosition data. + * * @param previous Existing CameraPosition values to use */ public Builder(CameraPosition previous) { @@ -118,17 +144,64 @@ public final class CameraPosition implements Parcelable { } /** + * Create Builder with an existing CameraPosition data. + * + * @param typedArray TypedArray containgin attribute values + */ + public Builder(TypedArray typedArray){ + super(); + if(typedArray!=null) { + this.bearing = typedArray.getFloat(R.styleable.MapView_direction, 0.0f); + double lat = typedArray.getFloat(R.styleable.MapView_center_latitude, 0.0f); + double lng = typedArray.getFloat(R.styleable.MapView_center_longitude, 0.0f); + this.target= new LatLng(lat, lng); + this.tilt = typedArray.getFloat(R.styleable.MapView_tilt, 0.0f); + this.zoom = typedArray.getFloat(R.styleable.MapView_zoom, 0.0f); + } + } + + /** + * Create Builder from an existing PositionCameraUpdate update. + * + * @param update Update containing camera options + */ + public Builder(CameraUpdateFactory.PositionCameraUpdate update) { + super(); + if (update != null) { + this.bearing = update.getBearing(); + this.target = update.getTarget(); + this.tilt = update.getTilt(); + this.zoom = update.getZoom(); + } + } + + + /** + * Create Builder from an existing PositionCameraUpdate update. + * + * @param update Update containing camera options + */ + public Builder(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 Builder */ - public Builder bearing (float bearing) { - this.bearing = bearing; + public Builder bearing(float bearing) { + this.bearing = (float) (-bearing * MathConstants.DEG2RAD); return this; } /** * Builds a CameraPosition. + * * @return CameraPosition */ public CameraPosition build() { @@ -137,6 +210,7 @@ public final class CameraPosition implements Parcelable { /** * Sets the location that the camera is pointing at. + * * @param location Location * @return Builder */ @@ -147,17 +221,19 @@ public final class CameraPosition implements Parcelable { /** * Set the tilt + * * @param tilt Tilt value * @return Builder */ @FloatRange(from = 0.0, to = 60.0) public Builder tilt(float tilt) { - this.tilt = tilt; + this.tilt = (float) (MathUtils.clamp(tilt, MapboxConstants.MINIMUM_TILT, MapboxConstants.MAXIMUM_TILT) * MathConstants.DEG2RAD); return this; } /** * Set the zoom + * * @param zoom Zoom value * @return Builder */ |