summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun@mapbox.com>2016-02-22 09:40:51 +0100
committerTobrun <tobrun@mapbox.com>2016-02-23 13:17:27 +0100
commit7b40cbcfd949371e04944a23ffe08b69862f6a1a (patch)
treeeadfece169f119182cfad98e21c6c616f8fe38f3
parent18380708cd123fc6e9bc191d843791d60c14c02c (diff)
downloadqtlocation-mapboxgl-7b40cbcfd949371e04944a23ffe08b69862f6a1a.tar.gz
[android] #4038 - fix crash on polygons and polylines with empty points + formatting commit
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java45
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java32
2 files changed, 54 insertions, 23 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
index 7127a7e671..3794e7ab3d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java
@@ -485,7 +485,7 @@ public class MapboxMap {
@UiThread
@NonNull
public Marker addMarker(@NonNull MarkerOptions markerOptions) {
- return addMarker((BaseMarkerOptions)markerOptions);
+ return addMarker((BaseMarkerOptions) markerOptions);
}
@UiThread
@@ -567,10 +567,12 @@ public class MapboxMap {
@NonNull
public Polyline addPolyline(@NonNull PolylineOptions polylineOptions) {
Polyline polyline = polylineOptions.getPolyline();
- long id = mMapView.addPolyline(polyline);
- polyline.setMapboxMap(this);
- polyline.setId(id);
- mAnnotations.put(id, polyline);
+ if (!polyline.getPoints().isEmpty()) {
+ long id = mMapView.addPolyline(polyline);
+ polyline.setMapboxMap(this);
+ polyline.setId(id);
+ mAnnotations.put(id, polyline);
+ }
return polyline;
}
@@ -584,9 +586,13 @@ public class MapboxMap {
@NonNull
public List<Polyline> addPolylines(@NonNull List<PolylineOptions> polylineOptionsList) {
int count = polylineOptionsList.size();
+ Polyline polyline;
List<Polyline> polylines = new ArrayList<>(count);
for (PolylineOptions options : polylineOptionsList) {
- polylines.add(options.getPolyline());
+ polyline = options.getPolyline();
+ if (!polyline.getPoints().isEmpty()) {
+ polylines.add(polyline);
+ }
}
long[] ids = mMapView.addPolylines(polylines);
@@ -618,10 +624,12 @@ public class MapboxMap {
@NonNull
public Polygon addPolygon(@NonNull PolygonOptions polygonOptions) {
Polygon polygon = polygonOptions.getPolygon();
- long id = mMapView.addPolygon(polygon);
- polygon.setId(id);
- polygon.setMapboxMap(this);
- mAnnotations.put(id, polygon);
+ if (!polygon.getPoints().isEmpty()) {
+ long id = mMapView.addPolygon(polygon);
+ polygon.setId(id);
+ polygon.setMapboxMap(this);
+ mAnnotations.put(id, polygon);
+ }
return polygon;
}
@@ -635,21 +643,24 @@ public class MapboxMap {
@NonNull
public List<Polygon> addPolygons(@NonNull List<PolygonOptions> polygonOptionsList) {
int count = polygonOptionsList.size();
+
+ Polygon polygon;
List<Polygon> polygons = new ArrayList<>(count);
for (PolygonOptions polygonOptions : polygonOptionsList) {
- polygons.add(polygonOptions.getPolygon());
+ polygon = polygonOptions.getPolygon();
+ if (!polygon.getPoints().isEmpty()) {
+ polygons.add(polygon);
+ }
}
long[] ids = mMapView.addPolygons(polygons);
long id = 0;
- Polygon polygon;
-
for (int i = 0; i < polygons.size(); i++) {
polygon = polygons.get(i);
polygon.setMapboxMap(this);
- if(ids!=null){
+ if (ids != null) {
id = ids[i];
- }else{
+ } else {
// unit test
id++;
}
@@ -757,8 +768,8 @@ public class MapboxMap {
for (int i = 0; i < count; i++) {
ids[i] = mAnnotations.keyAt(i);
annotation = mAnnotations.get(ids[i]);
- if(annotation instanceof Marker){
- ((Marker)annotation).hideInfoWindow();
+ if (annotation instanceof Marker) {
+ ((Marker) annotation).hideInfoWindow();
}
}
mMapView.removeAnnotations(ids);
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java
index de3ecd36b6..e453bd20bb 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/MapboxMapTest.java
@@ -537,42 +537,62 @@ public class MapboxMapTest {
@Test
public void testAddPolygon() {
- PolygonOptions polygonOptions = new PolygonOptions();
+ PolygonOptions polygonOptions = new PolygonOptions().add(new LatLng());
Polygon polygon = mMapboxMap.addPolygon(polygonOptions);
assertTrue("Polygon should be contained", mMapboxMap.getPolygons().contains(polygon));
}
@Test
+ public void testAddEmptyPolygon() {
+ PolygonOptions polygonOptions = new PolygonOptions();
+ Polygon polygon = mMapboxMap.addPolygon(polygonOptions);
+ assertTrue("Polygon should be ignored", !mMapboxMap.getPolygons().contains(polygon));
+ }
+
+ @Test
public void testAddPolygons() {
List<PolygonOptions> polygonList = new ArrayList<>();
- PolygonOptions polygonOptions1 = new PolygonOptions().fillColor(Color.BLACK);
- PolygonOptions polygonOptions2 = new PolygonOptions().fillColor(Color.WHITE);
+ PolygonOptions polygonOptions1 = new PolygonOptions().fillColor(Color.BLACK).add(new LatLng());
+ PolygonOptions polygonOptions2 = new PolygonOptions().fillColor(Color.WHITE).add(new LatLng());
+ PolygonOptions polygonOptions3 = new PolygonOptions();
polygonList.add(polygonOptions1);
polygonList.add(polygonOptions2);
+ polygonList.add(polygonOptions3);
mMapboxMap.addPolygons(polygonList);
assertEquals("Polygons size should be 2", 2, mMapboxMap.getPolygons().size());
assertTrue(mMapboxMap.getPolygons().contains(polygonOptions1.getPolygon()));
assertTrue(mMapboxMap.getPolygons().contains(polygonOptions2.getPolygon()));
+ assertTrue("Polygon should be ignored", !mMapboxMap.getPolygons().contains(polygonOptions3.getPolygon()));
}
@Test
public void testAddPolyline() {
- PolylineOptions polylineOptions = new PolylineOptions();
+ PolylineOptions polylineOptions = new PolylineOptions().add(new LatLng());
Polyline polyline = mMapboxMap.addPolyline(polylineOptions);
assertTrue("Polyline should be contained", mMapboxMap.getPolylines().contains(polyline));
}
@Test
+ public void testAddEmptyPolyline() {
+ PolylineOptions polylineOptions = new PolylineOptions();
+ Polyline polyline = mMapboxMap.addPolyline(polylineOptions);
+ assertTrue("Polyline should be ignored", !mMapboxMap.getPolylines().contains(polyline));
+ }
+
+ @Test
public void testAddPolylines() {
List<PolylineOptions> polylineList = new ArrayList<>();
- PolylineOptions polygonOptions1 = new PolylineOptions().color(Color.BLACK);
- PolylineOptions polygonOptions2 = new PolylineOptions().color(Color.WHITE);
+ PolylineOptions polygonOptions1 = new PolylineOptions().color(Color.BLACK).add(new LatLng());
+ PolylineOptions polygonOptions2 = new PolylineOptions().color(Color.WHITE).add(new LatLng());
+ PolylineOptions polygonOptions3 = new PolylineOptions();
polylineList.add(polygonOptions1);
polylineList.add(polygonOptions2);
+ polylineList.add(polygonOptions3);
mMapboxMap.addPolylines(polylineList);
assertEquals("Polygons size should be 2", 2, mMapboxMap.getPolylines().size());
assertTrue(mMapboxMap.getPolylines().contains(polygonOptions1.getPolyline()));
assertTrue(mMapboxMap.getPolylines().contains(polygonOptions2.getPolyline()));
+ assertTrue("Polyline should be ignored", !mMapboxMap.getPolylines().contains(polygonOptions3.getPolyline()));
}
@Test