diff options
author | Osana Babayan <32496536+osana@users.noreply.github.com> | 2018-02-08 10:33:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-08 10:33:12 -0500 |
commit | 7a0a4c44f469e180606afa250a47414441e8e675 (patch) | |
tree | 97f69e610913a055dfc9bc712555a4687d328b54 /platform/android/src/geojson/point.cpp | |
parent | 62ae0738e8a3d1b3e4b661fa7e8d8bb1d6339c51 (diff) | |
download | qtlocation-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.cpp | 34 |
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) { |