summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkevin <kevin.li@mapbox.com>2020-02-28 11:42:13 +0800
committerkevin <kevin.li@mapbox.com>2020-03-04 10:54:09 +0800
commitac44da4b980b72aad58171422ab0999bea1c3d42 (patch)
tree66c52a84a2b4f691b0e364c17478f8132d42712e
parent44ac1f008aeda27d13e6390405a3666ff522611b (diff)
downloadqtlocation-mapboxgl-ac44da4b980b72aad58171422ab0999bea1c3d42.tar.gz
[android] Update toGeoJSON in android_conversion.hpp
-rw-r--r--platform/android/src/style/android_conversion.hpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/platform/android/src/style/android_conversion.hpp b/platform/android/src/style/android_conversion.hpp
index dc0a0acb31..3db2a99d8a 100644
--- a/platform/android/src/style/android_conversion.hpp
+++ b/platform/android/src/style/android_conversion.hpp
@@ -110,11 +110,24 @@ public:
}
static optional<GeoJSON> toGeoJSON(const mbgl::android::Value &value, Error &error) {
- if (value.isNull() || !value.isString()) {
+ if (value.isNull()) {
error = { "no json data found" };
return {};
+ } else if (value.isString()) {
+ return parseGeoJSON(value.toString(), error);
+ } else 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);
+ }
+ }
}
- return parseGeoJSON(value.toString(), error);
+ error = {"no json data found"};
+ return {};
}
};