diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2016-10-14 14:59:36 +0200 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2016-10-19 10:04:45 +0000 |
commit | 66da817c87a6990173ecc3494f51ce40ed792a38 (patch) | |
tree | 779d8b374b1129ce2b94fe2e513de6c571bd2489 /src/imports | |
parent | 6a4be78bfc0f0c51b3394a70adf76a14d45639b6 (diff) | |
download | qtlocation-66da817c87a6990173ecc3494f51ce40ed792a38.tar.gz |
Fix for occasional gray bands appearing upon window resizing
QDeclarativeGeoMap::geometryChanged missed recomputing the latitudinal
bounds for the map center upon resize.
This may have resulted in center values too far north or far south
for certain window sizes.
Change-Id: Id306cdaf1c943655da5e40c18379f0b4f1c7b256
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/location/qdeclarativegeomap.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/imports/location/qdeclarativegeomap.cpp b/src/imports/location/qdeclarativegeomap.cpp index e311d77f..fafc2f82 100644 --- a/src/imports/location/qdeclarativegeomap.cpp +++ b/src/imports/location/qdeclarativegeomap.cpp @@ -1310,11 +1310,26 @@ void QDeclarativeGeoMap::geometryChanged(const QRectF &newGeometry, const QRectF m_map->setSize(newGeometry.size().toSize()); - if (!m_initialized) + if (!m_initialized) { initialize(); - else + } else { setMinimumZoomLevel(m_map->minimumZoomAtMapSize(newGeometry.width(), newGeometry.height())); + // Update the center latitudinal threshold + double maximumCenterLatitudeAtZoom = m_map->maximumCenterLatitudeAtZoom(m_cameraData.zoomLevel()); + if (maximumCenterLatitudeAtZoom != m_maximumViewportLatitude) { + m_maximumViewportLatitude = maximumCenterLatitudeAtZoom; + QGeoCoordinate coord = m_cameraData.center(); + coord.setLatitude(qBound(-m_maximumViewportLatitude, coord.latitude(), m_maximumViewportLatitude)); + + if (coord != m_cameraData.center()) { + m_cameraData.setCenter(coord); + m_map->setCameraData(m_cameraData); + emit centerChanged(m_cameraData.center()); + } + } + } + /*! The fitViewportTo*() functions depend on a valid map geometry. If they were called prior to the first resize they cause |