summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLPolygon.h
blob: 57402326d5147127cc7197cbc58fd99ae005bab5 (plain)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

#import "MGLFoundation.h"
#import "MGLMultiPoint.h"
#import "MGLOverlay.h"

#import "MGLTypes.h"

NS_ASSUME_NONNULL_BEGIN

/**
 The `MGLPolygon` class represents a shape consisting of one or more points that
 define a closed polygon. The points are connected end-to-end in the order they
 are provided. The first and last points are connected to each other to create
 the closed shape.
 */
MGL_EXPORT
@interface MGLPolygon : MGLMultiPoint <MGLOverlay>

/**
 The array of polygons nested inside the receiver.
 
 The area occupied by any interior polygons is excluded from the overall shape.
 Interior polygons should not overlap. An interior polygon should not have
 interior polygons of its own.
 
 If there are no interior polygons, the value of this property is `nil`.
 */
@property (nonatomic, nullable, readonly) NS_ARRAY_OF(MGLPolygon *) *interiorPolygons;

/**
 Creates and returns an `MGLPolygon` object from the specified set of
 coordinates.
 
 @param coords The array of coordinates defining the shape. The data in this
    array is copied to the new object.
 @param count The number of items in the `coords` array.
 @return A new polygon object.
 */
+ (instancetype)polygonWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count;

/**
 Creates and returns an `MGLPolygon` object from the specified set of
 coordinates and interior polygons.
 
 @param coords The array of coordinates defining the shape. The data in this
    array is copied to the new object.
 @param count The number of items in the `coords` array.
 @param interiorPolygons An array of `MGLPolygon` objects that define regions
    excluded from the overall shape. If this array is `nil` or empty, the shape
    is considered to have no interior polygons.
 @return A new polygon object.
 */
+ (instancetype)polygonWithCoordinates:(const CLLocationCoordinate2D *)coords count:(NSUInteger)count interiorPolygons:(nullable NS_ARRAY_OF(MGLPolygon *) *)interiorPolygons;

@end

/**
 The `MGLMultiPolygon` class represents a shape consisting of one or more
 polygons that do not overlap. For example, you would use an `MGLMultiPolygon`
 object to represent an atoll together with an island in the atoll’s lagoon:
 the atoll itself would be one `MGLPolygon` object, while the inner island would
 be another.
 
 @note `MGLMultiPolygon` objects cannot be added to a map view using
    `-[MGLMapView addAnnotations:]` and related methods.
 */
MGL_EXPORT
@interface MGLMultiPolygon : MGLShape <MGLOverlay>

/**
 An array of polygons forming the multipolygon.
 */
@property (nonatomic, copy, readonly) NS_ARRAY_OF(MGLPolygon *) *polygons;

/**
 Creates and returns a multipolygon object consisting of the given polygons.
 
 @param polygons The array of polygons defining the shape.
 @return A new multipolygon object.
 */
+ (instancetype)multiPolygonWithPolygons:(NS_ARRAY_OF(MGLPolygon *) *)polygons;

@end

NS_ASSUME_NONNULL_END