#include "point.hpp" #include "../java/util.hpp" #include "../java_types.hpp" #include "../style/value.hpp" namespace mbgl { namespace android { namespace geojson { jni::Object Point::New(jni::JNIEnv& env, const mbgl::Point& point) { static auto javaClass = jni::Class::Singleton(env); static auto method = javaClass.GetStaticMethod (jni::jdouble, jni::jdouble)>(env, "fromLngLat"); 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) { static auto javaClass = jni::Class::Singleton(env); static auto method = javaClass.GetMethod ()>(env, "coordinates"); return jPoint.Call(env, method); } void Point::registerNative(jni::JNIEnv &env) { jni::Class::Singleton(env); } } // namespace geojson } // namespace android } // namespace mbgl