#include "line_string.hpp" #include "point.hpp" #include "util.hpp" #include "../java/util.hpp" namespace mbgl { namespace android { namespace geojson { jni::Local> LineString::New(jni::JNIEnv& env, const mbgl::LineString& lineString) { static auto& javaClass = jni::Class::Singleton(env); static auto method = javaClass.GetStaticMethod(jni::Object)>(env, "fromLngLats"); return javaClass.Call(env, method, asPointsList(env, lineString)); } mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, const jni::Object& jLineString) { mapbox::geojson::line_string lineString; if (jLineString) { lineString = LineString::convert(env, LineString::coordinates(env, jLineString)); } return lineString; } mapbox::geojson::line_string LineString::convert(jni::JNIEnv &env, const jni::Object*/>& jPointList) { mapbox::geojson::line_string lineString; if (jPointList) { auto jPointArray = java::util::List::toArray(env, jPointList); auto size = jPointArray.Length(env); lineString.reserve(size); for (std::size_t i = 0; i < size; i++) { lineString.push_back(Point::convert(env, jPointArray.Get(env, i))); } } return lineString; } jni::Local> LineString::coordinates(jni::JNIEnv &env, const jni::Object& jLineString) { static auto& javaClass = jni::Class::Singleton(env); static auto method = javaClass.GetMethod ()>(env, "coordinates"); return jLineString.Call(env, method); } void LineString::registerNative(jni::JNIEnv &env) { jni::Class::Singleton(env); } } // namespace geojson } // namespace android } // namespace mbgl