diff options
author | zmiao <miao.zhao@mapbox.com> | 2019-08-16 15:03:48 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-16 15:03:48 +0300 |
commit | 0f34eb7b253e83b8c4aef7ed6c83cd7b3801fa4c (patch) | |
tree | a0e06d1c81b04fca84f8ed8effeaeaefc2e79e13 /src/mbgl/style/expression/dsl.cpp | |
parent | 9f8696c00c7ef11abb3850e4694bc7375365295e (diff) | |
download | qtlocation-mapboxgl-0f34eb7b253e83b8c4aef7ed6c83cd7b3801fa4c.tar.gz |
Indroduce clusterProperty option for aggregation (#15287)
* indroduce clusterProperty option for aggregation
* remove unnecessary codes
* update geojson_option conversion
* fix reviewing findings
Diffstat (limited to 'src/mbgl/style/expression/dsl.cpp')
-rw-r--r-- | src/mbgl/style/expression/dsl.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mbgl/style/expression/dsl.cpp b/src/mbgl/style/expression/dsl.cpp index 70442de968..fac7dfbbd9 100644 --- a/src/mbgl/style/expression/dsl.cpp +++ b/src/mbgl/style/expression/dsl.cpp @@ -10,6 +10,10 @@ #include <mbgl/style/expression/compound_expression.hpp> #include <mbgl/style/expression/format_expression.hpp> +#include <mapbox/geojsonvt.hpp> +#include <mbgl/style/conversion/json.hpp> +#include <rapidjson/document.h> + namespace mbgl { namespace style { namespace expression { @@ -21,6 +25,25 @@ std::unique_ptr<Expression> compound(const char* op, std::vector<std::unique_ptr assert(result); return std::move(*result); } + +std::unique_ptr<Expression> createExpression(const char* expr) { + using JSValue = rapidjson::GenericValue<rapidjson::UTF8<>, rapidjson::CrtAllocator>; + rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator> document; + document.Parse<0>(expr); + if (document.HasParseError()) return nullptr; + + const JSValue* expression = &document; + expression::ParsingContext ctx; + expression::ParseResult parsed = + ctx.parseExpression(mbgl::style::conversion::Convertible(expression)); + return parsed ? std::move(*parsed) : nullptr; +} + +std::unique_ptr<Expression> createExpression(const mbgl::style::conversion::Convertible& expr) { + expression::ParsingContext ctx; + expression::ParseResult parsed = ctx.parseExpression(expr); + return parsed ? std::move(*parsed) : nullptr; +} std::unique_ptr<Expression> error(std::string message) { return std::make_unique<Error>(std::move(message)); |