iOS SDK

API Reference

On This Page

Style Primitives

MGLFeature

The MGLFeature protocol is used to provide details about geographic features contained in an MGLShapeSource or MGLVectorTileSource object. Each concrete subclass of MGLShape in turn has a subclass that conforms to this protocol. A feature object associates a shape with an optional identifier and attributes.

You can add custom data to display on the map by creating feature objects and adding them to an MGLShapeSource using the -[MGLShapeSource initWithIdentifier:shape:options:] method or MGLShapeSource.shape property.

In addition to adding data to the map, you can also extract data from the map: -[MGLMapView visibleFeaturesAtPoint:] and related methods return feature objects that correspond to features in the source. This enables you to inspect the properties of features in vector tiles loaded by MGLVectorTileSource objects. You also reuse these feature objects as overlay annotations.

While it is possible to add MGLFeature-conforming objects to the map as annotations using -[MGLMapView addAnnotations:] and related methods, doing so has trade-offs:

  • Features added as annotations will not have identifier or attributes properties when used with feature querying.

  • Features added as annotations become interactive. Taps and selection can be handled in -[MGLMapViewDelegate mapView:didSelectAnnotation:].

See more

Declaration

Objective-C

@protocol MGLFeature <MGLAnnotation>

Swift

protocol MGLFeature : MGLAnnotation

MGLPointFeature

An MGLPointFeature object associates a point shape with an optional identifier and attributes.

Declaration

Objective-C

@interface MGLPointFeature : MGLPointAnnotation <MGLFeature>

Swift

class MGLPointFeature : MGLPointAnnotation, MGLFeature

MGLPointFeatureCluster

An MGLPointFeatureCluster object associates a point shape (with an optional identifier and attributes) and represents a point cluster.

See

MGLCluster

Declaration

Objective-C

@interface MGLPointFeatureCluster : MGLPointFeature <MGLCluster>

Swift

class MGLPointFeatureCluster : MGLPointFeature, MGLCluster

MGLPolygonFeature

An MGLPolygonFeature object associates a polygon shape with an optional identifier and attributes.

Declaration

Objective-C

@interface MGLPolygonFeature : MGLPolygon <MGLFeature>

Swift

class MGLPolygonFeature : MGLPolygon, MGLFeature

MGLPolylineFeature

An MGLPolylineFeature object associates a polyline shape with an optional identifier and attributes.

A polyline feature is known as a LineString feature in GeoJSON.

Declaration

Objective-C

@interface MGLPolylineFeature : MGLPolyline <MGLFeature>

Swift

class MGLPolylineFeature : MGLPolyline, MGLFeature

MGLMultiPolygonFeature

An MGLMultiPolygonFeature object associates a multipolygon shape with an optional identifier and attributes.

Declaration

Objective-C

@interface MGLMultiPolygonFeature : MGLMultiPolygon <MGLFeature>

Swift

class MGLMultiPolygonFeature : MGLMultiPolygon, MGLFeature

MGLMultiPolylineFeature

An MGLMultiPolylineFeature object associates a multipolyline shape with an optional identifier and attributes.

A multipolyline feature is known as a MultiLineString feature in GeoJSON.

Declaration

Objective-C

@interface MGLMultiPolylineFeature : MGLMultiPolyline <MGLFeature>

Swift

class MGLMultiPolylineFeature : MGLMultiPolyline, MGLFeature

MGLPointCollectionFeature

An MGLPointCollectionFeature object associates a point collection with an optional identifier and attributes.

A point collection feature is known as a MultiPoint feature in GeoJSON.

Declaration

Objective-C

@interface MGLPointCollectionFeature : MGLPointCollection <MGLFeature>

Swift

class MGLPointCollectionFeature : MGLPointCollection, MGLFeature

MGLShapeCollectionFeature

An MGLShapeCollectionFeature object associates a shape collection with an optional identifier and attributes.

MGLShapeCollectionFeature is most commonly used to add multiple shapes to a single MGLShapeSource. Configure the appearance of an MGLSource’s shape collection collectively using an MGLSymbolStyleLayer object, or use multiple instances of MGLCircleStyleLayer, MGLFillStyleLayer, and MGLLineStyleLayer to configure the appearance of each kind of shape inside the collection.

A shape collection feature is known as a feature collection in GeoJSON.

Declaration

Objective-C

@interface MGLShapeCollectionFeature : MGLShapeCollection <MGLFeature>

Swift

class MGLShapeCollectionFeature : MGLShapeCollection, MGLFeature

MGLEmptyFeature

An MGLEmptyFeature object associates an empty shape with an optional identifier and attributes.

Declaration

Objective-C

@interface MGLEmptyFeature : MGLShape <MGLFeature>

Swift

class MGLEmptyFeature : MGLShape, MGLFeature