[core] Add expression filter support (#11251)
* WIP * WIP * WIP * Remove Filter::operator()(const Feature&) * WIP * WIP * WIP * WIP * Hook up expression filter evaluator * Replace `shared_ptr` with &reference * Fill in implementation of `void operator()(const ExpressionFilter&)` * Fix failing tests * Switch back to a shared_ptr per chat with @anandthakker * Fix benchmark compilation * Shot in the dark to fix CI * Shot in the dark to fix CI (part 2) * Shot in the dark to fix CI (part 3) * In src/mbgl/style/conversion/filter.cpp, add a port of isExpressionFilter and use it to decide in Converter<Filter>::operator() whether to parse the incoming JSON as an ExpressionFilter or one of the legacy filter types * Remove bool Filter::operator()(const GeometryTileFeature&) const * Ensure the map zoom is passed into filtering operations wherever applicable * Add expression filter tests * Addressed PR feedback * Implement `NSPredicate *operator()(mbgl::style::ExpressionFilter filter)` * Fix formatting& nit
This commit is contained in:
committed by
Tobrun
parent
6179110b6b
commit
8a3deab733
@@ -1,6 +1,7 @@
|
||||
#import "NSPredicate+MGLAdditions.h"
|
||||
|
||||
#import "MGLValueEvaluator.h"
|
||||
#import "MGLStyleValue_Private.h"
|
||||
|
||||
class FilterEvaluator {
|
||||
public:
|
||||
@@ -194,6 +195,11 @@ public:
|
||||
NSPredicate *operator()(mbgl::style::NotHasIdentifierFilter filter) {
|
||||
return [NSPredicate predicateWithFormat:@"%K == nil", @"$id"];
|
||||
}
|
||||
|
||||
NSPredicate *operator()(mbgl::style::ExpressionFilter filter) {
|
||||
id jsonObject = MGLJSONObjectFromMBGLExpression(*filter.expression);
|
||||
return [NSPredicate mgl_predicateWithJSONObject:jsonObject];
|
||||
}
|
||||
};
|
||||
|
||||
@implementation NSPredicate (MGLAdditions)
|
||||
|
||||
Reference in New Issue
Block a user