diff options
author | Ivo van Dongen <info@ivovandongen.nl> | 2017-03-05 14:12:37 -0800 |
---|---|---|
committer | Jesse Bounds <jesse@rebounds.net> | 2017-03-10 11:08:32 -0800 |
commit | a7fd788b5d5d7734666758320235f14be8187179 (patch) | |
tree | 5799cc0159590c88e02481b60eac9db9202956d6 /platform/darwin/src/MGLVectorSource.mm | |
parent | 517659b1b44a4e31e1035d4da9c444380454ad58 (diff) | |
download | qtlocation-mapboxgl-a7fd788b5d5d7734666758320235f14be8187179.tar.gz |
[macos, ios] query source features
Diffstat (limited to 'platform/darwin/src/MGLVectorSource.mm')
-rw-r--r-- | platform/darwin/src/MGLVectorSource.mm | 23 |
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 |