summaryrefslogtreecommitdiff
path: root/android/MapboxGLAndroidSDK
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2015-10-27 11:16:55 +0100
committerTobrun <tobrun.van.nuland@gmail.com>2015-10-27 11:16:55 +0100
commitf3ffb45cf6adbdca375217c645eb455ff47991ec (patch)
treeea4660dc6cd03ad4e8792d5d02bf8895f37438ee /android/MapboxGLAndroidSDK
parentfd33dfcd7321346631cd9237b5ae2993c29f9ca5 (diff)
downloadqtlocation-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.java22
-rw-r--r--android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java6
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);