#include "multi_point.hpp" #include "line_string.hpp" #include "util.hpp" namespace mbgl { namespace android { namespace geojson { jni::Object MultiPoint::New(JNIEnv& env, const mbgl::MultiPoint& multiPoint) { auto jList = asPointsList(env, multiPoint); static auto method = javaClass.GetStaticMethod(jni::Object)>(env, "fromLngLats"); auto jMultiPoint = javaClass.Call(env, method, jList); jni::DeleteLocalRef(env, jList); return jMultiPoint; } mapbox::geojson::multi_point MultiPoint::convert(jni::JNIEnv &env, jni::Object jMultiPoint) { mapbox::geojson::multi_point multiPoint; if (jMultiPoint) { auto jPointListsList = MultiPoint::coordinates(env, jMultiPoint); multiPoint = convertExplicit(LineString::convert(env, jPointListsList)); jni::DeleteLocalRef(env, jPointListsList); } return multiPoint; } jni::Object MultiPoint::coordinates(jni::JNIEnv &env, jni::Object jMultiPoint) { static auto method = MultiPoint::javaClass.GetMethod ()>(env, "coordinates"); return jMultiPoint.Call(env, method); } void MultiPoint::registerNative(jni::JNIEnv &env) { // Lookup the class javaClass = *jni::Class::Find(env).NewGlobalRef(env).release(); } jni::Class MultiPoint::javaClass; } // namespace geojson } // namespace android } // namespace mbgl