summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorosana <osana.babayan@mapbox.com>2018-12-11 20:46:59 +0100
committer“osana” <osana.babayan@mapbox.com>2018-12-11 19:30:12 -0500
commit4c451233d03cd910ad354cd837f9c20b0a27a07f (patch)
tree809830772c67e1fb4f0415fd45e854999625d3c3
parent3810e7b5b8dc7ab824268bb6b99d47b41284f92e (diff)
downloadqtlocation-mapboxgl-upstream/osana-lat-lng-donotwrap.tar.gz
Don't wrap LatLngBounds (#13540)upstream/osana-lat-lng-donotwrap
* [android] - don't wrap LatLngBounds * Update GeometryConstants.java * Update NativeMapTest
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/GeometryConstants.java4
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java5
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java29
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/NativeMapViewTest.kt5
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/LatLngBoundsTest.java1
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LatLngBoundsForCameraActivity.java56
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_bounds.xml12
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml2
8 files changed, 88 insertions, 26 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/GeometryConstants.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/GeometryConstants.java
index 1ac08b12e1..6f6e777922 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/GeometryConstants.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/GeometryConstants.java
@@ -24,12 +24,12 @@ public class GeometryConstants {
/**
* This constant represents the lowest longitude value available to represent a geolocation.
*/
- public static final double MIN_LONGITUDE = Double.NEGATIVE_INFINITY;
+ public static final double MIN_LONGITUDE = -Double.MAX_VALUE;
/**
* This constant represents the highest longitude value available to represent a geolocation.
*/
- public static final double MAX_LONGITUDE = Double.POSITIVE_INFINITY;
+ public static final double MAX_LONGITUDE = Double.MAX_VALUE;
/**
* This constant represents the lowest latitude value available to represent a geolocation.
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 b66dd46b4c..263780f473 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
@@ -256,6 +256,7 @@ public class LatLngBounds implements Parcelable {
* otherwise IllegalArgumentException will be thrown.
* latNorth should be greater or equal latSouth, otherwise IllegalArgumentException will be thrown.
* <p>
+ * This method doesn't recalculate most east or most west boundaries.
* Note @since 7.0.0 lonEast and lonWest will NOT be wrapped to be in the range of [-180, 180],
* see {@link GeometryConstants#MIN_LONGITUDE} and {@link GeometryConstants#MAX_LONGITUDE}
* lonEast should be greater or equal lonWest, otherwise IllegalArgumentException will be thrown.
@@ -286,6 +287,10 @@ public class LatLngBounds implements Parcelable {
throw new IllegalArgumentException("longitude must not be NaN");
}
+ if (Double.isInfinite(lonEast) || Double.isInfinite(lonWest)) {
+ throw new IllegalArgumentException("longitude must not be infinite");
+ }
+
if (latNorth > MAX_LATITUDE || latNorth < MIN_LATITUDE
|| latSouth > MAX_LATITUDE || latSouth < MIN_LATITUDE) {
throw new IllegalArgumentException("latitude must be between -90 and 90");
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 6990c9cab3..6c44c29e3b 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
@@ -257,8 +257,9 @@ public class LatLngBoundsTest {
.include(new LatLng(0, -190))
.build();
+ LatLngSpan latLngSpan = latLngBounds.getSpan();
assertEquals("LatLngSpan should be the same",
- new LatLngSpan(20, 20), latLngBounds.getSpan());
+ new LatLngSpan(20, 20), latLngSpan);
}
@Test
@@ -395,14 +396,20 @@ public class LatLngBoundsTest {
public void intersectSouthLessThanNorthCheck() {
exception.expect(IllegalArgumentException.class);
exception.expectMessage("latNorth cannot be less than latSouth");
-
LatLngBounds intersectLatLngBounds =
LatLngBounds.from(10, 10, 0, 0)
.intersect(0, 200, 20, 0);
}
-
@Test
+ public void intersectEastLessThanWestCheck() {
+ exception.expect(IllegalArgumentException.class);
+ exception.expectMessage("lonEast cannot be less than lonWest");
+ LatLngBounds intersectLatLngBounds =
+ LatLngBounds.from(10, -10, 0, 0)
+ .intersect(0, 200, 20, 0);
+ }
+
public void intersectEastDoesNotWrapCheck() {
LatLngBounds latLngBounds1 = LatLngBounds.from(10, 210, 0, 0);
@@ -749,10 +756,10 @@ public class LatLngBoundsTest {
}
@Test
- public void testConstructorEastLongitudeInfinityAllowed() {
- LatLngBounds latLngBounds =
- LatLngBounds.from(0, Double.POSITIVE_INFINITY, -20, -20);
- assertEquals(Double.POSITIVE_INFINITY, latLngBounds.getLonEast(), DELTA);
+ public void testConstructorChecksEastLongitudeInfinity() {
+ exception.expect(IllegalArgumentException.class);
+ exception.expectMessage("longitude must not be infinite");
+ LatLngBounds.from(0, Double.POSITIVE_INFINITY, -20, -20);
}
@Test
@@ -784,10 +791,10 @@ public class LatLngBoundsTest {
}
@Test
- public void testConstructorWestLongitudeInfinityAllowed() {
- LatLngBounds latLngBounds =
- LatLngBounds.from(20, 20, 0, Double.NEGATIVE_INFINITY);
- assertEquals(Double.NEGATIVE_INFINITY, latLngBounds.getLonWest(), DELTA);
+ public void testConstructorChecksWestLongitudeInfinity() {
+ exception.expect(IllegalArgumentException.class);
+ exception.expectMessage("longitude must not be infinite");
+ LatLngBounds.from(20, 20, 0, Double.POSITIVE_INFINITY);
}
@Test
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/NativeMapViewTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/NativeMapViewTest.kt
index c48b99964f..1514c362f3 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/NativeMapViewTest.kt
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/maps/NativeMapViewTest.kt
@@ -238,7 +238,8 @@ class NativeMapViewTest {
fun testLatLngForProjectedMeters() {
val expected = LatLng(0.01796630538796444, 0.02694945852363162)
val actual = nativeMapView.latLngForProjectedMeters(ProjectedMeters(2000.0, 3000.0))
- assertEquals("Get LatLng for projected meters", expected, actual)
+ assertEquals("Lat for projected meters", expected.latitude, actual.latitude, DELTA)
+ assertEquals("Lng for projected meters", expected.longitude, actual.longitude, DELTA)
}
@Test
@@ -306,7 +307,7 @@ class NativeMapViewTest {
.bearing(0.0)
.build()
val actual = nativeMapView.getCameraForLatLngBounds(
- LatLngBounds.from(30.0, 12.0, 16.0, 16.0),
+ LatLngBounds.from(30.0, 16.0, 16.0, 12.0),
intArrayOf(0, 0, 0, 0),
0.0,
0.0
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/LatLngBoundsTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/LatLngBoundsTest.java
index 7aaca370b2..0fdae6fcda 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/LatLngBoundsTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/geometry/LatLngBoundsTest.java
@@ -6,7 +6,6 @@ import com.mapbox.mapboxsdk.geometry.LatLngBounds;
import com.mapbox.mapboxsdk.testapp.action.MapboxMapAction;
import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest;
import com.mapbox.mapboxsdk.testapp.activity.feature.QueryRenderedFeaturesBoxHighlightActivity;
-
import com.mapbox.mapboxsdk.testapp.utils.TestConstants;
import org.junit.Test;
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LatLngBoundsForCameraActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LatLngBoundsForCameraActivity.java
index 5e6e828856..1a9d3d300b 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LatLngBoundsForCameraActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LatLngBoundsForCameraActivity.java
@@ -5,9 +5,10 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
-
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
@@ -18,7 +19,7 @@ import com.mapbox.mapboxsdk.maps.Style;
import com.mapbox.mapboxsdk.testapp.R;
/**
- * Test activity showcasing restricting user gestures to a bounds around Iceland.
+ * Test activity showcasing restricting user gestures to a bounds around Iceland, almost worldview and IDL.
*/
public class LatLngBoundsForCameraActivity extends AppCompatActivity implements OnMapReadyCallback {
@@ -27,6 +28,16 @@ public class LatLngBoundsForCameraActivity extends AppCompatActivity implements
.include(new LatLng(62.985661, -12.626277))
.build();
+ private static final LatLngBounds ALMOST_WORLD_BOUNDS = new LatLngBounds.Builder()
+ .include(new LatLng(20.0, 170.0))
+ .include(new LatLng(-20, -170.0))
+ .build();
+
+ private static final LatLngBounds CROSS_IDL_BOUNDS = new LatLngBounds.Builder()
+ .include(new LatLng(20.0, 170.0))
+ .include(new LatLng(-20, 190.0))
+ .build();
+
private MapView mapView;
private MapboxMap mapboxMap;
@@ -35,7 +46,7 @@ public class LatLngBoundsForCameraActivity extends AppCompatActivity implements
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_restricted_bounds);
- mapView = (MapView) findViewById(R.id.mapView);
+ mapView = findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(this);
}
@@ -44,18 +55,43 @@ public class LatLngBoundsForCameraActivity extends AppCompatActivity implements
public void onMapReady(@NonNull MapboxMap mapboxMap) {
this.mapboxMap = mapboxMap;
mapboxMap.setStyle(Style.SATELLITE_STREETS);
- mapboxMap.setLatLngBoundsForCameraTarget(ICELAND_BOUNDS);
mapboxMap.setMinZoomPreference(2);
- showBoundsArea();
+ mapboxMap.getUiSettings().setFlingVelocityAnimationEnabled(false);
showCrosshair();
+ setupBounds(ICELAND_BOUNDS);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.menu_bounds, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_action_allmost_world_bounds:
+ setupBounds(ALMOST_WORLD_BOUNDS);
+ return true;
+ case R.id.menu_action_cross_idl:
+ setupBounds(CROSS_IDL_BOUNDS);
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void setupBounds(LatLngBounds bounds) {
+ mapboxMap.setLatLngBoundsForCameraTarget(bounds);
+ showBoundsArea(bounds);
}
- private void showBoundsArea() {
+ private void showBoundsArea(LatLngBounds bounds) {
+ mapboxMap.clear();
PolygonOptions boundsArea = new PolygonOptions()
- .add(ICELAND_BOUNDS.getNorthWest())
- .add(ICELAND_BOUNDS.getNorthEast())
- .add(ICELAND_BOUNDS.getSouthEast())
- .add(ICELAND_BOUNDS.getSouthWest());
+ .add(bounds.getNorthWest())
+ .add(bounds.getNorthEast())
+ .add(bounds.getSouthEast())
+ .add(bounds.getSouthWest());
boundsArea.alpha(0.25f);
boundsArea.fillColor(Color.RED);
mapboxMap.addPolygon(boundsArea);
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_bounds.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_bounds.xml
new file mode 100644
index 0000000000..db7aad6d1f
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_bounds.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+ <item
+ android:id="@+id/menu_action_allmost_world_bounds"
+ android:title="@string/restrict_almost_worldview"
+ app:showAsAction="never"/>
+ <item
+ android:id="@+id/menu_action_cross_idl"
+ android:title="@string/restrict_across_idl"
+ app:showAsAction="never"/>
+</menu>
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml
index e3cdc06dc1..7513baaa36 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/actions.xml
@@ -88,4 +88,6 @@
<string name="zoom_by_2">Zoom by 2</string>
<string name="zoom_to_point">Zoom to point</string>
<string name="zoom_to_4">Zoom to 4</string>
+ <string name="restrict_almost_worldview">Restrict almost worldview</string>
+ <string name="restrict_across_idl">Restrict across IDL</string>
</resources> \ No newline at end of file