summaryrefslogtreecommitdiff
path: root/platform/android/src/geojson/point.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/geojson/point.cpp')
-rw-r--r--platform/android/src/geojson/point.cpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/platform/android/src/geojson/point.cpp b/platform/android/src/geojson/point.cpp
index 5feb1b8521..d064547145 100644
--- a/platform/android/src/geojson/point.cpp
+++ b/platform/android/src/geojson/point.cpp
@@ -1,6 +1,8 @@
+#include <android/log.h>
#include "point.hpp"
#include "../java/util.hpp"
#include "../java_types.hpp"
+#include "../style/value.hpp"
namespace mbgl {
namespace android {
@@ -19,17 +21,23 @@ mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<Point> jPoin
}
mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<Double>*/> jDoubleList) {
- auto jDoubleArray = java::util::List::toArray<double>(env, jDoubleList);
+ mapbox::geojson::point point;
+
+ if (jDoubleList) {
+ auto jDoubleArray = java::util::List::toArray<jobject>(env, jDoubleList);
- jni::jdouble lon = jni::CallMethod<jni::jdouble>(env,
- jDoubleArray.Get(env, 0),
- *java::Number::doubleValueMethodId);
- jni::jdouble lat = jni::CallMethod<jni::jdouble>(env,
- jDoubleArray.Get(env, 1),
- *java::Number::doubleValueMethodId);
- mapbox::geojson::point point(lon, lat);
- jni::DeleteLocalRef(env, jDoubleArray);
+ auto lonObject = jDoubleArray.Get(env, 0);
+ auto latObject = jDoubleArray.Get(env, 1);
+ point.x = jni::CallMethod<jni::jdouble>(env, lonObject,
+ *java::Number::doubleValueMethodId);
+ point.y = jni::CallMethod<jni::jdouble>(env, latObject,
+ *java::Number::doubleValueMethodId);
+
+ jni::DeleteLocalRef(env, lonObject);
+ jni::DeleteLocalRef(env, latObject);
+ jni::DeleteLocalRef(env, jDoubleArray);
+ }
return point;
}