diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 1693b5b34..28e82770e 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -14,7 +14,6 @@ import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.Polygon; import com.mapbox.mapboxsdk.annotations.Polyline; import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.geometry.ProjectedMeters; import com.mapbox.mapboxsdk.offline.OfflineManager; import com.mapbox.mapboxsdk.style.layers.Layer; @@ -388,15 +387,11 @@ final class NativeMapView { } public void updatePolygon(Polygon polygon) { - //TODO remove new id assignment, https://github.com/mapbox/mapbox-gl-native/issues/5844 - long newId = nativeUpdatePolygon(mNativeMapViewPtr, polygon.getId(), polygon); - polygon.setId(newId); + nativeUpdatePolygon(mNativeMapViewPtr, polygon.getId(), polygon); } public void updatePolyline(Polyline polyline) { - //TODO remove new id assignment, https://github.com/mapbox/mapbox-gl-native/issues/5844 - long newId = nativeUpdatePolyline(mNativeMapViewPtr, polyline.getId(), polyline); - polyline.setId(newId); + nativeUpdatePolyline(mNativeMapViewPtr, polyline.getId(), polyline); } public void removeAnnotation(long id) { @@ -717,9 +712,9 @@ final class NativeMapView { private native void nativeRemoveSource(long mNativeMapViewPtr, String sourceId) throws NoSuchSourceException; - private native long nativeUpdatePolygon(long nativeMapViewPtr, long polygonId, Polygon polygon); + private native void nativeUpdatePolygon(long nativeMapViewPtr, long polygonId, Polygon polygon); - private native long nativeUpdatePolyline(long nativeMapviewPtr, long polylineId, Polyline polyline); + private native void nativeUpdatePolyline(long nativeMapviewPtr, long polylineId, Polyline polyline); private native void nativeScheduleTakeSnapshot(long nativeMapViewPtr); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java index e4dbaf54d..d2b00e333 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java @@ -163,7 +163,7 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall case R.id.action_id_color: color = !color; polygon.setFillColor(color ? BLUE_COLOR : RED_COLOR); - + return true; default: return super.onOptionsItemSelected(item); } diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index acaa5e8b4..c0e4665de 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -796,40 +796,30 @@ jni::jarray* nativeAddPolygons(JNIEnv *env, jni::jobject* obj, jlong nati return std_vector_uint_to_jobject(env, ids); } -jlong nativeUpdatePolygon(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong polygonId, jni::jobject* polygon) { +void nativeUpdatePolygon(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong polygonId, jni::jobject* polygon) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeUpdatePolygon"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - if (polygonId == -1) { - return polygonId; - } jni::jobject* points = jni::GetField(*env, polygon, *polygonPointsId); mbgl::FillAnnotation annotation { mbgl::Polygon { toGeometry>(env, points) } }; annotation.opacity = { jni::GetField(*env, polygon, *polygonAlphaId) }; annotation.outlineColor = { toColor(jni::GetField(*env, polygon, *polygonStrokeColorId)) }; annotation.color = { toColor(jni::GetField(*env, polygon, *polygonFillColorId)) }; - //TODO replace remove add with updateAnnotation, https://github.com/mapbox/mapbox-gl-native/issues/5844 - nativeMapView->getMap().removeAnnotation(polygonId); - return nativeMapView->getMap().addAnnotation(annotation); + nativeMapView->getMap().updateAnnotation(polygonId, annotation); } -jlong nativeUpdatePolyline(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong polylineId, jni::jobject* polyline) { +void nativeUpdatePolyline(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong polylineId, jni::jobject* polyline) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeUpdatePolyline"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - if (polylineId == -1) { - return polylineId; - } jni::jobject* points = jni::GetField(*env, polyline, *polylinePointsId); mbgl::LineAnnotation annotation { toGeometry>(env, points) }; annotation.opacity = { jni::GetField(*env, polyline, *polylineAlphaId) }; annotation.color = { toColor(jni::GetField(*env, polyline, *polylineColorId)) }; annotation.width = { jni::GetField(*env, polyline, *polylineWidthId) }; - //TODO replace remove add with updateAnnotation, https://github.com/mapbox/mapbox-gl-native/issues/5844 - nativeMapView->getMap().removeAnnotation(polylineId); - return nativeMapView->getMap().addAnnotation(annotation); + nativeMapView->getMap().updateAnnotation(polylineId, annotation); } void nativeRemoveAnnotations(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jni::jarray* jarray) { @@ -1814,8 +1804,8 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { MAKE_NATIVE_METHOD(nativeAddPolylines, "(J[Lcom/mapbox/mapboxsdk/annotations/Polyline;)[J"), MAKE_NATIVE_METHOD(nativeAddPolygons, "(J[Lcom/mapbox/mapboxsdk/annotations/Polygon;)[J"), MAKE_NATIVE_METHOD(nativeUpdateMarker, "(JJDDLjava/lang/String;)V"), - MAKE_NATIVE_METHOD(nativeUpdatePolygon, "(JJLcom/mapbox/mapboxsdk/annotations/Polygon;)J"), - MAKE_NATIVE_METHOD(nativeUpdatePolyline, "(JJLcom/mapbox/mapboxsdk/annotations/Polyline;)J"), + MAKE_NATIVE_METHOD(nativeUpdatePolygon, "(JJLcom/mapbox/mapboxsdk/annotations/Polygon;)V"), + MAKE_NATIVE_METHOD(nativeUpdatePolyline, "(JJLcom/mapbox/mapboxsdk/annotations/Polyline;)V"), MAKE_NATIVE_METHOD(nativeRemoveAnnotations, "(J[J)V"), MAKE_NATIVE_METHOD(nativeQueryPointAnnotations, "(JLandroid/graphics/RectF;)[J"), MAKE_NATIVE_METHOD(nativeAddAnnotationIcon, "(JLjava/lang/String;IIF[B)V"),