summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/location/maps/qgeomap.cpp10
-rw-r--r--src/location/maps/qgeomap_p_p.h2
2 files changed, 11 insertions, 1 deletions
diff --git a/src/location/maps/qgeomap.cpp b/src/location/maps/qgeomap.cpp
index af40b33b..58657143 100644
--- a/src/location/maps/qgeomap.cpp
+++ b/src/location/maps/qgeomap.cpp
@@ -122,7 +122,9 @@ bool QGeoMap::setBearing(qreal bearing, const QGeoCoordinate &coordinate)
bool QGeoMap::anchorCoordinateToPoint(const QGeoCoordinate &coordinate, const QPointF &anchorPoint)
{
+ Q_D(QGeoMap);
QGeoCoordinate newCenter = geoProjection().anchorCoordinateToPoint(coordinate, anchorPoint);
+ newCenter.setLatitude(qBound(-d->m_maximumViewportLatitude, newCenter.latitude(), d->m_maximumViewportLatitude));
QGeoCameraData data = cameraData();
if (data.center() != newCenter) {
data.setCenter(newCenter);
@@ -175,7 +177,7 @@ double QGeoMap::minimumZoom() const
double QGeoMap::maximumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const
{
Q_D(const QGeoMap);
- return d->m_geoProjection->maximumCenterLatitudeAtZoom(cameraData);
+ return d->maximumCenterLatitudeAtZoom(cameraData);
}
double QGeoMap::mapWidth() const
@@ -414,4 +416,10 @@ bool QGeoMapPrivate::copyrightVisible() const
return m_copyrightVisible;
}
+double QGeoMapPrivate::maximumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const
+{
+ m_maximumViewportLatitude = m_geoProjection->maximumCenterLatitudeAtZoom(cameraData);
+ return m_maximumViewportLatitude;
+}
+
QT_END_NAMESPACE
diff --git a/src/location/maps/qgeomap_p_p.h b/src/location/maps/qgeomap_p_p.h
index ff7ca318..18c72202 100644
--- a/src/location/maps/qgeomap_p_p.h
+++ b/src/location/maps/qgeomap_p_p.h
@@ -102,6 +102,7 @@ protected:
virtual void setCopyrightVisible(bool visible);
virtual bool copyrightVisible() const;
+ virtual double maximumCenterLatitudeAtZoom(const QGeoCameraData &cameraData) const;
protected:
QSize m_viewportSize;
@@ -113,6 +114,7 @@ protected:
QList<QDeclarativeGeoMapItemBase *> m_mapItems;
QGeoCameraCapabilities m_cameraCapabilities;
bool m_copyrightVisible = true;
+ mutable double m_maximumViewportLatitude = 0;
};
QT_END_NAMESPACE