diff --git a/CHANGELOG.md b/CHANGELOG.md index c8fe97487a3..9e34977d615 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ Fixes possible crashes when using styles with line patterns. +- [android] Update toGeoJSON in android_conversion.hpp [#16243](https://github.com/mapbox/mapbox-gl-native/pull/16243) + + Before this chage, `toGeoJSON` method in `android_conversion.hpp` can't convert Object(Map in android) to GeoJSON object. + + But `within` expression need to accept an Object and then convert to GeoJSON object, now `toGeoJSON` method can convert both string and Object to GeoJSON. + ## maps-v1.3.0 (2020.02-relvanillashake) ### 🐞 Bug fixes diff --git a/platform/android/src/style/android_conversion.hpp b/platform/android/src/style/android_conversion.hpp index 3db2a99d8ae..e0a39db6691 100644 --- a/platform/android/src/style/android_conversion.hpp +++ b/platform/android/src/style/android_conversion.hpp @@ -113,16 +113,24 @@ class ConversionTraits { if (value.isNull()) { error = { "no json data found" }; return {}; - } else if (value.isString()) { + } + + if (value.isString()) { return parseGeoJSON(value.toString(), error); - } else if (value.isObject()) { + } + + if (value.isObject()) { mbgl::android::Value keys = value.keyArray(); std::size_t length = arrayLength(keys); for (std::size_t i = 0; i < length; ++i) { const auto k = keys.get(i).toString(); if (k == "json") { - auto v = value.get(k.c_str()); - return parseGeoJSON(v.toString(), error); + auto v = value.get("json"); + if (v.isString()) { + return parseGeoJSON(v.toString(), error); + } else { + break; + } } } }