summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxylosper <darklin20@gmail.com>2019-01-31 12:41:10 +0900
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2019-02-01 16:34:35 +0200
commitb1ee903dc4e9b1855e89116b203b40b43a6422fa (patch)
treed817d7e9fc93f69cb4ed855a1e6dc18115c199ae
parent6b2f17191baccf7ff17ee912bdf04fb44bea6d52 (diff)
downloadqtlocation-mapboxgl-b1ee903dc4e9b1855e89116b203b40b43a6422fa.tar.gz
[qt] Add example of feature collection data for GeoJSON source
The example shows that both of QList<QMapbox::Feature> and QVector<QMapbox::Feature> can be used as feature collection data for GeoJSON layer.
-rw-r--r--platform/qt/app/mapwindow.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/platform/qt/app/mapwindow.cpp b/platform/qt/app/mapwindow.cpp
index 551af4630b..47dc1c8190 100644
--- a/platform/qt/app/mapwindow.cpp
+++ b/platform/qt/app/mapwindow.cpp
@@ -346,6 +346,60 @@ void MapWindow::keyPressEvent(QKeyEvent *ev)
}
}
break;
+ case Qt::Key_6: {
+ if (m_map->layerExists("innerCirclesLayer") || m_map->layerExists("outerCirclesLayer")) {
+ m_map->removeLayer("innerCirclesLayer");
+ m_map->removeLayer("outerCirclesLayer");
+ m_map->removeSource("innerCirclesSource");
+ m_map->removeSource("outerCirclesSource");
+ } else {
+ auto makePoint = [&] (double dx, double dy, const QString &color) {
+ auto coordinate = m_map->coordinate();
+ coordinate.first += dx;
+ coordinate.second += dy;
+ return QMapbox::Feature{QMapbox::Feature::PointType,
+ {{{coordinate}}}, {{"color", color}}, {}};
+ };
+
+ // multiple features by QVector<QMapbox::Feature>
+ QVector<QMapbox::Feature> inner{
+ makePoint(0.001, 0, "red"),
+ makePoint(0, 0.001, "green"),
+ makePoint(0, -0.001, "blue")
+ };
+
+ m_map->addSource("innerCirclesSource",
+ {{"type", "geojson"}, {"data", QVariant::fromValue(inner)}});
+ m_map->addLayer({
+ {"id", "innerCirclesLayer"},
+ {"type", "circle"},
+ {"source", "innerCirclesSource"}
+ });
+
+ // multiple features by QList<QMapbox::Feature>
+ QList<QMapbox::Feature> outer{
+ makePoint( 0.002, 0.002, "cyan"),
+ makePoint(-0.002, 0.002, "magenta"),
+ makePoint( 0.002, -0.002, "yellow"),
+ makePoint(-0.002, -0.002, "black")
+ };
+
+ m_map->addSource("outerCirclesSource",
+ {{"type", "geojson"}, {"data", QVariant::fromValue(outer)}});
+ m_map->addLayer({
+ {"id", "outerCirclesLayer"},
+ {"type", "circle"},
+ {"source", "outerCirclesSource"}
+ });
+
+ QVariantList getColor{"get", "color"};
+ m_map->setPaintProperty("innerCirclesLayer", "circle-radius", 10.0);
+ m_map->setPaintProperty("innerCirclesLayer", "circle-color", getColor);
+ m_map->setPaintProperty("outerCirclesLayer", "circle-radius", 15.0);
+ m_map->setPaintProperty("outerCirclesLayer", "circle-color", getColor);
+ }
+ }
+ break;
case Qt::Key_Tab:
m_map->cycleDebugOptions();
break;