summaryrefslogtreecommitdiff
path: root/platform/android/src/geometry/lat_lng_bounds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/geometry/lat_lng_bounds.cpp')
-rw-r--r--platform/android/src/geometry/lat_lng_bounds.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/platform/android/src/geometry/lat_lng_bounds.cpp b/platform/android/src/geometry/lat_lng_bounds.cpp
new file mode 100644
index 0000000000..9efacde120
--- /dev/null
+++ b/platform/android/src/geometry/lat_lng_bounds.cpp
@@ -0,0 +1,31 @@
+#include "lat_lng_bounds.hpp"
+
+namespace mbgl {
+namespace android {
+
+jni::Object<LatLngBounds> LatLngBounds::New(jni::JNIEnv& env, mbgl::LatLngBounds bounds) {
+ static auto constructor = LatLngBounds::javaClass.GetConstructor<double, double, double, double>(env);
+ return LatLngBounds::javaClass.New(env, constructor, bounds.north(), bounds.east(), bounds.south(), bounds.west());
+}
+
+mbgl::LatLngBounds LatLngBounds::getLatLngBounds(jni::JNIEnv& env, jni::Object<LatLngBounds> bounds) {
+ static auto swLat = LatLngBounds::javaClass.GetField<jni::jdouble>(env, "mLatSouth");
+ static auto swLon = LatLngBounds::javaClass.GetField<jni::jdouble>(env, "mLonWest");
+ static auto neLat = LatLngBounds::javaClass.GetField<jni::jdouble>(env, "mLatNorth");
+ static auto neLon = LatLngBounds::javaClass.GetField<jni::jdouble>(env, "mLonEast");
+ return mbgl::LatLngBounds::hull(
+ { bounds.Get(env, swLat), bounds.Get(env, swLon) },
+ { bounds.Get(env, neLat), bounds.Get(env, neLon) }
+ );
+}
+
+void LatLngBounds::registerNative(jni::JNIEnv& env) {
+ // Lookup the class
+ LatLngBounds::javaClass = *jni::Class<LatLngBounds>::Find(env).NewGlobalRef(env).release();
+}
+
+jni::Class<LatLngBounds> LatLngBounds::javaClass;
+
+
+} // namespace android
+} // namespace mbgl \ No newline at end of file