forked from mapbox/mapbox-gl-native-ios
-
Notifications
You must be signed in to change notification settings - Fork 1
/
MGLCluster.h
53 lines (39 loc) · 1.44 KB
/
MGLCluster.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#import "MGLFoundation.h"
@protocol MGLFeature;
NS_ASSUME_NONNULL_BEGIN
/**
An `NSUInteger` constant used to indicate an invalid cluster identifier.
This indicates a missing cluster feature.
*/
FOUNDATION_EXTERN MGL_EXPORT const NSUInteger MGLClusterIdentifierInvalid;
/**
A protocol that feature subclasses (i.e. those already conforming to
the `MGLFeature` protocol) conform to if they represent clusters.
Currently the only class that conforms to `MGLCluster` is
`MGLPointFeatureCluster` (a subclass of `MGLPointFeature`).
To check if a feature is a cluster, check conformity to `MGLCluster`, for
example:
```swift
let shape = try! MGLShape(data: clusterShapeData, encoding: String.Encoding.utf8.rawValue)
guard let pointFeature = shape as? MGLPointFeature else {
throw ExampleError.unexpectedFeatureType
}
// Check for cluster conformance
guard let cluster = pointFeature as? MGLCluster else {
throw ExampleError.featureIsNotACluster
}
// Currently the only supported class that conforms to `MGLCluster` is
// `MGLPointFeatureCluster`
guard cluster is MGLPointFeatureCluster else {
throw ExampleError.unexpectedFeatureType
}
```
*/
MGL_EXPORT
@protocol MGLCluster <MGLFeature>
/** The identifier for the cluster. */
@property (nonatomic, readonly) NSUInteger clusterIdentifier;
/** The number of points within this cluster */
@property (nonatomic, readonly) NSUInteger clusterPointCount;
@end
NS_ASSUME_NONNULL_END