summaryrefslogtreecommitdiff
path: root/platform/android/src/geojson/point.cpp
diff options
context:
space:
mode:
authorOsana Babayan <32496536+osana@users.noreply.github.com>2018-02-08 10:33:12 -0500
committerGitHub <noreply@github.com>2018-02-08 10:33:12 -0500
commit7a0a4c44f469e180606afa250a47414441e8e675 (patch)
tree97f69e610913a055dfc9bc712555a4687d328b54 /platform/android/src/geojson/point.cpp
parent62ae0738e8a3d1b3e4b661fa7e8d8bb1d6339c51 (diff)
downloadqtlocation-mapboxgl-7a0a4c44f469e180606afa250a47414441e8e675.tar.gz
migrated to use mapbox-java3.0
migrated to use mapbox-java3.0 old 2.2.9 telementry is still used though
Diffstat (limited to 'platform/android/src/geojson/point.cpp')
-rw-r--r--platform/android/src/geojson/point.cpp34
1 files changed, 28 insertions, 6 deletions
diff --git a/platform/android/src/geojson/point.cpp b/platform/android/src/geojson/point.cpp
index 3d19a119d7..5feb1b8521 100644
--- a/platform/android/src/geojson/point.cpp
+++ b/platform/android/src/geojson/point.cpp
@@ -1,19 +1,41 @@
#include "point.hpp"
+#include "../java/util.hpp"
+#include "../java_types.hpp"
namespace mbgl {
namespace android {
namespace geojson {
mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<Point> jPoint) {
- auto jPosition = Point::getPosition(env, jPoint);
- auto point = Position::convert(env, jPosition);
- jni::DeleteLocalRef(env, jPosition);
+ mapbox::geojson::point point;
+
+ if (jPoint) {
+ auto jDoubleList = Point::coordinates(env, jPoint);
+ point = Point::convert(env, jDoubleList);
+ jni::DeleteLocalRef(env, jDoubleList);
+ }
+
+ return point;
+}
+
+mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<Double>*/> jDoubleList) {
+ auto jDoubleArray = java::util::List::toArray<double>(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);
+
return point;
}
-jni::Object<Position> Point::getPosition(JNIEnv& env, jni::Object<Point> jPoint) {
- static auto method = Point::javaClass.GetMethod<jni::Object<Position> ()>(env, "getCoordinates");
- return jPoint.Call(env, method);
+jni::Object<java::util::List> Point::coordinates(jni::JNIEnv &env, jni::Object<Point> jPoint) {
+ static auto method = Point::javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates");
+ return jPoint.Call(env, method);
}
void Point::registerNative(jni::JNIEnv &env) {