From 7a0a4c44f469e180606afa250a47414441e8e675 Mon Sep 17 00:00:00 2001 From: Osana Babayan <32496536+osana@users.noreply.github.com> Date: Thu, 8 Feb 2018 10:33:12 -0500 Subject: migrated to use mapbox-java3.0 migrated to use mapbox-java3.0 old 2.2.9 telementry is still used though --- platform/android/src/geojson/multi_polygon.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'platform/android/src/geojson/multi_polygon.cpp') diff --git a/platform/android/src/geojson/multi_polygon.cpp b/platform/android/src/geojson/multi_polygon.cpp index a55884a110..f4eb0f6b2a 100644 --- a/platform/android/src/geojson/multi_polygon.cpp +++ b/platform/android/src/geojson/multi_polygon.cpp @@ -10,27 +10,27 @@ mapbox::geojson::multi_polygon MultiPolygon::convert(jni::JNIEnv &env, jni::Obje mapbox::geojson::multi_polygon multiPolygon; if (jMultiPolygon) { - auto jPositionListsListList = MultiPolygon::getCoordinates(env, jMultiPolygon); - auto jPositionListsListArray = java::util::List::toArray(env, jPositionListsListList); + auto jPointListsListList = MultiPolygon::coordinates(env, jMultiPolygon); + auto jPointListsListArray = java::util::List::toArray(env, jPointListsListList); - auto size = jPositionListsListArray.Length(env); + auto size = jPointListsListArray.Length(env); multiPolygon.reserve(size); for (size_t i = 0; i < size; i++) { - auto jPositionListsList = jPositionListsListArray.Get(env, i); + auto jPositionListsList = jPointListsListArray.Get(env, i); multiPolygon.push_back(Polygon::convert(env, jPositionListsList)); jni::DeleteLocalRef(env, jPositionListsList); } - jni::DeleteLocalRef(env, jPositionListsListList); - jni::DeleteLocalRef(env, jPositionListsListArray); + jni::DeleteLocalRef(env, jPointListsListList); + jni::DeleteLocalRef(env, jPointListsListArray); } return multiPolygon; } -jni::Object MultiPolygon::getCoordinates(jni::JNIEnv &env, jni::Object jPolygon) { - static auto method = MultiPolygon::javaClass.GetMethod ()>(env, "getCoordinates"); +jni::Object MultiPolygon::coordinates(jni::JNIEnv &env, jni::Object jPolygon) { + static auto method = MultiPolygon::javaClass.GetMethod ()>(env, "coordinates"); return jPolygon.Call(env, method); } -- cgit v1.2.1 From dd822e8fde1cc18a0cac999d4e5f879129383981 Mon Sep 17 00:00:00 2001 From: Osana Babayan <32496536+osana@users.noreply.github.com> Date: Tue, 20 Feb 2018 09:23:24 -0500 Subject: [android] missing DeleteLocalRef --- platform/android/src/geojson/multi_polygon.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'platform/android/src/geojson/multi_polygon.cpp') diff --git a/platform/android/src/geojson/multi_polygon.cpp b/platform/android/src/geojson/multi_polygon.cpp index f4eb0f6b2a..aadba8c8a6 100644 --- a/platform/android/src/geojson/multi_polygon.cpp +++ b/platform/android/src/geojson/multi_polygon.cpp @@ -22,8 +22,8 @@ mapbox::geojson::multi_polygon MultiPolygon::convert(jni::JNIEnv &env, jni::Obje jni::DeleteLocalRef(env, jPositionListsList); } - jni::DeleteLocalRef(env, jPointListsListList); jni::DeleteLocalRef(env, jPointListsListArray); + jni::DeleteLocalRef(env, jPointListsListList); } return multiPolygon; -- cgit v1.2.1 From 2464520da18f0f4cc7532adb3fb7b1f8f195304e Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Tue, 13 Mar 2018 12:31:56 +0200 Subject: [android] high-level jni bindings for geojson conversion --- platform/android/src/geojson/multi_polygon.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'platform/android/src/geojson/multi_polygon.cpp') diff --git a/platform/android/src/geojson/multi_polygon.cpp b/platform/android/src/geojson/multi_polygon.cpp index aadba8c8a6..cc872d4955 100644 --- a/platform/android/src/geojson/multi_polygon.cpp +++ b/platform/android/src/geojson/multi_polygon.cpp @@ -1,11 +1,34 @@ #include "multi_polygon.hpp" #include "polygon.hpp" +#include "util.hpp" namespace mbgl { namespace android { namespace geojson { +jni::Object MultiPolygon::New(JNIEnv& env, const mbgl::MultiPolygon& multiPolygon) { + auto jarray = jni::Array>::New(env, multiPolygon.size(), java::util::List::javaClass); + + for (size_t i = 0; i < multiPolygon.size(); i++) { + auto& geometry = multiPolygon.at(i); + auto jPolygon = asPointsListsList(env, geometry); + jarray.Set(env, i, jPolygon); + jni::DeleteLocalRef(env, jPolygon); + } + + // Turn into array list + auto jList = java::util::Arrays::asList(env, jarray); + jni::DeleteLocalRef(env, jarray); + + // create the MultiPolygon + static auto method = javaClass.GetStaticMethod (jni::Object)>(env, "fromLngLats"); + auto jMultiPolygon = javaClass.Call(env, method, jList); + + jni::DeleteLocalRef(env, jList); + return jMultiPolygon; +} + mapbox::geojson::multi_polygon MultiPolygon::convert(jni::JNIEnv &env, jni::Object jMultiPolygon) { mapbox::geojson::multi_polygon multiPolygon; -- cgit v1.2.1