iOS SDK

API Reference

On This Page

MGLMultiPoint

@interface MGLMultiPoint : MGLShape

The MGLMultiPoint class is an abstract superclass used to define shapes composed of multiple vertices.

Create instances of MGLPolyline or MGLPolygon in order to use properties of MGLMultiPoint. Do not create instances of MGLMultiPoint directly and do not create your own subclasses of this class. You can use the method and properties of this class to access information about the vertices of the line or polygon.

Do not confuse MGLMultiPoint with MGLPointCollection, which represents a collection of related but disconnected points.

coordinates

The array of vertices associated with the shape.

This C array is a pointer to a structure inside the multipoint object, which may have a lifetime shorter than the multipoint object and will certainly not have a longer lifetime. Therefore, you should copy the C array if it needs to be stored outside of the memory context in which you use this property.

Declaration

Objective-C

@property (nonatomic, readonly)
NS_RETURNS_INNER_POINTER CLLocationCoordinate2D *coordinates;

Swift

var coordinates: UnsafeMutablePointer<CLLocationCoordinate2D> { get }

pointCount

The number of vertices in the shape.

Declaration

Objective-C

@property (nonatomic, readonly) NSUInteger pointCount;

Swift

var pointCount: UInt { get }

-getCoordinates:range:

Retrieves the vertices of part of the shape.

Declaration

Objective-C

- (void)getCoordinates:(nonnull CLLocationCoordinate2D *)coords
             range:(NSRange)range;

Swift

func getCoordinates(_ coords: UnsafeMutablePointer<CLLocationCoordinate2D>, range: NSRange)

Parameters

coords

On input, you must provide a C array of CLLocationCoordinate2D structures large enough to hold the desired number of coordinates. On output, this structure contains the requested coordinate data.

range

The range of vertices you want. The location field indicates the first vertex you are requesting, with 0 being the first vertex, 1 being the second vertex, and so on. The length field indicates the number of vertices you want. The array in coords must be large enough to accommodate the number of requested coordinates.

-setCoordinates:count:

Sets the shape’s vertices to the given C array of vertices.

Declaration

Objective-C

- (void)setCoordinates:(nonnull CLLocationCoordinate2D *)coords
             count:(NSUInteger)count;

Swift

func setCoordinates(_ coords: UnsafeMutablePointer<CLLocationCoordinate2D>, count: UInt)

Parameters

coords

The array of coordinates defining the shape. The data in this array is copied to the shape’s coordinates property.

count

The number of coordinates from the coords array.

-insertCoordinates:count:atIndex:

Inserts the given vertices into the shape.

If the shape is currently visible on the map as an annotation, it is redrawn immediately. If the shape is part of an MGLShapeSource object, you must explicitly set the MGLShapeSource.shape property in order for any style layers that use the source to be redrawn.

Declaration

Objective-C

- (void)insertCoordinates:(nonnull const CLLocationCoordinate2D *)coords
                count:(NSUInteger)count
              atIndex:(NSUInteger)index;

Swift

func insertCoordinates(_ coords: UnsafePointer<CLLocationCoordinate2D>, count: UInt, at index: UInt)

Parameters

coords

The array of coordinates to insert into the shape. The data in this array is copied to the shape’s coordinates property.

count

The number of items in the coords array.

index

The zero-based index at which the first coordinate in coords will appear in the coordinates property.

-appendCoordinates:count:

Appends the given vertices to the shape.

If the shape is currently visible on the map as an annotation, it is redrawn immediately. If the shape is part of an MGLShapeSource object, you must explicitly set the MGLShapeSource.shape property in order for any style layers that use the source to be redrawn.

Declaration

Objective-C

- (void)appendCoordinates:(nonnull const CLLocationCoordinate2D *)coords
                count:(NSUInteger)count;

Swift

func appendCoordinates(_ coords: UnsafePointer<CLLocationCoordinate2D>, count: UInt)

Parameters

coords

The array of coordinates to add to the shape. The data in this array is copied to the shape’s coordinates property.

count

The number of items in the coords array.

-replaceCoordinatesInRange:withCoordinates:

Replaces the vertices at the given range in the shape with the same number of vertices from a given C array.

If the shape is currently visible on the map as an annotation, it is redrawn immediately. If the shape is part of an MGLShapeSource object, you must explicitly set the MGLShapeSource.shape property in order for any style layers that use the source to be redrawn.

The number of coordinates in coords must be equal to the length of range. If you want to insert or delete one or more vertices, use the -replaceCoordinatesInRange:withCoordinates:count: method.

If range extends beyond the shape’s coordinates property, an NSRangeException is raised. If you want to append new vertices to the shape, use the -appendCoordinates:count: method.

Declaration

Objective-C

- (void)replaceCoordinatesInRange:(NSRange)range
              withCoordinates:
                  (nonnull const CLLocationCoordinate2D *)coords;

Swift

func replaceCoordinates(in range: NSRange, withCoordinates coords: UnsafePointer<CLLocationCoordinate2D>)

Parameters

range

The range of vertices to replace. The location field indicates the first vertex you are replacing, with 0 being the first vertex, 1 being the second vertex, and so on. The length field indicates the number of vertices to replace.

coords

The array of coordinates defining part of the shape. The data in this array is copied to the shape’s coordinates property.

-replaceCoordinatesInRange:withCoordinates:count:

Replaces the vertices at the given range in the shape with the specified number of vertices from a given C array.

If the shape is currently visible on the map as an annotation, it is redrawn immediately. If the shape is part of an MGLShapeSource object, you must explicitly set the MGLShapeSource.shape property in order for any style layers that use the source to be redrawn.

If count is greater than the length field of range, some vertices will effectively be inserted into the shape. On the other hand, if count is less than the length field of range, some vertices will effectively be removed.

If range extends beyond the shape’s coordinates property, an NSRangeException is raised. If you want to append new vertices to the shape, use the -appendCoordinates:count: method.

Declaration

Objective-C

- (void)replaceCoordinatesInRange:(NSRange)range
              withCoordinates:(nonnull const CLLocationCoordinate2D *)coords
                        count:(NSUInteger)count;

Swift

func replaceCoordinates(in range: NSRange, withCoordinates coords: UnsafePointer<CLLocationCoordinate2D>, count: UInt)

Parameters

range

The range of vertices to replace. The location field indicates the first vertex you are replacing, with 0 being the first vertex, 1 being the second vertex, and so on. The length field indicates the number of vertices to replace.

coords

The array of coordinates defining part of the shape. The data in this array is copied to the shape’s coordinates property.

count

The number of coordinates from the coords array to insert in place of the coordinates in range. The sum of range’s length and this count must not exceed the number of items currently in the coordinates property.

-removeCoordinatesInRange:

Removes the vertices at the given range from the shape.

If the shape is currently visible on the map as an annotation, it is redrawn immediately. If the shape is part of an MGLShapeSource object, you must explicitly set the MGLShapeSource.shape property in order for any style layers that use the source to be redrawn.

If range extends beyond the shape’s coordinates property, an NSRangeException is raised.

Declaration

Objective-C

- (void)removeCoordinatesInRange:(NSRange)range;

Swift

func removeCoordinates(in range: NSRange)

Parameters

range

The range of vertices to remove. The location field indicates the first vertex you are removing, with 0 being the first vertex, 1 being the second vertex, and so on. The length field indicates the number of vertices to remove.