#include "polygon.hpp" #include "multi_line_string.hpp" #include "util.hpp" namespace mbgl { namespace android { namespace geojson { jni::Local> 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, asPointsListsList(env, polygon)); } mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, const jni::Object& jPolygon) { mapbox::geojson::polygon polygon; if (jPolygon) { polygon = Polygon::convert(env, Polygon::coordinates(env, jPolygon)); } return polygon; } mapbox::geojson::polygon Polygon::convert(jni::JNIEnv &env, const 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::Local> Polygon::coordinates(jni::JNIEnv &env, const 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