From 3948bbd7775ea336e54fa6f152f05a139ee88750 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 22 Aug 2018 10:48:21 -0700 Subject: [PATCH] [android] Simplify Point conversion --- platform/android/src/geojson/point.cpp | 45 +++++++------------------- platform/android/src/geojson/point.hpp | 12 ++----- 2 files changed, 14 insertions(+), 43 deletions(-) diff --git a/platform/android/src/geojson/point.cpp b/platform/android/src/geojson/point.cpp index 69da99725..7fcc183dc 100644 --- a/platform/android/src/geojson/point.cpp +++ b/platform/android/src/geojson/point.cpp @@ -1,7 +1,4 @@ #include "point.hpp" -#include "../java/util.hpp" -#include "../java_types.hpp" -#include "../style/value.hpp" namespace mbgl { namespace android { @@ -13,37 +10,19 @@ jni::Object Point::New(jni::JNIEnv& env, const mbgl::Point& point return javaClass.Call(env, method, point.x, point.y); } -mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object jPoint) { - mapbox::geojson::point point; - - if (jPoint) { - point = Point::convert(env, *jni::SeizeLocal(env, Point::coordinates(env, jPoint))); - } - - return point; -} - -mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object*/> jDoubleList) { - mapbox::geojson::point point; - - if (jDoubleList) { - auto jDoubleArray = jni::SeizeLocal(env, java::util::List::toArray(env, jDoubleList)); - - auto lonObject = jni::SeizeLocal(env, jDoubleArray->Get(env, 0)); - auto latObject = jni::SeizeLocal(env, jDoubleArray->Get(env, 1)); - - point.x = jni::CallMethod(env, *lonObject, - *java::Number::doubleValueMethodId); - point.y = jni::CallMethod(env, *latObject, - *java::Number::doubleValueMethodId); - } - return point; -} - -jni::Object Point::coordinates(jni::JNIEnv &env, jni::Object jPoint) { +mbgl::Point Point::convert(jni::JNIEnv &env, jni::Object jPoint) { static auto javaClass = jni::Class::Singleton(env); - static auto method = javaClass.GetMethod ()>(env, "coordinates"); - return jPoint.Call(env, method); + static auto longitude = javaClass.GetMethod(env, "longitude"); + static auto latitude = javaClass.GetMethod(env, "latitude"); + + if (!jPoint) { + return {}; + } + + return { + jPoint.Call(env, longitude), + jPoint.Call(env, latitude) + }; } void Point::registerNative(jni::JNIEnv &env) { diff --git a/platform/android/src/geojson/point.hpp b/platform/android/src/geojson/point.hpp index 3a852a3e7..d5cc7780f 100644 --- a/platform/android/src/geojson/point.hpp +++ b/platform/android/src/geojson/point.hpp @@ -1,9 +1,7 @@ #pragma once -#include -#include +#include -#include "../java/util.hpp" #include "geometry.hpp" #include @@ -15,16 +13,10 @@ namespace geojson { class Point : public Geometry { public: static constexpr auto Name() { return "com/mapbox/geojson/Point"; }; - static constexpr auto Type() { return "Point"; }; static jni::Object New(jni::JNIEnv&, const mbgl::Point&); - - static mapbox::geojson::point convert(jni::JNIEnv&, jni::Object); - - static mapbox::geojson::point convert(jni::JNIEnv&, jni::Object*/>); - - static jni::Object coordinates(JNIEnv&, jni::Object); + static mbgl::Point convert(jni::JNIEnv&, jni::Object); static void registerNative(jni::JNIEnv&); };