| Mapbox GL|
|Platforms:||Android, iOS, Linux, macOS, Node.js, Qt, Unity, and Web|
|Version:||Varies by platform|
Embed customizable, interactive vector maps in Web, mobile, and desktop applications
Mapbox GL is a suite of open-source libraries developed by Mapbox for embedding customizable slippy maps in Web, mobile, and desktop applications. There is also a library for building server-side or command-line rendering tools.
Mapbox GL takes stylesheets that conform to the Mapbox Style Specification, applies them to vector tiles that conform to the Mapbox Vector Tile Specification via TileJSON manifests, and renders them dynamically using OpenGL for high performance. By default, Mapbox GL displays Mapbox Streets vector tiles based on OpenStreetMap data. The developer can choose among several Mapbox-designed styles or design a custom style in the graphical style editor of Mapbox Studio.
On mobile platforms, the Mapbox Telemetry component uses the device's location data to facilitate improvements to OpenStreetMap data.
Mapbox GL powers the Mapbox Static API, which produces static map images on the server side for situations where interactivity is unnecessary or impractical. The Mapbox iOS SDK is the basis of the Mapbox Navigation SDK for iOS.
Mapbox GL libraries
The following libraries are officially supported by Mapbox, except for the macOS SDK. The macOS SDK is community-maintained, although it shares the majority of its code with the Mapbox-developed iOS SDK.
|Library||Platform||Target languages||Latest release|
|Mapbox Android SDK||Android||Java||Look for “android-”|
|Mapbox iOS SDK||iOS||Objective-C, Swift, Interface Builder||Look for “ios-”|
|Mapbox macOS SDK||macOS||Objective-C, Swift, Interface Builder, AppleScript||Look for “macos-”|
|Mapbox Qt SDK||Qt||C++03, QML||Look for “qt-”|
The Qt Location API in Qt 5.9 and the Qt Automotive Suite includes a Mapbox GL geoservices plugin based on the Mapbox Qt SDK.
Some compatibility libraries for hybrid application toolkits are contributed by Telerik and other members of the Mapbox developer community:
The Mapbox GL–powered Mapbox Static API is available through the following client-side libraries:
- Mapbox Java Services (
com.mapbox.services.api.staticimagepackage) in Java SE and on Android
- MapboxStatic.swift in Swift, Objective-C, and AppleScript on iOS, macOS, tvOS, and watchOS
Mapbox GL's feature set varies by platform. In general, rendering features are added to Mapbox GL JS first then ported to the native SDKs, while smartphone-centric features tend to be specific to the native SDKs.
This table was last updated 18:12, 5 September 2017 (UTC).
|OSM base map||yes||yes||yes||yes||yes||yes|
|Terrain base map||yes||yes||yes||yes||yes||yes|
|Satellite base map||yes||yes||yes||yes||yes||yes|
|High-resolution rendering (Retina)||yes||yes||yes||yes||yes||yes|
|Perspective (tilt, pitch)||yes||yes||yes||yes||yes||yes|
|Localized labels||yes[a 1]||In progress[a 2]||yes||Unreleased||no[a 3]||no[a 3]|
|3D building extrusion||yes||yes||yes||yes||Unreleased|
|Styleable DEM terrain||In progress||In progress|
|Heat maps||In progress||no|
|Markers (point annotations)||yes||yes||yes||yes||yes||no|
|Marker views (view-backed annotations)||yes||yes[a 4]||yes||No||no||no|
|Marker keyframe animation||no||yes[a 4]||yes||No||no||N/A|
|Shape overlays (shape annotations)||no||yes||yes||yes||yes||no|
|GeoJSON point clustering||yes||yes||yes||yes||no||yes|
|Popups (callouts, popovers, info windows)||yes||yes||yes||yes||no||N/A|
|User location (user dot)||partial||yes||yes||No||no||N/A|
|Customizable user dot||yes||yes||yes||no||no||N/A|
|User location tracking (GPS tracking)||In progress||yes||yes||N/A||N/A||N/A|
|Scale control||yes||In progress||yes||no||no||no|
|Bidirectional (right-to-left) text||Optional||yes||yes||yes||yes||yes|
|Complex text shaping||Optional[a 5]||partial[a 5]||partial[a 5]||partial[a 5]||partial[a 5]||partial[a 5]|
|Vertical CJK text||yes||yes||yes||yes||Unreleased||yes|
|Data-driven styling (property functions)||yes||yes||yes||yes||yes||yes[a 6]|
|Style introspection (runtime styling)||yes||yes||yes||yes||partial||yes|
|Data introspection (feature eventing, feature querying)||yes||yes||yes||yes||no||partial[a 7]|
|Screenreader support (accessibility)||no||yes||yes||No||no||N/A|
|Text scaling (Dynamic Type)||no||no||In progress||no||no|
|IDE integration (code completion, documentation)||no||yes||yes||yes||yes||no|
- Via the Mapbox GL Language plugin.
- Via a plugin.
- No built-in option, but a specific language can be specified by the style or application using runtime styling.
- Soon to be deprecated.
- Arabic and Hebrew only.
- Data-driven styling at runtime is not yet supported.
- Queries rendered features only. Source feature querying is not yet implemented.
You can track the effort to ensure feature parity between the various platforms:
- Features in the native SDKs but not GL JS
- Features in GL JS but not the native SDKs
- Features in mapbox.js but not GL JS
- Features in the iOS SDK but not in the macOS SDK
The GL JS roadmap lists current and upcoming priorities for Mapbox GL.
Originally, Mapbox developed raster map libraries: mapbox.js for the Web; the Mapbox iOS SDK, based on Route-Me; MBXMapKit, based on Apple’s MapKit framework, also for iOS; and the Mapbox Android SDK. Over time, Mapbox has deprecated these libraries in favor of vector map libraries.
Mapbox GL JS was introduced in August 2014. An Android port began in January 2014, followed by a preview of an iOS port that June. Mapbox GL for iOS officially launched in May 2015 before being renamed “Mapbox iOS SDK”. The Mapbox Android SDK launched in October 2015. The Mapbox Qt SDK and Mapbox OS X SDK launched in May 2016; the latter was renamed “Mapbox macOS SDK”. In June 2017, the Mapbox Qt SDK was incorporated into Qt 5.9 and the Qt Automotive Suite as the “Qt Location Mapbox GL plugin”. 
The Mapbox Android and iOS SDKs feature Mapbox Telemetry, a component that sends the user's location to Mapbox servers in anonymized, aggregated form. This data is either collected at all times or while the application is in use, depending on the application's configuration. Mapbox uses the collected location data for the purpose of:
- Helping the Mapbox Data Team target improvements to OpenStreetMap where they're most needed. For example, if a high volume of location data points indicates that drivers consistently avoid turning left at a given intersection, the team can enter a turn restriction into OpenStreetMap with greater confidence.
- Powering OpenStreetMap-based maps that indicate traffic congestion and OSRM-powered directions that avoid traffic congestion, helping OpenStreetMap-based maps achieve feature parity with maps based on proprietary data sources.
- Powering a dashboard in Mapbox Studio, accessible to application developers, that visualizes the regions and cities where their users tend to use the application. The developer can use this information to tailor the application to popular areas, for example by making these areas of the map available for download offline.
The SDKs provide an option for privacy-conscious end users to turn off Mapbox Telemetry at any time. More information about Mapbox Telemetry, including how Mapbox uses this data while protecting users' privacy and minimizing battery usage.