Mapbox iOS SDK

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 7.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.

Mapbox iOS SDK screenshots

For setup information, check out the Mapbox iOS SDK homepage. For detailed usage instructions, read “First steps with the Mapbox iOS SDK” and consult the online examples. A full changelog is also available.

If you have any questions, please contact our support team. We welcome your bug reports and feature requests.

Changes in version 3.5.0


  • Added support for right-to-left text and Arabic ligatures in labels. (#6984, #7123)
  • Improved the line wrapping behavior of point-placed labels, especially labels written in Chinese and Japanese. (#6828, #7446)
  • Added Chinese (Simplified and Traditional), French, German, Japanese, Portuguese (Brazilian), Swedish, and Vietnamese localizations. (#7316, #7899, #7999)


  • 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 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 properties to MGLStyle to delay or animate changes to style layers. (#7711)
  • 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 incorrect interpolation of style functions in Boolean-typed style attributes. (#7526)
  • Removed support for the ref property in layers in style JSON files. (#7586)
  • Fixed an issue that collapsed consecutive newlines within text labels. (#7446)
  • Fixed artifacts when drawing particularly acute line joins. (#7786)
  • 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)

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)
  • Fixed a memory leak in MGLMapView. (#7956)
  • Fixed an issue that could prevent a cached style from appearing while the device is offline. (#7770)
  • Fixed an issue that could prevent a style from loading when reestablishing a network connection. (#7902)

Other changes

  • Fixed an issue where translucent, non-view-backed point annotations along tile boundaries would be drawn darker than expected. (#6832)
  • Fixed flickering that occurred when panning past the antimeridian. (#7574)
  • Added a MGLDistanceFormatter class for formatting geographic distances. (#7888)
  • Added a method to MGLMapViewDelegate, -mapView:shouldChangeFromCamera:toCamera:, that you can implement to restrict which parts the user can navigate to using gestures. (#5584)