From 3948bbd7775ea336e54fa6f152f05a139ee88750 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Wed, 22 Aug 2018 10:48:21 -0700 Subject: [android] Simplify Point conversion --- platform/android/src/geojson/point.cpp | 41 +++++++++------------------------- platform/android/src/geojson/point.hpp | 12 ++-------- 2 files changed, 12 insertions(+), 41 deletions(-) diff --git a/platform/android/src/geojson/point.cpp b/platform/android/src/geojson/point.cpp index 69da997250..7fcc183dc1 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)); +mbgl::Point Point::convert(jni::JNIEnv &env, jni::Object jPoint) { + static auto javaClass = jni::Class::Singleton(env); + static auto longitude = javaClass.GetMethod(env, "longitude"); + static auto latitude = javaClass.GetMethod(env, "latitude"); - point.x = jni::CallMethod(env, *lonObject, - *java::Number::doubleValueMethodId); - point.y = jni::CallMethod(env, *latObject, - *java::Number::doubleValueMethodId); + if (!jPoint) { + return {}; } - return point; -} -jni::Object Point::coordinates(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); + 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 3a852a3e74..d5cc7780f3 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&); }; -- cgit v1.2.1