summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeotiledmap.cpp
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2018-06-19 16:33:44 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2018-07-26 13:38:02 +0000
commiteca7cc8a260538fcccde97fe59d9580250600bf1 (patch)
tree6a87cc4391b1e0dbf65ee011d0314cfae4c8b19f /src/location/maps/qgeotiledmap.cpp
parentd6fc6ba0f84c4cda0ccc2e1250da4a68441dd6ba (diff)
downloadqtlocation-eca7cc8a260538fcccde97fe59d9580250600bf1.tar.gz
Introduce Map.visibleArea
This will allow moving the visible map area to a subregion of the viewport, allowing to maintain the desired visible region visible when overlaying controls on top of the map. Task-number: QTBUG-68966 Change-Id: Idf4b30f7c1e4062e5e1c0ddc01a31bc856c0bc0c Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/location/maps/qgeotiledmap.cpp')
-rw-r--r--src/location/maps/qgeotiledmap.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/location/maps/qgeotiledmap.cpp b/src/location/maps/qgeotiledmap.cpp
index a1231cf4..74346fdb 100644
--- a/src/location/maps/qgeotiledmap.cpp
+++ b/src/location/maps/qgeotiledmap.cpp
@@ -149,7 +149,8 @@ QGeoMap::Capabilities QGeoTiledMap::capabilities() const
{
return Capabilities(SupportsVisibleRegion
| SupportsSetBearing
- | SupportsAnchoringCoordinate);
+ | SupportsAnchoringCoordinate
+ | SupportsVisibleArea);
}
void QGeoTiledMap::setCopyrightVisible(bool visible)
@@ -353,6 +354,31 @@ void QGeoTiledMapPrivate::updateScene()
emit q->sgNodeChanged();
}
+void QGeoTiledMapPrivate::setVisibleArea(const QRectF &visibleArea)
+{
+ Q_Q(QGeoTiledMap);
+ const QRectF va = clampVisibleArea(visibleArea);
+ if (va == m_visibleArea)
+ return;
+
+ m_visibleArea = va;
+ m_geoProjection->setVisibleArea(va);
+
+ m_visibleTiles->setVisibleArea(va);
+ m_prefetchTiles->setVisibleArea(va);
+ m_mapScene->setVisibleArea(va);
+
+ if (m_copyrightVisible)
+ q->evaluateCopyrights(m_mapScene->visibleTiles());
+ updateScene();
+ q->sgNodeChanged();
+}
+
+QRectF QGeoTiledMapPrivate::visibleArea() const
+{
+ return m_visibleArea;
+}
+
void QGeoTiledMapPrivate::changeActiveMapType(const QGeoMapType mapType)
{
m_visibleTiles->setTileSize(m_cameraCapabilities.tileSize());