[android] #4038 - fix crash on polygons and polylines with empty points + formatting commit
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user