summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeoprojection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/location/maps/qgeoprojection.cpp')
-rw-r--r--src/location/maps/qgeoprojection.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/location/maps/qgeoprojection.cpp b/src/location/maps/qgeoprojection.cpp
index fcf9a350..1df174fb 100644
--- a/src/location/maps/qgeoprojection.cpp
+++ b/src/location/maps/qgeoprojection.cpp
@@ -73,6 +73,17 @@ QGeoProjection::~QGeoProjection()
}
+QGeoCoordinate QGeoProjection::anchorCoordinateToPoint(const QGeoCoordinate &coordinate, const QPointF &anchorPoint) const
+{
+ // Approach: find the displacement in (wrapped) mercator space, and apply that to the center
+ QDoubleVector2D centerProj = geoToWrappedMapProjection(cameraData().center());
+ QDoubleVector2D coordProj = geoToWrappedMapProjection(coordinate);
+
+ QDoubleVector2D anchorProj = itemPositionToWrappedMapProjection(QDoubleVector2D(anchorPoint));
+ // Y-clamping done in mercatorToCoord
+ return wrappedMapProjectionToGeo(centerProj + coordProj - anchorProj);
+}
+
/*
* QGeoProjectionWebMercator implementation
*/
@@ -576,6 +587,11 @@ void QGeoProjectionWebMercator::updateVisibleRegion()
}
}
+QGeoCameraData QGeoProjectionWebMercator::cameraData() const
+{
+ return m_cameraData;
+}
+
/*
*
* Line implementation