diff options
author | Tobrun <tobrun@mapbox.com> | 2017-03-24 18:41:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-24 18:41:49 +0100 |
commit | 66ed1a10803320e96382feb00c18ee0bfd507b02 (patch) | |
tree | 4b415a778afa9345dcc086a8dae25f309d8b3705 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java | |
parent | c7722b54a846a76736369cc98c59c81b3687201b (diff) | |
download | qtlocation-mapboxgl-66ed1a10803320e96382feb00c18ee0bfd507b02.tar.gz |
[android] - harden offline region creation, add include method, expose world bounds, update tests (#8517)
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java | 116 |
1 files changed, 108 insertions, 8 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java index 3b92f0f0f5..4a4e2a30aa 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java @@ -5,12 +5,16 @@ import android.os.Parcelable; import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.exceptions.InvalidLatLngBoundsException; +import com.mapbox.services.android.telemetry.constants.GeoConstants; import java.util.ArrayList; import java.util.List; /** * A geographical area representing a latitude/longitude aligned rectangle. + * <p> + * This class does not wrap values to the world bounds. + * </p> */ public class LatLngBounds implements Parcelable { @@ -37,6 +41,18 @@ public class LatLngBounds implements Parcelable { } /** + * Returns the world bounds. + * + * @return the bounds representing the world + */ + public static LatLngBounds world() { + return new LatLngBounds.Builder() + .include(new LatLng(GeoConstants.MAX_LATITUDE, GeoConstants.MAX_LONGITUDE)) + .include(new LatLng(GeoConstants.MIN_LATITUDE, GeoConstants.MIN_LONGITUDE)) + .build(); + } + + /** * Calculates the centerpoint of this LatLngBounds by simple interpolation and returns * it as a point. This is a non-geodesic calculation which is not the geographic center. * @@ -47,23 +63,79 @@ public class LatLngBounds implements Parcelable { (this.mLonEast + this.mLonWest) / 2); } + /** + * Get the north latitude value of this bounds. + * + * @return double latitude value for north + */ public double getLatNorth() { return this.mLatNorth; } + /** + * Get the south latitude value of this bounds. + * + * @return double latitude value for south + */ public double getLatSouth() { return this.mLatSouth; } + /** + * Get the east longitude value of this bounds. + * + * @return double longitude value for east + */ public double getLonEast() { return this.mLonEast; } + /** + * Get the west longitude value of this bounds. + * + * @return double longitude value for west + */ public double getLonWest() { return this.mLonWest; } /** + * Get the latitude-longitude pair of the south west corner of this bounds. + * + * @return LatLng of the south west corner + */ + public LatLng getSouthWest() { + return new LatLng(mLatSouth, mLonWest); + } + + /** + * Get the latitude-longitude paur if the north east corner of this bounds. + * + * @return LatLng of the north east corner + */ + public LatLng getNorthEast() { + return new LatLng(mLatNorth, mLonEast); + } + + /** + * Get the latitude-longitude pair of the south east corner of this bounds. + * + * @return LatLng of the south east corner + */ + public LatLng getSouthEast() { + return new LatLng(mLatSouth, mLonEast); + } + + /** + * Get the latitude-longitude pair of the north west corner of this bounds. + * + * @return LatLng of the north west corner + */ + public LatLng getNorthWest() { + return new LatLng(mLatNorth, mLonWest); + } + + /** * Get the area spanned by this LatLngBounds * * @return LatLngSpan area @@ -133,8 +205,27 @@ public class LatLngBounds implements Parcelable { return new LatLngBounds(maxLat, maxLon, minLat, minLon); } + /** + * Return an array of LatLng objects resembling this bounds. + * + * @return an array of 2 LatLng objects. + */ public LatLng[] toLatLngs() { - return new LatLng[] {new LatLng(mLatNorth, mLonEast), new LatLng(mLatSouth, mLonWest)}; + return new LatLng[] {getNorthEast(), getSouthWest()}; + } + + /** + * Constructs a LatLngBounds from current bounds with an additional latitude-longitude pair. + * + * @param latLng the latitude lognitude pair to include in the bounds. + * @return the newly constructed bounds + */ + public LatLngBounds include(LatLng latLng) { + return new LatLngBounds.Builder() + .include(getNorthEast()) + .include(getSouthWest()) + .include(latLng) + .build(); } /** @@ -159,19 +250,28 @@ public class LatLngBounds implements Parcelable { } /** - * Determines whether this LatLngBounds contains a point and the point - * does not touch its boundary. + * Determines whether this LatLngBounds contains a point. * * @param latLng the point which may be contained - * @return true, if the point is contained within the box. + * @return true, if the point is contained within the bounds */ public boolean contains(final ILatLng latLng) { final double latitude = latLng.getLatitude(); final double longitude = latLng.getLongitude(); - return ((latitude < this.mLatNorth) - && (latitude > this.mLatSouth)) - && ((longitude < this.mLonEast) - && (longitude > this.mLonWest)); + return ((latitude <= this.mLatNorth) + && (latitude >= this.mLatSouth)) + && ((longitude <= this.mLonEast) + && (longitude >= this.mLonWest)); + } + + /** + * Determines whether this LatLngBounds contains another bounds. + * + * @param other the bounds which may be contained + * @return true, if the bounds is contained within the bounds + */ + public boolean contains(final LatLngBounds other) { + return contains(other.getNorthEast()) && contains(other.getSouthWest()); } /** |