From 511801c17ab2dd47b11a84c6c23ed564dad04c29 Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Thu, 9 Jun 2016 16:49:51 -0500 Subject: [android] #5303 - Updating code to take properly merge what each branch intended for nativeUpdateMarker --- .../com/mapbox/mapboxsdk/maps/NativeMapView.java | 6 ++++-- platform/android/src/jni.cpp | 22 ++++------------------ 2 files changed, 8 insertions(+), 20 deletions(-) (limited to 'platform') 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 a93263a917..9cf464b926 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 @@ -371,7 +371,9 @@ final class NativeMapView { } public void updateMarker(Marker marker) { - nativeUpdateMarker(mNativeMapViewPtr, marker); + LatLng position = marker.getPosition(); + Icon icon = marker.getIcon(); + nativeUpdateMarker(mNativeMapViewPtr, marker.getId(), position.getLatitude(), position.getLongitude(), icon.getId()); } public void removeAnnotation(long id) { @@ -589,7 +591,7 @@ final class NativeMapView { private native void nativeResetNorth(long nativeMapViewPtr); - private native void nativeUpdateMarker(long nativeMapViewPtr, Marker marker); + private native void nativeUpdateMarker(long nativeMapViewPtr, long markerId, double lat, double lon, String iconId); private native long[] nativeAddMarkers(long nativeMapViewPtr, Marker[] markers); diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index ce6cd62179..077f574469 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -660,30 +660,16 @@ void nativeResetNorth(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr) { nativeMapView->getMap().resetNorth(); } -void nativeUpdateMarker(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jni::jobject* marker) { - +void nativeUpdateMarker(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong markerId, jdouble lat, jdouble lon, jni::jstring* jid) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeUpdateMarker"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - - jlong markerId = jni::GetField(*env, marker, *markerIdId); if (markerId == -1) { return; } - - jni::jobject* position = jni::GetField(*env, marker, *markerPositionId); - jni::jobject* icon = jni::GetField(*env, marker, *markerIconId); - - jni::jstring* jid = reinterpret_cast(jni::GetField(*env, icon, *iconIdId)); std::string iconId = std_string_from_jstring(env, jid); - - jdouble latitude = jni::GetField(*env, position, *latLngLatitudeId); - jdouble longitude = jni::GetField(*env, position, *latLngLongitudeId); - - nativeMapView->getMap().updateAnnotation(markerId, mbgl::SymbolAnnotation { - mbgl::Point(longitude, latitude), - iconId - }); + // Because Java only has int, not unsigned int, we need to bump the annotation id up to a long. + nativeMapView->getMap().updateAnnotation(markerId, mbgl::SymbolAnnotation { mbgl::Point(lon, lat), iconId }); } jni::jarray* nativeAddMarkers(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jni::jarray* jarray) { @@ -1716,7 +1702,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { MAKE_NATIVE_METHOD(nativeAddMarkers, "(J[Lcom/mapbox/mapboxsdk/annotations/Marker;)[J"), 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, "(JLcom/mapbox/mapboxsdk/annotations/Marker;)V"), + MAKE_NATIVE_METHOD(nativeUpdateMarker, "(JJDDLjava/lang/String;)V"), MAKE_NATIVE_METHOD(nativeRemoveAnnotations, "(J[J)V"), MAKE_NATIVE_METHOD(nativeGetAnnotationsInBounds, "(JLcom/mapbox/mapboxsdk/geometry/LatLngBounds;)[J"), MAKE_NATIVE_METHOD(nativeAddAnnotationIcon, "(JLjava/lang/String;IIF[B)V"), -- cgit v1.2.1