#include "polygon.hpp" #include "multi_line_string.hpp" #include "util.hpp" namespace mbgl { namespace android { namespace geojson { jni::Object Polygon::New(jni::JNIEnv& env, const mbgl::Polygon& polygon) { static auto javaClass = jni::Class::Singleton(env); static auto method = javaClass.GetStaticMethod (jni::Object)>(env, "fromLngLats"); return javaClass.Call(env, method, *jni::SeizeLocal(env, asPointsListsList(env, polygon))); } mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, jni::Object jPolygon) { mapbox::geojson::polygon polygon; if (jPolygon) { polygon = Polygon::convert(env, *jni::SeizeLocal(env, Polygon::coordinates(env, jPolygon))); } return polygon; } mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, jni::Object>*/> jPointListsList) { mapbox::geojson::polygon polygon; if (jPointListsList) { auto multiLine = MultiLineString::convert(env, jPointListsList); polygon.reserve(multiLine.size()); for (auto&& line : multiLine) { polygon.emplace_back(convertExplicit(std::move(line))); } } return polygon; } jni::Object Polygon::coordinates(jni::JNIEnv &env, jni::Object jPolygon) { static auto javaClass = jni::Class::Singleton(env); static auto method = javaClass.GetMethod ()>(env, "coordinates"); return jPolygon.Call(env, method); } void Polygon::registerNative(jni::JNIEnv &env) { jni::Class::Singleton(env); } } // namespace geojson } // namespace android } // namespace mbgl