diff options
author | “osana” <osana.babayan@mapbox.com> | 2018-04-10 14:38:26 -0400 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2018-04-11 14:02:31 +0200 |
commit | c119cc3b9ca2b206ed6356c3f2d274451587d6b7 (patch) | |
tree | 381fc1903dcd07db5c81f22b71dfaaac67974a0e | |
parent | 33d3c27ab039e77f7d5691b1040b8b2af9615ec4 (diff) | |
download | qtlocation-mapboxgl-upstream/osana-center-zeroSpanBounds.tar.gz |
[android] center was calculated incorrectly for LatLngBounds with zero spanupstream/osana-center-zeroSpanBounds
2 files changed, 24 insertions, 4 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 591dd2c144..55494b72d8 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 @@ -67,7 +67,7 @@ public class LatLngBounds implements Parcelable { double latCenter = (this.latitudeNorth + this.latitudeSouth) / 2.0; double longCenter; - if (this.longitudeEast > this.longitudeWest) { + if (this.longitudeEast >= this.longitudeWest) { longCenter = (this.longitudeEast + this.longitudeWest) / 2; } else { double halfSpan = (GeometryConstants.LONGITUDE_SPAN + this.longitudeEast - this.longitudeWest) / 2.0; @@ -180,7 +180,7 @@ public class LatLngBounds implements Parcelable { */ public double getLongitudeSpan() { double longSpan = Math.abs(this.longitudeEast - this.longitudeWest); - if (this.longitudeEast > this.longitudeWest) { + if (this.longitudeEast >= this.longitudeWest) { return longSpan; } @@ -191,7 +191,7 @@ public class LatLngBounds implements Parcelable { static double getLongitudeSpan(final double longEast, final double longWest) { double longSpan = Math.abs(longEast - longWest); - if (longEast > longWest) { + if (longEast >= longWest) { return longSpan; } @@ -240,7 +240,6 @@ public class LatLngBounds implements Parcelable { westLon = temp; } } else { - lonSpan = GeometryConstants.LONGITUDE_SPAN - lonSpan; if (westLon < eastLon) { double temp = eastLon; eastLon = westLon; diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java index 6b8462e351..e072f07fb9 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java @@ -111,6 +111,14 @@ public class LatLngBoundsTest { } @Test + public void zeroLongitudeSpan() { + latLngBounds = LatLngBounds.from(10, 10, -10, 10); + LatLngSpan latLngSpan = latLngBounds.getSpan(); + assertEquals("LatLngSpan should be shortest distance", new LatLngSpan(20, 0), + latLngSpan); + } + + @Test public void nearDateLineCenter1() { latLngBounds = LatLngBounds.from(10, -175, -10, 165); LatLng center = latLngBounds.getCenter(); @@ -145,6 +153,19 @@ public class LatLngBoundsTest { assertEquals("Center should match", new LatLng(0, 90), center); } + @Test + public void centerForBoundsWithSameLongitude() { + latLngBounds = LatLngBounds.from(10, 10, -10, 10); + LatLng center = latLngBounds.getCenter(); + assertEquals("Center should match", new LatLng(0, 10), center); + } + + @Test + public void centerForBoundsWithSameLatitude() { + latLngBounds = LatLngBounds.from(10, 10, 10, -10); + LatLng center = latLngBounds.getCenter(); + assertEquals("Center should match", new LatLng(10, 0), center); + } @Test public void center() { |