diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2015-10-27 11:16:55 +0100 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2015-10-27 11:16:55 +0100 |
commit | f3ffb45cf6adbdca375217c645eb455ff47991ec (patch) | |
tree | ea4660dc6cd03ad4e8792d5d02bf8895f37438ee /android/MapboxGLAndroidSDK | |
parent | fd33dfcd7321346631cd9237b5ae2993c29f9ca5 (diff) | |
download | qtlocation-mapboxgl-f3ffb45cf6adbdca375217c645eb455ff47991ec.tar.gz |
[android] #2809 - addPolylines and removeAnnotations in JNI, added feature activity + sanity test case
Diffstat (limited to 'android/MapboxGLAndroidSDK')
-rw-r--r-- | android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java | 22 | ||||
-rw-r--r-- | android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java | 6 |
2 files changed, 21 insertions, 7 deletions
diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index 6f59ea211f..f1c021c0c7 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -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); } /** diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java index da13efcf87..dce90b64d6 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java @@ -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); |