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 /include/mbgl | |
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 'include/mbgl')
-rw-r--r-- | include/mbgl/annotation/annotation.hpp | 1 | ||||
-rw-r--r-- | include/mbgl/style/expression/dsl.hpp | 29 | ||||
-rw-r--r-- | include/mbgl/style/expression/expression.hpp | 6 | ||||
-rw-r--r-- | include/mbgl/style/sources/geojson_source.hpp | 13 |
4 files changed, 30 insertions, 19 deletions
diff --git a/include/mbgl/annotation/annotation.hpp b/include/mbgl/annotation/annotation.hpp index fb9ea5eba2..17728741bb 100644 --- a/include/mbgl/annotation/annotation.hpp +++ b/include/mbgl/annotation/annotation.hpp @@ -4,7 +4,6 @@ #include <mbgl/util/variant.hpp> #include <mbgl/util/color.hpp> #include <mbgl/style/property_value.hpp> -#include <mbgl/style/property_value.hpp> #include <cstdint> #include <vector> diff --git a/include/mbgl/style/expression/dsl.hpp b/include/mbgl/style/expression/dsl.hpp index bcab999ab2..4abeac7989 100644 --- a/include/mbgl/style/expression/dsl.hpp +++ b/include/mbgl/style/expression/dsl.hpp @@ -1,13 +1,13 @@ #pragma once -#include <mbgl/style/expression/value.hpp> #include <mbgl/style/expression/expression.hpp> #include <mbgl/style/expression/interpolator.hpp> +#include <mbgl/style/expression/value.hpp> #include <mbgl/util/ignore.hpp> +#include <initializer_list> #include <memory> #include <string> -#include <initializer_list> namespace mbgl { namespace style { @@ -24,15 +24,18 @@ std::vector<std::unique_ptr<Expression>> vec(Args... args) { return result; } +std::unique_ptr<Expression> createExpression(const char* expr); +std::unique_ptr<Expression> createExpression(const mbgl::style::conversion::Convertible& expr); std::unique_ptr<Expression> error(std::string); std::unique_ptr<Expression> literal(const char* value); std::unique_ptr<Expression> literal(Value value); std::unique_ptr<Expression> literal(std::initializer_list<double> value); -std::unique_ptr<Expression> literal(std::initializer_list<const char *> value); +std::unique_ptr<Expression> literal(std::initializer_list<const char*> value); -std::unique_ptr<Expression> assertion(type::Type, std::unique_ptr<Expression>, - std::unique_ptr<Expression> def = nullptr); +std::unique_ptr<Expression> +assertion(type::Type, std::unique_ptr<Expression>, + std::unique_ptr<Expression> def = nullptr); std::unique_ptr<Expression> number(std::unique_ptr<Expression>, std::unique_ptr<Expression> def = nullptr); std::unique_ptr<Expression> string(std::unique_ptr<Expression>, @@ -46,21 +49,17 @@ std::unique_ptr<Expression> toString(std::unique_ptr<Expression>, std::unique_ptr<Expression> def = nullptr); std::unique_ptr<Expression> toFormatted(std::unique_ptr<Expression>, std::unique_ptr<Expression> def = nullptr); - + std::unique_ptr<Expression> get(const char* value); std::unique_ptr<Expression> get(std::unique_ptr<Expression>); std::unique_ptr<Expression> id(); std::unique_ptr<Expression> zoom(); -std::unique_ptr<Expression> eq(std::unique_ptr<Expression>, - std::unique_ptr<Expression>); -std::unique_ptr<Expression> ne(std::unique_ptr<Expression>, - std::unique_ptr<Expression>); -std::unique_ptr<Expression> gt(std::unique_ptr<Expression>, - std::unique_ptr<Expression>); -std::unique_ptr<Expression> lt(std::unique_ptr<Expression>, - std::unique_ptr<Expression>); +std::unique_ptr<Expression> eq(std::unique_ptr<Expression>, std::unique_ptr<Expression>); +std::unique_ptr<Expression> ne(std::unique_ptr<Expression>, std::unique_ptr<Expression>); +std::unique_ptr<Expression> gt(std::unique_ptr<Expression>, std::unique_ptr<Expression>); +std::unique_ptr<Expression> lt(std::unique_ptr<Expression>, std::unique_ptr<Expression>); std::unique_ptr<Expression> step(std::unique_ptr<Expression> input, std::unique_ptr<Expression> output0, @@ -86,7 +85,7 @@ std::unique_ptr<Expression> interpolate(Interpolator interpolator, double input3, std::unique_ptr<Expression> output3); std::unique_ptr<Expression> concat(std::vector<std::unique_ptr<Expression>> inputs); - + std::unique_ptr<Expression> format(const char* value); std::unique_ptr<Expression> format(std::unique_ptr<Expression>); diff --git a/include/mbgl/style/expression/expression.hpp b/include/mbgl/style/expression/expression.hpp index 5f66fc6dc7..ad57748677 100644 --- a/include/mbgl/style/expression/expression.hpp +++ b/include/mbgl/style/expression/expression.hpp @@ -31,6 +31,9 @@ public: EvaluationContext(float zoom_, GeometryTileFeature const * feature_) : zoom(zoom_), feature(feature_) {} + EvaluationContext(optional<mbgl::Value> accumulated_, GeometryTileFeature const * feature_) : + accumulated(std::move(accumulated_)), feature(feature_) + {} EvaluationContext(optional<float> zoom_, GeometryTileFeature const * feature_, optional<double> colorRampParameter_) : zoom(std::move(zoom_)), feature(feature_), colorRampParameter(std::move(colorRampParameter_)) {} @@ -41,6 +44,7 @@ public: }; optional<float> zoom; + optional<mbgl::Value> accumulated; GeometryTileFeature const * feature = nullptr; optional<double> colorRampParameter; // Contains formatted section object, std::unordered_map<std::string, Value>. @@ -162,7 +166,7 @@ public: type::Type getType() const { return type; }; EvaluationResult evaluate(optional<float> zoom, const Feature& feature, optional<double> colorRampParameter) const; - + EvaluationResult evaluate(optional<mbgl::Value> accumulated, const Feature& feature) const; /** * Statically analyze the expression, attempting to enumerate possible outputs. Returns * an array of values plus the sentinel null optional value, used to indicate that the diff --git a/include/mbgl/style/sources/geojson_source.hpp b/include/mbgl/style/sources/geojson_source.hpp index a03b910279..4aec1584a6 100644 --- a/include/mbgl/style/sources/geojson_source.hpp +++ b/include/mbgl/style/sources/geojson_source.hpp @@ -1,9 +1,14 @@ #pragma once +#include <mbgl/style/expression/expression.hpp> #include <mbgl/style/source.hpp> +#include <mbgl/util/constants.hpp> #include <mbgl/util/geojson.hpp> #include <mbgl/util/optional.hpp> -#include <mbgl/util/constants.hpp> + +#include <memory> +#include <unordered_map> +#include <utility> namespace mbgl { @@ -24,11 +29,15 @@ struct GeoJSONOptions { bool cluster = false; uint16_t clusterRadius = 50; uint8_t clusterMaxZoom = 17; + using ClusterExpression = std::pair<std::shared_ptr<mbgl::style::expression::Expression>, + std::shared_ptr<mbgl::style::expression::Expression>>; + using ClusterProperties = std::unordered_map<std::string, ClusterExpression>; + ClusterProperties clusterProperties; }; class GeoJSONSource : public Source { public: - GeoJSONSource(const std::string& id, const GeoJSONOptions& = {}); + GeoJSONSource(const std::string& id, optional<GeoJSONOptions> = nullopt); ~GeoJSONSource() final; void setURL(const std::string& url); |