The Mapbox iOS SDK is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 8.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the Mapbox Style Specification, applies them to vector tiles that conform to the Mapbox Vector Tile Specification, and renders them using OpenGL.

Styles

Added support for data-driven styling in the form of source and composite style functions. MGLStyleFunction is now an abstract class, with MGLCameraStyleFunction providing the behavior of MGLStyleFunction in previous releases. New MGLStyleFunction subclasses allow you to vary a style attribute by the values of attributes of features in the source. (#7596)

Added methods to MGLShapeSource and MGLVectorSource for querying features loaded by the source, whether or not they’re visible on the map. (#8263)

Added circleStrokeColor, circleStrokeWidth, and circleStrokeOpacity properties to MGLCircleStyleLayer and support for corresponding properties in style JSON files. (#7356)

Point-placed labels in symbol style layers are now placed at more optimal locations within polygons. (#7465)

Fixed flickering that occurred when manipulating a style layer. (#7616)

Symbol style layers can now render point collections (known as multipoints in GeoJSON). (#7445)

Added a transition property to MGLStyle to customize the timing of changes to style layers. (#7711)

Added properties to MGLStyleLayer subclasses to customize the timing of transitions between values of individual attributes. (#8225)

Fixed an issue causing lines and text labels toward the top of the map view to appear blurry when the map is tilted. (#7444)

Fixed an issue in which a vector style layer predicate involving the $id key path would exclude all features from the layer. (#7989, #7971)

Fixed an issue causing vector style layer predicates to be evaluated as if each feature had a $type attribute of 1, 2, or 3. The $type key path can now be compared to Point, LineString, or Polygon, as described in the documentation. (#7971)

When setting an MGLShapeSource’s shape to an MGLFeature instance, any UIColor attribute value is now converted to the equivalent CSS string representation for use with MGLInterpolationModeIdentity in style functions. (#8025)

An exception is no longer thrown if layers or sources are removed from a style before they are added. (#7962)

Renamed MGLStyleConstantValue to MGLConstantStyleValue. For compatibility with previous releases, MGLStyleConstantValue is now an alias of MGLConstantStyleValue. (#8090)

Fixed a crash that could occur when switching styles after adding an MGLSource to the style. (#8298)

Annotations and user interaction

Added a method to MGLMapViewDelegate, -mapView:shouldChangeFromCamera:toCamera:, that you can implement to restrict which parts the user can navigate to using gestures. (#5584)

Annotations are no longer deselected when the map is panned or zoomed, even if the annotation moves out of the visible bounds. (#8022)

Changing the coordinates of a point annotation no longer deselects the annotation. (#8269)

Fixed an issue that could cause a crash when point annotations were added and removed while simultaneously querying source features. (#8374)

Fixed an issue preventing MGLMapView from adding a polyline annotation with the same coordinates as a polygon annotation. (#8355)

Fixed an issue where translucent, non-view-backed point annotations along tile boundaries would be drawn darker than expected. (#6832)

Enabled the one-finger zoom gesture on iPad. To execute this gesture, tap twice; on second tap, hold your finger on the map and pan up to zoom in, or down to zoom out. (#8379)

Networking and offline maps

Offline pack notifications are now posted by MGLOfflinePack instances instead of the shared MGLOfflineStorage object. For backwards compatibility, the userInfo dictionary still indicates the pack’s state and progress. (#7952)