diff options
Diffstat (limited to 'src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h')
-rw-r--r-- | src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h b/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h index 117dcb63..ee6e8d57 100644 --- a/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h +++ b/src/location/quickmapitems/qdeclarativecirclemapitem_p_p.h @@ -62,7 +62,10 @@ public: m_circlePath.clear(); const QGeoProjectionWebMercator &p = static_cast<const QGeoProjectionWebMercator&>(m_circle.map()->geoProjection()); - calculatePeripheralPoints(m_circlePath, m_circle.center(), m_circle.radius(), p, CircleSamples); + if (m_circle.referenceSurface() == QLocation::ReferenceSurface::Map) + calculatePeripheralPointsSimple(m_circlePath, m_circle.center(), m_circle.radius(), p, CircleSamples); + else + calculatePeripheralPointsGreatCircle(m_circlePath, m_circle.center(), m_circle.radius(), p, CircleSamples); } static int crossEarthPole(const QGeoCoordinate ¢er, qreal distance); @@ -70,7 +73,10 @@ public: static void includeOnePoleInPath(QList<QDoubleVector2D> &path, const QGeoCoordinate ¢er, qreal distance, const QGeoProjectionWebMercator &p); - static void calculatePeripheralPoints(QList<QDoubleVector2D> &path, const QGeoCoordinate ¢er, + static void calculatePeripheralPointsSimple(QList<QDoubleVector2D> &path, const QGeoCoordinate ¢er, + qreal distance, const QGeoProjectionWebMercator &p, int steps); + + static void calculatePeripheralPointsGreatCircle(QList<QDoubleVector2D> &path, const QGeoCoordinate ¢er, qreal distance, const QGeoProjectionWebMercator &p, int steps); QDeclarativeCircleMapItem &m_circle; |