summaryrefslogtreecommitdiff
path: root/src/mbgl/style/geometry_bucket_parameters.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/style/geometry_bucket_parameters.cpp')
-rw-r--r--src/mbgl/style/geometry_bucket_parameters.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/mbgl/style/geometry_bucket_parameters.cpp b/src/mbgl/style/geometry_bucket_parameters.cpp
new file mode 100644
index 0000000000..acbd20b073
--- /dev/null
+++ b/src/mbgl/style/geometry_bucket_parameters.cpp
@@ -0,0 +1,20 @@
+#include <mbgl/style/geometry_bucket_parameters.hpp>
+#include <mbgl/style/filter_evaluator.hpp>
+#include <mbgl/tile/geometry_tile_data.hpp>
+
+namespace mbgl {
+namespace style {
+
+void GeometryBucketParameters::eachFilteredFeature(const Filter& filter,
+ std::function<void (const GeometryTileFeature&, std::size_t index, const std::string& layerName)> function) {
+ auto name = layer.getName();
+ for (std::size_t i = 0; !cancelled() && i < layer.featureCount(); i++) {
+ auto feature = layer.getFeature(i);
+ if (!filter(feature->getType(), feature->getID(), [&] (const auto& key) { return feature->getValue(key); }))
+ continue;
+ function(*feature, i, name);
+ }
+}
+
+} // namespace style
+} // namespace mbgl