[android] - add bearing and pitch to get camera for geometry

This commit is contained in:
tobrun
2018-07-03 18:37:13 +02:00
committed by Tobrun
parent add9eecd99
commit ec78936e18
6 changed files with 344 additions and 112 deletions

View File

@@ -11,7 +11,6 @@ import com.mapbox.mapboxsdk.annotations.Polygon;
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
import com.mapbox.mapboxsdk.annotations.Polyline;
import com.mapbox.mapboxsdk.annotations.PolylineOptions;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.camera.CameraUpdateFactory;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.exceptions.InvalidMarkerPositionException;
@@ -124,107 +123,6 @@ public class MapboxMapTest extends BaseActivityTest {
}));
}
@Test
public void testGetCameraForLatLngBounds() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10));
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.66).tilt(0).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Bearing should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match", expectedPosition.tilt, actualPosition.tilt, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsPadding() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10), new int[] {5, 5, 5, 5});
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.64).tilt(0).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsBearing() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10),45, 0);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.15).tilt(0).bearing(45).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsTilt() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10), 0, 45);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng(-0.2423318,0)).zoom(3.62).tilt(45).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsAll() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10), new int[]{5,5,5,5}, 45, 45);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng(-0.3418347,-0.3400988)).zoom(3.13).tilt(45).bearing(45).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
//
// MinZoomLevel

View File

@@ -0,0 +1,268 @@
package com.mapbox.mapboxsdk.testapp.camera;
import android.support.annotation.NonNull;
import com.mapbox.geojson.Point;
import com.mapbox.geojson.Polygon;
import com.mapbox.mapboxsdk.camera.CameraPosition;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
import com.mapbox.mapboxsdk.testapp.activity.BaseActivityTest;
import com.mapbox.mapboxsdk.testapp.activity.espresso.EspressoTestActivity;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class CameraForTest extends BaseActivityTest {
@Test
public void testGetCameraForLatLngBounds() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10));
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.66).tilt(0).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Bearing should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match", expectedPosition.tilt, actualPosition.tilt, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsPadding() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10), new int[] {5, 5, 5, 5});
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.64).tilt(0).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsBearing() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10), 45, 0);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.15).tilt(0).bearing(45).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsTilt() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10), 0, 45);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng(-0.2423318, 0)).zoom(3.62).tilt(45).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForLatLngBoundsAll() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
CameraPosition actualPosition = mapboxMap.getCameraForLatLngBounds(
LatLngBounds.from(10, 10, -10, -10), new int[] {5, 5, 5, 5}, 45, 45);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng(-0.3418347, -0.3400988)).zoom(3.13).tilt(45).bearing(45).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForGeometry() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
List<List<Point>> polygonDefinition = getPolygonDefinition();
CameraPosition actualPosition = mapboxMap.getCameraForGeometry(Polygon.fromLngLats(polygonDefinition));
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.66).tilt(0).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Bearing should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match", expectedPosition.tilt, actualPosition.tilt, 0.01f);
}));
}
@NonNull
private List<List<Point>> getPolygonDefinition() {
return new ArrayList<List<Point>>() {
{
add(new ArrayList<Point>() {
{
add(Point.fromLngLat(10, 10));
add(Point.fromLngLat(-10, 10));
add(Point.fromLngLat(-10, -10));
add(Point.fromLngLat(10, -10));
}
});
}
};
}
@Test
public void testGetCameraForGeometryPadding() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
List<List<Point>> polygonDefinition = getPolygonDefinition();
CameraPosition actualPosition = mapboxMap.getCameraForGeometry(Polygon.fromLngLats(polygonDefinition),
new int[] {5, 5, 5, 5});
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.64).tilt(0).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForGeometryBearing() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
List<List<Point>> polygonDefinition = getPolygonDefinition();
CameraPosition actualPosition = mapboxMap.getCameraForGeometry(Polygon.fromLngLats(polygonDefinition), 45, 0);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.15).tilt(0).bearing(45).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForGeometryTilt() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
List<List<Point>> polygonDefinition = getPolygonDefinition();
CameraPosition actualPosition = mapboxMap.getCameraForGeometry(Polygon.fromLngLats(polygonDefinition), 0, 45);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng(-0.2423318, 0)).zoom(3.62).tilt(45).bearing(0).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForGeometryAll() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
List<List<Point>> polygonDefinition = getPolygonDefinition();
CameraPosition actualPosition = mapboxMap.getCameraForGeometry(Polygon.fromLngLats(polygonDefinition),
new int[] {5, 5, 5, 5}, 45, 45);
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng(-0.3418347, -0.3400988)).zoom(3.13).tilt(45).bearing(45).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Test
public void testGetCameraForGeometryDeprecatedApi() {
validateTestSetup();
onMapView().perform(getMapboxMapAction((uiController, mapboxMap) -> {
List<List<Point>> polygonDefinition = getPolygonDefinition();
CameraPosition actualPosition = mapboxMap.getCameraForGeometry(Polygon.fromLngLats(polygonDefinition), 45,
new int[] {5, 5, 5, 5});
CameraPosition expectedPosition = new CameraPosition.Builder()
.target(new LatLng()).zoom(3.13).tilt(0).bearing(45).build();
assertEquals("Latitude should match",
expectedPosition.target.getLatitude(), actualPosition.target.getLatitude(), 0.00001f);
assertEquals("Longitude should match",
expectedPosition.target.getLongitude(), actualPosition.target.getLongitude(), 0.00001f);
assertEquals("Zoom should match",
expectedPosition.zoom, actualPosition.zoom, 0.01f);
assertEquals("Tilt should match",
expectedPosition.tilt, actualPosition.tilt, 0.01f);
assertEquals("Bearing should match",
expectedPosition.bearing, actualPosition.bearing, 0.01f);
}));
}
@Override
protected Class getActivityClass() {
return EspressoTestActivity.class;
}
}