diff options
author | Jesse Bounds <jesse@rebounds.net> | 2017-01-11 16:05:38 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-11 16:05:38 -0800 |
commit | 6ad47cfbad038ee8330fece5da7438d084e67a68 (patch) | |
tree | 98aa48e9c2562791a310c30e5d107c4221f99c1e /platform/darwin/src/MGLShapeSource.mm | |
parent | 4332b3b9539e1c059b18c77ef6c0a9e6af44fe84 (diff) | |
download | qtlocation-mapboxgl-6ad47cfbad038ee8330fece5da7438d084e67a68.tar.gz |
[ios, macos] Add convenience initializers to shape source (#7665)
This adds two new convenience initializers to MGLShapeSource:
-initWithIdentifier:features:options: takes an array of shape objects
that conform to MGLFeature, inserts them in a shape collection feature
and creates a source with that shape. -initWithIdentifier:shapes:options
does the same but with concrete MGLShape objects that get added to
a shape collection.
Throw an exception if an shape source is created with the features
initializer but is sent an array of features that contains something
that is not actually an object that conforms to the feature protocol.
Updates to geojson data guide
Qualify APIs that take arrays of shapes that are features
Diffstat (limited to 'platform/darwin/src/MGLShapeSource.mm')
-rw-r--r-- | platform/darwin/src/MGLShapeSource.mm | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLShapeSource.mm b/platform/darwin/src/MGLShapeSource.mm index 0647236e80..50322f300c 100644 --- a/platform/darwin/src/MGLShapeSource.mm +++ b/platform/darwin/src/MGLShapeSource.mm @@ -56,6 +56,21 @@ const MGLShapeSourceOption MGLShapeSourceOptionSimplificationTolerance = @"MGLSh return self; } +- (instancetype)initWithIdentifier:(NSString *)identifier features:(NS_ARRAY_OF(MGLShape<MGLFeature> *) *)features options:(nullable NS_DICTIONARY_OF(MGLShapeSourceOption, id) *)options { + for (id <MGLFeature> feature in features) { + if (![feature conformsToProtocol:@protocol(MGLFeature)]) { + [NSException raise:NSInvalidArgumentException format:@"The object %@ included in the features argument does not conform to the MGLFeature protocol.", feature]; + } + } + MGLShapeCollectionFeature *shapeCollectionFeature = [MGLShapeCollectionFeature shapeCollectionWithShapes:features]; + return [self initWithIdentifier:identifier shape:shapeCollectionFeature options:options]; +} + +- (instancetype)initWithIdentifier:(NSString *)identifier shapes:(NS_ARRAY_OF(MGLShape *) *)shapes options:(nullable NS_DICTIONARY_OF(MGLShapeSourceOption, id) *)options { + MGLShapeCollection *shapeCollection = [MGLShapeCollection shapeCollectionWithShapes:shapes]; + return [self initWithIdentifier:identifier shape:shapeCollection options:options]; +} + - (instancetype)initWithRawSource:(mbgl::style::GeoJSONSource *)rawSource { return [super initWithRawSource:rawSource]; } |