When opening many maps and sharing the same filesource: - Say we open around 30 maps and they all have the same style. - They will all request the same sprite.json, but Qt filesource will restrict simultaneous request to 20. - Mapbox GL will send some sprite.json to the filesource and queue some internally along with other requests. - When the first sprite.json arrives and the Qt filesource calls the callback, Mapbox GL will synchronously push queued requests to the Qt filesource when a request is handled. - We are walking a QVector dispatching sprite.json requests, but more requests get added to this QVector while we are walking it using an iterator. - That corrupts the iterator and we get a crash. The fix is simple, just pop items from the QVector until it is empty instead of using iterators.
Mapbox GL Native
A library for embedding interactive, customizable vector maps into native applications on multiple platforms. 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 GL JS is the WebGL-based counterpart, designed for use on the Web.
The Mapbox GL ecosystem
This repository hosts the cross-platform Mapbox GL Native library, plus convenient SDKs for several platforms. The cross-platform library comes with a GLFW-based demo application for Ubuntu Linux and macOS. The SDKs target the usual languages on their respective platforms:
| SDK | Languages | Build status |
|---|---|---|
| Mapbox GL Native | C++14 | |
| Mapbox Maps SDK for Android | Java | |
| Mapbox Maps SDK for iOS | Objective-C or Swift | |
| Mapbox Maps SDK for macOS | Objective-C, Swift, or AppleScript | |
| node-mapbox-gl-native | Node.js | |
| Mapbox Maps SDK for Qt | C++03 |
Additional Mapbox GL Native–based libraries for hybrid applications are developed outside of this repository:
| Toolkit | Android | iOS | Developer |
|---|---|---|---|
| React Native (npm) | ✅ | ✅ | Mapbox |
| NativeScript (npm) | ✅ | ✅ | Telerik |
If your platform or hybrid application framework isn’t listed here, consider embedding Mapbox GL JS using the standard Web capabilities on your platform.
License
Mapbox GL Native is licensed under the 3-Clause BSD license. The licenses of its dependencies are tracked via FOSSA: