diff options
m--------- | src/3rdparty/mapbox-gl-native | 0 | ||||
-rw-r--r-- | src/plugins/geoservices/geoservices.pro | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp | 34 | ||||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h | 1 | ||||
-rw-r--r-- | src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp | 1 |
5 files changed, 26 insertions, 12 deletions
diff --git a/src/3rdparty/mapbox-gl-native b/src/3rdparty/mapbox-gl-native -Subproject 9ecbe3642fb4a53b558598239b59bf1d0224c25 +Subproject 1c633072fcea7ad153ab6f8ec40dd72d83541ea diff --git a/src/plugins/geoservices/geoservices.pro b/src/plugins/geoservices/geoservices.pro index 459897a8..07c34798 100644 --- a/src/plugins/geoservices/geoservices.pro +++ b/src/plugins/geoservices/geoservices.pro @@ -7,7 +7,7 @@ qtConfig(concurrent) { } qtConfig(opengl):qtConfig(c++14):!win32|mingw:!qnx { - !exists(../../3rdparty/mapbox-gl-native/CMakeLists.txt) { + !exists(../../3rdparty/mapbox-gl-native/mapbox-gl-native.pro) { warning("Submodule mapbox-gl-native does not exist. Run 'git submodule update --init' on qtlocation.") } else { SUBDIRS += mapboxgl ../../3rdparty/mapbox-gl-native diff --git a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp index c6972b07..f79f0a38 100644 --- a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp +++ b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange.cpp @@ -54,7 +54,7 @@ QString formatPropertyName(QString *name) bool isImmutableProperty(const QString &name) { - return name == QStringLiteral("type") || name == QStringLiteral("layer") || name == QStringLiteral("class"); + return name == QStringLiteral("type") || name == QStringLiteral("layer"); } QString getId(QDeclarativeGeoMapItemBase *mapItem) @@ -288,7 +288,7 @@ QMapboxGLStyleSetPaintProperty::QMapboxGLStyleSetPaintProperty(const QString& la void QMapboxGLStyleSetPaintProperty::apply(QMapboxGL *map) { - map->setPaintProperty(m_layer, m_property, m_value, m_class); + map->setPaintProperty(m_layer, m_property, m_value); } QList<QSharedPointer<QMapboxGLStyleChange>> QMapboxGLStyleSetPaintProperty::fromMapParameter(QGeoMapParameter *param) @@ -313,7 +313,6 @@ QList<QSharedPointer<QMapboxGLStyleChange>> QMapboxGLStyleSetPaintProperty::from paint->m_layer = param->property("layer").toString(); paint->m_property = formatPropertyName(&name); - paint->m_class = param->property("class").toString(); changes << QSharedPointer<QMapboxGLStyleChange>(paint); } @@ -399,15 +398,30 @@ QSharedPointer<QMapboxGLStyleChange> QMapboxGLStyleAddLayer::fromMapParameter(QG Q_ASSERT(param->type() == "layer"); auto layer = new QMapboxGLStyleAddLayer(); - layer->m_params[QStringLiteral("id")] = param->property("name"); - layer->m_params[QStringLiteral("source")] = param->property("source"); - layer->m_params[QStringLiteral("type")] = param->property("layerType"); - if (param->property("sourceLayer").isValid()) { - layer->m_params[QStringLiteral("source-layer")] = param->property("sourceLayer"); - } + static const QStringList layerProperties = QStringList() + << QStringLiteral("name") << QStringLiteral("layerType") << QStringLiteral("before"); - layer->m_before = param->property("before").toString(); + // Offset objectName and type properties. + for (int i = 2; i < param->metaObject()->propertyCount(); ++i) { + QString name = param->metaObject()->property(i).name(); + QVariant value = param->property(name.toLatin1()); + + switch (layerProperties.indexOf(name)) { + case -1: + layer->m_params[formatPropertyName(&name)] = value; + break; + case 0: // name + layer->m_params[QStringLiteral("id")] = value; + break; + case 1: // layerType + layer->m_params[QStringLiteral("type")] = value; + break; + case 2: // before + layer->m_before = value.toString(); + break; + } + } return QSharedPointer<QMapboxGLStyleChange>(layer); } diff --git a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h index 9164591a..aa81d89f 100644 --- a/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h +++ b/src/plugins/geoservices/mapboxgl/qmapboxglstylechange_p.h @@ -102,7 +102,6 @@ private: QString m_layer; QString m_property; QVariant m_value; - QString m_class; }; class QMapboxGLStyleAddLayer : public QMapboxGLStyleChange diff --git a/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp b/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp index d338a51a..3f31997c 100644 --- a/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp +++ b/src/plugins/geoservices/mapboxgl/qsgmapboxglnode.cpp @@ -65,6 +65,7 @@ void QSGMapboxGLTextureNode::resize(const QSize &size, qreal pixelRatio) m_map->resize(minSize, fbSize); m_fbo.reset(new QOpenGLFramebufferObject(fbSize, QOpenGLFramebufferObject::CombinedDepthStencil)); + m_map->setFramebufferObject(m_fbo->handle()); QSGPlainTexture *fboTexture = static_cast<QSGPlainTexture *>(texture()); if (!fboTexture) |