[android] #2809 - addPolylines and removeAnnotations in JNI, added feature activity + sanity test case

This commit is contained in:
Tobrun
2015-10-27 11:16:55 +01:00
parent fd33dfcd73
commit f3ffb45cf6
26 changed files with 364 additions and 7 deletions

View File

@@ -1757,12 +1757,20 @@ public final class MapView extends FrameLayout {
throw new NullPointerException("polylineOptionsList is null");
}
// TODO make faster in JNI
int count = polylineOptionsList.size();
List<Polyline> polylines = new ArrayList<>(count);
for (PolylineOptions options : polylineOptionsList) {
polylines.add(options.getPolyline());
}
long[] ids = mNativeMapView.addPolylines(polylines);
Polyline p;
for (int i = 0; i < count; i++) {
PolylineOptions polylineOptions = polylineOptionsList.get(i);
polylines.add(addPolyline(polylineOptions));
p = polylines.get(i);
p.setId(ids[i]);
p.setMapView(this);
mAnnotations.add(p);
}
return new ArrayList<>(polylines);
@@ -1847,17 +1855,17 @@ public final class MapView extends FrameLayout {
* @param annotationList A list of annotation objects to remove.
*/
@UiThread
public void removeAnnotations(@NonNull List<Annotation> annotationList) {
public void removeAnnotations(@NonNull List<? extends Annotation> annotationList) {
if (annotationList == null) {
throw new NullPointerException("annotationList is null");
}
// TODO make faster in JNI
int count = annotationList.size();
long[] ids = new long[count];
for (int i = 0; i < count; i++) {
Annotation annotation = annotationList.get(i);
removeAnnotation(annotation);
ids[i] = annotationList.get(i).getId();
}
mNativeMapView.removeAnnotations(ids);
}
/**

View File

@@ -361,6 +361,10 @@ final class NativeMapView {
return nativeAddPolyline(mNativeMapViewPtr, polyline);
}
public long[] addPolylines(List<Polyline> polylines) {
return nativeAddPolylines(mNativeMapViewPtr, polylines);
}
public long addPolygon(Polygon polygon) {
return nativeAddPolygon(mNativeMapViewPtr, polygon);
}
@@ -584,6 +588,8 @@ final class NativeMapView {
private native long nativeAddPolyline(long nativeMapViewPtr, Polyline polyline);
private native long[] nativeAddPolylines(long mNativeMapViewPtr, List<Polyline> polygon);
private native long nativeAddPolygon(long mNativeMapViewPtr, Polygon polygon);
private native long[] nativeAddPolygons(long mNativeMapViewPtr, List<Polygon> polygon);