diff options
author | Peng Liu <peng.liu@mapbox.com> | 2019-09-23 15:29:32 +0300 |
---|---|---|
committer | Peng Liu <peng.liu@mapbox.com> | 2019-09-23 16:07:09 +0300 |
commit | 38e5a2cc69b0a3e51bdc92e0873c091df2a82ab6 (patch) | |
tree | ef8c6764ed1dfd701dea182d622e4486dfbbb844 | |
parent | 8f2a7ecd51ad6562066b9d3ccaacd180da8486ac (diff) | |
download | qtlocation-mapboxgl-upstream/peng-fix-camera-padding.tar.gz |
[android] Fix the crash when camera position padding is set.upstream/peng-fix-camera-padding
-rw-r--r-- | platform/android/src/map/camera_position.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/platform/android/src/map/camera_position.cpp b/platform/android/src/map/camera_position.cpp index cbf5f2e408..4266b64fdf 100644 --- a/platform/android/src/map/camera_position.cpp +++ b/platform/android/src/map/camera_position.cpp @@ -44,19 +44,20 @@ mbgl::CameraOptions CameraPosition::getCameraOptions(jni::JNIEnv& env, const jni 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 padding = position.Get(env, paddingField); auto center = LatLng::getLatLng(env, position.Get(env, target)); - return mbgl::CameraOptions { - center, - padding ? EdgeInsets {padding.Get(env, 1) * pixelRatio, padding.Get(env, 0) * pixelRatio, - padding.Get(env, 3) * pixelRatio, padding.Get(env, 2) * pixelRatio} : (EdgeInsets) {}, - {}, - position.Get(env, zoom), - position.Get(env, bearing), - position.Get(env, tilt) - }; + return mbgl::CameraOptions{center, + padding && padding.Length(env) == 4 ? EdgeInsets{padding.Get(env, 1) * pixelRatio, + padding.Get(env, 0) * pixelRatio, + padding.Get(env, 3) * pixelRatio, + padding.Get(env, 2) * pixelRatio} + : (EdgeInsets){}, + {}, + position.Get(env, zoom), + position.Get(env, bearing), + position.Get(env, tilt)}; } void CameraPosition::registerNative(jni::JNIEnv &env) { |