diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-03-28 12:14:36 +0200 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-03-28 14:06:10 +0000 |
commit | a4290fe50113dd170255dd1e24be546ae768533e (patch) | |
tree | f2655a83d18971d753bcdd6b5a74c8c07ef23052 /src/location/maps | |
parent | 93d174d276d208434b6615d73a7e9c805ea48ff9 (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.cpp | 3 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmapscene.cpp | 20 | ||||
-rw-r--r-- | src/location/maps/qgeotiledmapscene_p.h | 2 |
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) }; |