diff options
author | zmiao <zmiao.jamie@gmail.com> | 2019-08-29 18:35:01 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-29 18:35:01 +0300 |
commit | 3f6b39bc7ca720c29460201e499b0de94f70dd37 (patch) | |
tree | 3b3af4e71622839d98836fd2d6ef0cb293ee80dd /platform/android/src/map/camera_position.cpp | |
parent | 504c4b1296cec20f589398db3d85d68e5dbb0204 (diff) | |
parent | 544aabd0204235579e99fe4d9b8c2de16f70e897 (diff) | |
download | qtlocation-mapboxgl-3f6b39bc7ca720c29460201e499b0de94f70dd37.tar.gz |
Merge branch 'master' into icon/text_translation
Diffstat (limited to 'platform/android/src/map/camera_position.cpp')
-rw-r--r-- | platform/android/src/map/camera_position.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/platform/android/src/map/camera_position.cpp b/platform/android/src/map/camera_position.cpp index fcbec5639a..03aca79bda 100644 --- a/platform/android/src/map/camera_position.cpp +++ b/platform/android/src/map/camera_position.cpp @@ -4,9 +4,9 @@ namespace mbgl { namespace android { -jni::Local<jni::Object<CameraPosition>> CameraPosition::New(jni::JNIEnv &env, mbgl::CameraOptions options) { +jni::Local<jni::Object<CameraPosition>> CameraPosition::New(jni::JNIEnv &env, mbgl::CameraOptions options, float pixelRatio) { static auto& javaClass = jni::Class<CameraPosition>::Singleton(env); - static auto constructor = javaClass.GetConstructor<jni::Object<LatLng>, double, double, double>(env); + static auto constructor = javaClass.GetConstructor<jni::Object<LatLng>, double, double, double, jni::Array<jni::jdouble>>(env); // wrap LatLng values coming from core auto center = options.center.value(); @@ -25,21 +25,33 @@ jni::Local<jni::Object<CameraPosition>> CameraPosition::New(jni::JNIEnv &env, mb // convert tilt, core ranges from [0 rad, 1,0472 rad], android ranges from 0 to 60 double tilt_degrees = options.pitch.value_or(0); - return javaClass.New(env, constructor, LatLng::New(env, center), options.zoom.value_or(0), tilt_degrees, bearing_degrees); + std::vector<jdouble> paddingVect; + auto insets = options.padding.value_or(EdgeInsets {0, 0, 0, 0}); + auto padding = jni::Array<jni::jdouble>::New(env, 4); + paddingVect.push_back(insets.left() * pixelRatio); + paddingVect.push_back(insets.top() * pixelRatio); + paddingVect.push_back(insets.right() * pixelRatio); + paddingVect.push_back(insets.bottom() * pixelRatio); + padding.SetRegion<std::vector<jni::jdouble>>(env, 0, paddingVect); + + return javaClass.New(env, constructor, LatLng::New(env, center), options.zoom.value_or(0), tilt_degrees, bearing_degrees, padding); } -mbgl::CameraOptions CameraPosition::getCameraOptions(jni::JNIEnv& env, const jni::Object<CameraPosition>& position) { +mbgl::CameraOptions CameraPosition::getCameraOptions(jni::JNIEnv& env, const jni::Object<CameraPosition>& position, float pixelRatio) { static auto& javaClass = jni::Class<CameraPosition>::Singleton(env); static auto bearing = javaClass.GetField<jni::jdouble>(env, "bearing"); static auto target = javaClass.GetField<jni::Object<LatLng>>(env, "target"); static auto tilt = javaClass.GetField<jni::jdouble>(env, "tilt"); static auto zoom = javaClass.GetField<jni::jdouble>(env, "zoom"); + static auto paddingField = javaClass.GetField<jni::Array<jni::jdouble>>(env, "padding"); + static auto padding = position.Get(env, paddingField); auto center = LatLng::getLatLng(env, position.Get(env, target)); return mbgl::CameraOptions { center, - {}, + EdgeInsets {padding.Get(env, 1) * pixelRatio, padding.Get(env, 0) * pixelRatio, + padding.Get(env, 3) * pixelRatio, padding.Get(env, 2) * pixelRatio}, {}, position.Get(env, zoom), position.Get(env, bearing), |