summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Hallahan <nick@theoutpost.io>2015-07-15 17:31:37 -0700
committerNicholas Hallahan <nick@theoutpost.io>2015-07-15 17:31:37 -0700
commit8107501edb90ee3a971744ea2c3e568787b1a3b6 (patch)
tree2d9a1ac32b28e35f1a05814d9939bfd7907a007f
parent441c84c213384e531915c95ea8825127f2e0c28d (diff)
downloadqtlocation-mapboxgl-8107501edb90ee3a971744ea2c3e568787b1a3b6.tar.gz
able to get a field from Polyline in JNI #1716
-rw-r--r--android/cpp/jni.cpp48
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/NativeMapView.java1
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);
}