From e81ba34a98b259723e783e2d2df4321309992291 Mon Sep 17 00:00:00 2001 From: Paolo Angelelli Date: Fri, 7 Apr 2017 13:40:19 +0200 Subject: Allow overzooming when setting zoomLevel directly in a Map This patch moves the lower/upper bound check on setZoom from QDeclarativeGeoMap to the gesture area, allowing to set higher zoom levels than the maximumZoomLevel when setting Map.zoomLevel directly, for the map types that support overzoom. This is now safe as the bound check is introduced in the tile fetcher, so no invalid tiles will be requested, and is beneficial when combining layers supporting different maximum zoom levels. Change-Id: I08ee9c282ee2ebc1dafa3c68a238b93ffbc1ba02 Reviewed-by: Alex Blasche --- src/location/declarativemaps/qquickgeomapgesturearea.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/location/declarativemaps/qquickgeomapgesturearea.cpp') diff --git a/src/location/declarativemaps/qquickgeomapgesturearea.cpp b/src/location/declarativemaps/qquickgeomapgesturearea.cpp index 3511226c..992fa21e 100644 --- a/src/location/declarativemaps/qquickgeomapgesturearea.cpp +++ b/src/location/declarativemaps/qquickgeomapgesturearea.cpp @@ -949,7 +949,8 @@ void QQuickGeoMapGestureArea::handleWheelEvent(QWheelEvent *event) const QPointF &preZoomPoint = event->posF(); const double zoomLevelDelta = event->angleDelta().y() * qreal(0.001); - m_declarativeMap->setZoomLevel(m_declarativeMap->zoomLevel() + zoomLevelDelta); + // Gesture area should always honor maxZL, but Map might not. + m_declarativeMap->setZoomLevel(qMin(m_declarativeMap->zoomLevel() + zoomLevelDelta, maximumZoomLevel())); const QPointF &postZoomPoint = m_map->geoProjection().coordinateToItemPosition(wheelGeoPos, false).toPointF(); if (preZoomPoint != postZoomPoint) // need to re-anchor the wheel geoPos to the event position @@ -1590,7 +1591,7 @@ void QQuickGeoMapGestureArea::updatePinch() qreal perPinchMinimumZoomLevel = qMax(m_pinch.m_zoom.m_start - m_pinch.m_zoom.maximumChange, m_pinch.m_zoom.m_minimum); qreal perPinchMaximumZoomLevel = qMin(m_pinch.m_zoom.m_start + m_pinch.m_zoom.maximumChange, m_pinch.m_zoom.m_maximum); newZoomLevel = qMin(qMax(perPinchMinimumZoomLevel, newZoomLevel), perPinchMaximumZoomLevel); - m_declarativeMap->setZoomLevel(newZoomLevel); + m_declarativeMap->setZoomLevel(qMin(newZoomLevel, maximumZoomLevel())); m_pinch.m_zoom.m_previous = newZoomLevel; } } -- cgit v1.2.3