diff options
author | Nicholas Hallahan <nick@theoutpost.io> | 2015-07-15 17:31:37 -0700 |
---|---|---|
committer | Nicholas Hallahan <nick@theoutpost.io> | 2015-07-15 17:31:37 -0700 |
commit | 8107501edb90ee3a971744ea2c3e568787b1a3b6 (patch) | |
tree | 2d9a1ac32b28e35f1a05814d9939bfd7907a007f | |
parent | 441c84c213384e531915c95ea8825127f2e0c28d (diff) | |
download | qtlocation-mapboxgl-8107501edb90ee3a971744ea2c3e568787b1a3b6.tar.gz |
able to get a field from Polyline in JNI #1716
-rw-r--r-- | android/cpp/jni.cpp | 48 | ||||
-rw-r--r-- | android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java | 1 |
2 files changed, 48 insertions, 1 deletions
diff --git a/android/cpp/jni.cpp b/android/cpp/jni.cpp index d517bfa622..ab83b2f43d 100644 --- a/android/cpp/jni.cpp +++ b/android/cpp/jni.cpp @@ -40,6 +40,10 @@ jmethodID latLngConstructorId = nullptr; jfieldID latLngLatitudeId = nullptr; jfieldID latLngLongitudeId = nullptr; +jclass polylineClass = nullptr; +jmethodID polylineConstructorId = nullptr; +jfieldID polylineAlphaId = nullptr; + jclass latLngZoomClass = nullptr; jmethodID latLngZoomConstructorId = nullptr; jfieldID latLngZoomLatitudeId = nullptr; @@ -460,8 +464,21 @@ jlong JNICALL nativeAddPolyline(JNIEnv *env, jobject obj, jlong nativeMapViewPtr assert(nativeMapViewPtr != 0); // NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr); + // ***** Java fields ***** // + + // float alpha; + // boolean visible; + // List<LatLng> points + // int color + // float width + + jfloat alpha = env->GetFloatField(polyline, polylineAlphaId); + if (env->ExceptionCheck()) { + env->ExceptionDescribe(); + return -1; + } - return -1; + return (jlong)alpha; } void JNICALL nativeRemoveAnnotation(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jlong annotationId) { @@ -821,6 +838,24 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { return JNI_ERR; } + polylineClass = env->FindClass("com/mapbox/mapboxgl/annotations/Polyline"); + if (polylineClass == nullptr) { + env->ExceptionDescribe(); + return JNI_ERR; + } + + polylineConstructorId = env->GetMethodID(polylineClass, "<init>", "()V"); + if (polylineConstructorId == nullptr) { + env->ExceptionDescribe(); + return JNI_ERR; + } + + polylineAlphaId = env->GetFieldID(polylineClass, "alpha", "F"); + if (polylineAlphaId == nullptr) { + env->ExceptionDescribe(); + return JNI_ERR; + } + latLngZoomClass = env->FindClass("com/mapbox/mapboxgl/geometry/LatLngZoom"); if (latLngZoomClass == nullptr) { env->ExceptionDescribe(); @@ -1069,6 +1104,12 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { return JNI_ERR; } + polylineClass = reinterpret_cast<jclass>(env->NewGlobalRef(polylineClass)); + if (polylineClass == nullptr) { + env->ExceptionDescribe(); + return JNI_ERR; + } + latLngZoomClass = reinterpret_cast<jclass>(env->NewGlobalRef(latLngZoomClass)); if (latLngZoomClass == nullptr) { env->ExceptionDescribe(); @@ -1152,6 +1193,11 @@ extern "C" JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *reserved) { latLngLongitudeId = nullptr; latLngLatitudeId = nullptr; + env->DeleteGlobalRef(polylineClass); + polylineClass = nullptr; + polylineConstructorId = nullptr; + polylineAlphaId = nullptr; + env->DeleteGlobalRef(latLngZoomClass); latLngZoomClass = nullptr; latLngZoomConstructorId = nullptr; diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java index f28cf88ebe..be1680abaf 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java @@ -221,6 +221,7 @@ class NativeMapView { } public long addPolyline(Polyline polyline) { + // NH TODO Throw exception if returns -1 return nativeAddPolyline(mNativeMapViewPtr, polyline); } |