# Conflicts: # circle.yml # include/mbgl/style/expression/let.hpp # platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLngBounds.java # platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java # platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapKeyListener.java # platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java # platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java # platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java # platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java # platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/geometry/LatLngBoundsTest.java # platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml # platform/android/gradle/dependencies.gradle # platform/android/src/example_custom_layer.cpp # platform/android/src/geojson/point.cpp # platform/darwin/src/NSPredicate+MGLAdditions.mm # platform/darwin/test/MGLExpressionTests.mm # platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec # platform/ios/Mapbox-iOS-SDK-symbols.podspec # platform/ios/Mapbox-iOS-SDK.podspec # platform/ios/app/MBXViewController.m # src/mbgl/renderer/layers/render_custom_layer.cpp # src/mbgl/style/conversion/filter.cpp # src/mbgl/style/expression/interpolate.cpp # src/mbgl/style/expression/value.cpp # test/style/filter.test.cpp
63 lines
2.0 KiB
C++
63 lines
2.0 KiB
C++
#include "point.hpp"
|
|
#include "../java/util.hpp"
|
|
#include "../java_types.hpp"
|
|
#include "../style/value.hpp"
|
|
|
|
namespace mbgl {
|
|
namespace android {
|
|
namespace geojson {
|
|
|
|
jni::Object<Point> Point::New(jni::JNIEnv& env, const mbgl::Point<double>& point) {
|
|
static auto method = javaClass.GetStaticMethod<jni::Object<Point> (jni::jdouble, jni::jdouble)>(env, "fromLngLat");
|
|
return javaClass.Call(env, method, point.x, point.y);
|
|
}
|
|
|
|
mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<Point> jPoint) {
|
|
mapbox::geojson::point point;
|
|
|
|
if (jPoint) {
|
|
auto jDoubleList = Point::coordinates(env, jPoint);
|
|
point = Point::convert(env, jDoubleList);
|
|
jni::DeleteLocalRef(env, jDoubleList);
|
|
}
|
|
|
|
return point;
|
|
}
|
|
|
|
mapbox::geojson::point Point::convert(jni::JNIEnv &env, jni::Object<java::util::List/*<Double>*/> jDoubleList) {
|
|
mapbox::geojson::point point;
|
|
|
|
if (jDoubleList) {
|
|
auto jDoubleArray = java::util::List::toArray<jobject>(env, jDoubleList);
|
|
|
|
auto lonObject = jDoubleArray.Get(env, 0);
|
|
auto latObject = jDoubleArray.Get(env, 1);
|
|
|
|
point.x = jni::CallMethod<jni::jdouble>(env, lonObject,
|
|
*java::Number::doubleValueMethodId);
|
|
point.y = jni::CallMethod<jni::jdouble>(env, latObject,
|
|
*java::Number::doubleValueMethodId);
|
|
|
|
jni::DeleteLocalRef(env, lonObject);
|
|
jni::DeleteLocalRef(env, latObject);
|
|
jni::DeleteLocalRef(env, jDoubleArray);
|
|
}
|
|
return point;
|
|
}
|
|
|
|
jni::Object<java::util::List> Point::coordinates(jni::JNIEnv &env, jni::Object<Point> jPoint) {
|
|
static auto method = Point::javaClass.GetMethod<jni::Object<java::util::List> ()>(env, "coordinates");
|
|
return jPoint.Call(env, method);
|
|
}
|
|
|
|
void Point::registerNative(jni::JNIEnv &env) {
|
|
// Lookup the class
|
|
javaClass = *jni::Class<Point>::Find(env).NewGlobalRef(env).release();
|
|
}
|
|
|
|
jni::Class<Point> Point::javaClass;
|
|
|
|
} // namespace geojson
|
|
} // namespace android
|
|
} // namespace mbgl
|