78 lines
3.0 KiB
Markdown
78 lines
3.0 KiB
Markdown
# Mapbox Qt SDK
|
|
|
|
[](https://travis-ci.org/mapbox/mapbox-gl-native/builds)
|
|
[](https://www.bitrise.io/app/96cfbc97e0245c22)
|
|
|
|
Provides [Qt](http://www.qt.io/) example applications and APIs via `QMapboxGL`
|
|
and `QQuickMapboxGL`:
|
|
|
|
**QMapboxGL** - implements a C++03x-conformant API that has been tested from Qt
|
|
4.7 onwards (Travis CI currently builds it using both Qt 4 and Qt 5).
|
|
|
|
**QQuickMapboxGL** - implements a Qt Quick (QML) item that can be added to a
|
|
scene. Because `QQuickFramebufferObject` has been added in Qt version 5.2, we
|
|
support this API from this version onwards.
|
|
|
|

|
|
|
|
### Developing
|
|
|
|
[Qt supports many platforms](https://www.qt.io/qt-framework/#section-4) - so far
|
|
we have been testing our code on Linux and macOS desktops, as well as embedded
|
|
devices such as Raspberry Pi 3.
|
|
|
|
If you need to maintain backwards compatibility with prior releases of
|
|
Qt, chose `QMapboxGL`. Otherwise, go for `QQuickMapboxGL`.
|
|
|
|
Both `QMapboxGL` and `QQuickMapboxGL` requires a [Mapbox access
|
|
token](https://www.mapbox.com/help/define-access-token/) at runtime - you need
|
|
to provide it by setting the environment variable `MAPBOX_ACCESS_TOKEN`:
|
|
|
|
export MAPBOX_ACCESS_TOKEN=MYTOKEN
|
|
|
|
#### Using QMapboxGL
|
|
|
|
`QMapboxGL` is a [QObject](http://doc.qt.io/qt-5/qobject.html) - [MapWindow](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/qt/app/mapwindow.hpp) provides an example [QGLWidget](http://doc.qt.io/qt-5/qglwidget.html) that contains a `QMapboxGL` object. If you use `QMapboxGL` in non-standard Qt widgets, make sure to initialize the GL extensions required by Mapbox whenever possible:
|
|
|
|
QMapbox::initializeGLExtensions();
|
|
|
|
#### Linux
|
|
|
|
For Linux (Ubuntu) desktop, together with these [build
|
|
instructions](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/linux#build),
|
|
you also need:
|
|
|
|
sudo apt-get install qt5-default qtlocation5-dev qtpositioning5-dev \
|
|
qml-module-qtquick2 qml-module-qtpositioning qml-module-qtgraphicaleffects \
|
|
qml-module-qtquick-layouts qml-module-qtquick-controls
|
|
|
|
#### macOS
|
|
|
|
For macOS desktop, you can install Qt 5 via [Homebrew](http://brew.sh):
|
|
|
|
brew install qt5
|
|
|
|
Since Homebrew doesn't add Qt to the path, you'll have to do that manually before running any Make target:
|
|
|
|
export PATH=/usr/local/opt/qt5:$PATH
|
|
|
|
We provide the following build targets for our Qt SDK:
|
|
|
|
### Build instructions
|
|
|
|
#### Qt library
|
|
|
|
```make qt-lib``` to build the `qmapboxgl` shared library. Public API headers
|
|
can be found in [platform/qt/include](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/qt/include) folder.
|
|
|
|
#### QMapboxGL example application
|
|
|
|
```make qt-app``` or ```make run-qt-app``` to run the application at the end of
|
|
build.
|
|
|
|
#### QQuickMapboxGL example application:
|
|
|
|
```make qt-qml-app``` or ```make run-qt-qml-app``` to run the application at the
|
|
end of build.
|