summaryrefslogtreecommitdiffstats
path: root/src/location/maps
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-03-28 12:14:36 +0200
committerPaolo Angelelli <paolo.angelelli@qt.io>2017-03-28 14:06:10 +0000
commita4290fe50113dd170255dd1e24be546ae768533e (patch)
treef2655a83d18971d753bcdd6b5a74c8c07ef23052 /src/location/maps
parent93d174d276d208434b6615d73a7e9c805ea48ff9 (diff)
Fix for QGeoTiledMapPrivate::changeActiveMapType not setting tileSize
Change-Id: If3e920f4b4cb5bf6310914a258eb3f569de9a8ef Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/location/maps')
-rw-r--r--src/location/maps/qgeotiledmap.cpp3
-rw-r--r--src/location/maps/qgeotiledmapscene.cpp20
-rw-r--r--src/location/maps/qgeotiledmapscene_p.h2
3 files changed, 20 insertions, 5 deletions
diff --git a/src/location/maps/qgeotiledmap.cpp b/src/location/maps/qgeotiledmap.cpp
index 340bf0ad..85931efd 100644
--- a/src/location/maps/qgeotiledmap.cpp
+++ b/src/location/maps/qgeotiledmap.cpp
@@ -335,6 +335,9 @@ void QGeoTiledMapPrivate::updateScene()
void QGeoTiledMapPrivate::changeActiveMapType(const QGeoMapType mapType)
{
+ m_visibleTiles->setTileSize(m_cameraCapabilities.tileSize());
+ m_prefetchTiles->setTileSize(m_cameraCapabilities.tileSize());
+ m_mapScene->setTileSize(m_cameraCapabilities.tileSize());
m_visibleTiles->setMapType(mapType);
m_prefetchTiles->setMapType(mapType);
updateScene();
diff --git a/src/location/maps/qgeotiledmapscene.cpp b/src/location/maps/qgeotiledmapscene.cpp
index 977b4764..069aa2ad 100644
--- a/src/location/maps/qgeotiledmapscene.cpp
+++ b/src/location/maps/qgeotiledmapscene.cpp
@@ -126,21 +126,31 @@ void QGeoTiledMapScene::setScreenSize(const QSize &size)
d->m_screenSize = size;
}
+void QGeoTiledMapScene::updateSceneParameters()
+{
+ Q_D(QGeoTiledMapScene);
+ d->m_intZoomLevel = static_cast<int>(std::floor(d->m_cameraData.zoomLevel()));
+ const float delta = d->m_cameraData.zoomLevel() - d->m_intZoomLevel;
+ d->m_linearScaling = qAbs(delta) > 0.05 || d->isTiltedOrRotated();
+ d->m_sideLength = 1 << d->m_intZoomLevel;
+ d->m_mapEdgeSize = std::pow(2.0, d->m_cameraData.zoomLevel()) * d->m_tileSize;
+}
+
void QGeoTiledMapScene::setTileSize(int tileSize)
{
Q_D(QGeoTiledMapScene);
+ if (d->m_tileSize == tileSize)
+ return;
+
d->m_tileSize = tileSize;
+ updateSceneParameters();
}
void QGeoTiledMapScene::setCameraData(const QGeoCameraData &cameraData)
{
Q_D(QGeoTiledMapScene);
d->m_cameraData = cameraData;
- d->m_intZoomLevel = static_cast<int>(std::floor(d->m_cameraData.zoomLevel()));
- float delta = cameraData.zoomLevel() - d->m_intZoomLevel;
- d->m_linearScaling = qAbs(delta) > 0.05 || d->isTiltedOrRotated();
- d->m_sideLength = 1 << d->m_intZoomLevel;
- d->m_mapEdgeSize = std::pow(2.0, cameraData.zoomLevel()) * d->m_tileSize;
+ updateSceneParameters();
}
void QGeoTiledMapScene::setVisibleTiles(const QSet<QGeoTileSpec> &tiles)
diff --git a/src/location/maps/qgeotiledmapscene_p.h b/src/location/maps/qgeotiledmapscene_p.h
index 62e90791..f6a8f714 100644
--- a/src/location/maps/qgeotiledmapscene_p.h
+++ b/src/location/maps/qgeotiledmapscene_p.h
@@ -88,6 +88,8 @@ Q_SIGNALS:
void newTilesVisible(const QSet<QGeoTileSpec> &newTiles);
private:
+ void updateSceneParameters();
+
Q_DISABLE_COPY(QGeoTiledMapScene)
};