diff options
Diffstat (limited to 'src/mbgl/style/geometry_bucket_parameters.cpp')
-rw-r--r-- | src/mbgl/style/geometry_bucket_parameters.cpp | 20 |
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 |