summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLVectorSource.mm
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-03-05 14:12:37 -0800
committerJesse Bounds <jesse@rebounds.net>2017-03-10 11:08:32 -0800
commita7fd788b5d5d7734666758320235f14be8187179 (patch)
tree5799cc0159590c88e02481b60eac9db9202956d6 /platform/darwin/src/MGLVectorSource.mm
parent517659b1b44a4e31e1035d4da9c444380454ad58 (diff)
downloadqtlocation-mapboxgl-a7fd788b5d5d7734666758320235f14be8187179.tar.gz
[macos, ios] query source features
Diffstat (limited to 'platform/darwin/src/MGLVectorSource.mm')
-rw-r--r--platform/darwin/src/MGLVectorSource.mm23
1 files changed, 23 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLVectorSource.mm b/platform/darwin/src/MGLVectorSource.mm
index 94511900c1..aeec2e40ac 100644
--- a/platform/darwin/src/MGLVectorSource.mm
+++ b/platform/darwin/src/MGLVectorSource.mm
@@ -1,8 +1,10 @@
#import "MGLVectorSource_Private.h"
#import "MGLMapView_Private.h"
+#import "MGLFeature_Private.h"
#import "MGLSource_Private.h"
#import "MGLTileSource_Private.h"
+#import "NSPredicate+MGLAdditions.h"
#import "NSURL+MGLAdditions.h"
#include <mbgl/map/map.hpp>
@@ -91,4 +93,25 @@
return attribution ? @(attribution->c_str()) : nil;
}
+- (NS_ARRAY_OF(id <MGLFeature>) *)featuresInSourceLayersWithIdentifiers:(NS_SET_OF(NSString *) *)sourceLayerIdentifiers predicate:(nullable NSPredicate *)predicate {
+
+ mbgl::optional<std::vector<std::string>> optionalSourceLayerIDs;
+ if (sourceLayerIdentifiers) {
+ __block std::vector<std::string> layerIDs;
+ layerIDs.reserve(sourceLayerIdentifiers.count);
+ [sourceLayerIdentifiers enumerateObjectsUsingBlock:^(NSString * _Nonnull identifier, BOOL * _Nonnull stop) {
+ layerIDs.push_back(identifier.UTF8String);
+ }];
+ optionalSourceLayerIDs = layerIDs;
+ }
+
+ mbgl::optional<mbgl::style::Filter> optionalFilter;
+ if (predicate) {
+ optionalFilter = predicate.mgl_filter;
+ }
+
+ std::vector<mbgl::Feature> features = self.rawSource->querySourceFeatures({ optionalSourceLayerIDs, optionalFilter });
+ return MGLFeaturesFromMBGLFeatures(features);
+}
+
@end