用于检查 MGLStyleLayer 的 属性 并与字符串进行比较的 Mapbox 表达式
Mapbox Expression to check property of MGLStyleLayer and compare with string
在 mapView:didFinishLoadingStyle:
方法中,我希望能够检查 MGLSymbolStyleLayer
是否使用特定的 class
,类似于我们使用 [=15= 的方式] 在 JSON 样式文件中仅将样式应用于特定 class:
但是,在我的例子中,我想检查并查看地图上是否存在 class,如果它是字符串数组的一部分则将其隐藏:
NSArray *poiTypesExcluded = @[@"airport"];
for (NSString *poiType in poiTypesExcluded) {
layer.visible = [NSExpression expressionWithFormat:@"class != %@", poiType];
}
这是给我的错误:
Unable to parse the format string "class != %@ == 1"
.
关于如何编写 NSExpression
以便能够将 class
属性 与另一个字符串进行比较的任何帮助?
我在这上面浪费了很多时间,结果比我想象的要简单:
NSArray *poiTypesExcluded = @[@"airport", @"grocery", @"bank"];
NSMutableArray *predicates = [[NSMutableArray alloc] init];
for (NSString *poiType in poiTypesExcluded) {
[predicates addObject:[NSPredicate predicateWithFormat:@"class != %@", poiType]];
}
symbolLayer.predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
在 mapView:didFinishLoadingStyle:
方法中,我希望能够检查 MGLSymbolStyleLayer
是否使用特定的 class
,类似于我们使用 [=15= 的方式] 在 JSON 样式文件中仅将样式应用于特定 class:
但是,在我的例子中,我想检查并查看地图上是否存在 class,如果它是字符串数组的一部分则将其隐藏:
NSArray *poiTypesExcluded = @[@"airport"];
for (NSString *poiType in poiTypesExcluded) {
layer.visible = [NSExpression expressionWithFormat:@"class != %@", poiType];
}
这是给我的错误:
Unable to parse the format string "class != %@ == 1"
.
关于如何编写 NSExpression
以便能够将 class
属性 与另一个字符串进行比较的任何帮助?
我在这上面浪费了很多时间,结果比我想象的要简单:
NSArray *poiTypesExcluded = @[@"airport", @"grocery", @"bank"];
NSMutableArray *predicates = [[NSMutableArray alloc] init];
for (NSString *poiType in poiTypesExcluded) {
[predicates addObject:[NSPredicate predicateWithFormat:@"class != %@", poiType]];
}
symbolLayer.predicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];