Mapbox GL

From OpenStreetMap Wiki
Jump to: navigation, search
Available languages — Mapbox GL
· Afrikaans · Alemannisch · aragonés · asturianu · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · Bân-lâm-gú · Basa Jawa · Basa Sunda · Baso Minangkabau · bosanski · brezhoneg · català · čeština · corsu · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · Kurdî · latviešu · Lëtzebuergesch · lietuvių · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk bokmål · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tiếng Việt · Türkçe · Vahcuengh · vèneto · Wolof · Yorùbá · Zazaki · српски / srpski · беларуская · български · қазақша · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · मराठी · हिन्दी · भोजपुरी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ‎ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 吴语 · 粵語 · 中文(繁體)‎ · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް
Mapbox GL
Screenshot of Mapbox GL
Author: Mapbox
Platforms: Android, iOS, Linux, macOS, Node.js, Qt, Unity, and Web
Version: Varies by platform
License: BSD
Source code:
Programming languages: AppleScript, C++, Java, JavaScript, Objective-C, and Swift

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 also powers the Mapbox Static API, which produces static map images on the server side for situations where interactivity is unnecessary or impractical.

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 GL JS Web JavaScript Download
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-”
node-mapbox-gl-native Node.js JavaScript Look for “node-”

The Qt Location API in Qt 5.9 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 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 23:30, 27 April 2017 (UTC).

Feature JS Android iOS macOS Qt node.js
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
Custom styles yes yes yes yes yes yes
High-resolution rendering (Retina) yes yes yes yes yes yes
Continuous zooming yes yes yes yes yes yes
Rotation yes yes yes yes yes yes
Perspective (tilt, pitch) yes yes yes yes yes yes
3D building extrusion yes Unreleased
Styleable DEM terrain In progress In progress
Viewport animation yes yes yes yes yes N/A
Multitouch gestures partial yes yes yes yes N/A
Keyboard shortcuts yes yes No yes N/A N/A
Markers (point annotations) yes yes yes yes yes no
Marker views (view-backed annotations) yes yes yes No no no
Marker keyframe animation no yes yes No no N/A
Shape overlays (shape annotations) no yes yes yes yes no
Arbitrary GeoJSON yes yes yes yes yes yes
GeoJSON point clustering yes yes yes yes no yes
Popups (callouts, popovers, info windows) yes yes yes yes no N/A
Tooltips no N/A N/A yes no N/A
Georeferenced images yes No
Embedded video 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
Telemetry no Optional Optional no no no
Offline maps no yes yes yes yes no
WMS yes yes yes yes yes yes
TMS yes yes yes yes yes yes
Attribution control yes yes yes yes yes no
Scale control yes In progress In progress no no no
Localized UI no no yes yes no N/A
Bidirectional (right-to-left) text Optional yes yes yes yes yes
Complex text shaping Optional[a 1] partial[a 1] partial[a 1] partial[a 1] partial[a 1] partial[a 1]
Vertical CJK text yes yes yes yes Unreleased yes
Data-driven styling (property functions) yes yes yes yes yes yes[a 2]
Style introspection (runtime styling) yes yes yes yes partial yes
Data introspection (feature eventing, feature querying) yes yes yes yes no partial[a 3]
Screenreader support (accessibility) no yes yes No no N/A
Printing no yes No yes no N/A
IDE integration (code completion, documentation) no yes yes yes yes no
Dash docset no No yes yes no no
  1. 1.0 1.1 1.2 1.3 1.4 1.5 Arabic and Hebrew only.
  2. Data-driven styling at runtime is not yet supported.
  3. Queries rendered features only. Source feature querying is not yet implemented.

You can track the effort to ensure feature parity between the various platforms:

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


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.

External links