diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-02-06 13:20:15 +0200 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2017-02-10 21:15:18 +0100 |
commit | 2fc070ca9995bf4ceb4599ce7a94bee7a03b10b4 (patch) | |
tree | 4941842058cfddbc87b0c989d7b572ad6cc821fa /platform/android/src/annotation/multi_point.hpp | |
parent | 35b810dd6ddfc5e6f1a635b2682b3add5ec5d5bb (diff) | |
download | qtlocation-mapboxgl-upstream/ivovandongen-gl-sv.tar.gz |
[android] native map view refactoringupstream/ivovandongen-gl-sv
Diffstat (limited to 'platform/android/src/annotation/multi_point.hpp')
-rw-r--r-- | platform/android/src/annotation/multi_point.hpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/platform/android/src/annotation/multi_point.hpp b/platform/android/src/annotation/multi_point.hpp new file mode 100644 index 0000000000..e1152dfd60 --- /dev/null +++ b/platform/android/src/annotation/multi_point.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include <mbgl/util/noncopyable.hpp> +#include <jni/jni.hpp> + +#include "../geometry/lat_lng.hpp" +#include "../java/util.hpp" + +namespace mbgl { +namespace android { + +class MultiPoint : protected mbgl::util::noncopyable { + +protected: + + template <class Geometry> + static Geometry toGeometry(JNIEnv& env, jni::Object<java::util::List> pointsList) { + NullCheck(env, &pointsList); + auto jarray = java::util::List::toArray<LatLng>(env, pointsList); + NullCheck(env, &jarray); + + std::size_t size = jarray.Length(env); + + Geometry geometry; + geometry.reserve(size); + + for (std::size_t i = 0; i < size; i++) { + auto latLng = jarray.Get(env, i); + NullCheck(env, &latLng); + + geometry.push_back(LatLng::getGeometry(env, latLng)); + + jni::DeleteLocalRef(env, latLng); + } + + jni::DeleteLocalRef(env, jarray); + return geometry; + } +}; + +} // namespace android +} // namespace mbgl
\ No newline at end of file |