diff options
Diffstat (limited to 'src/location/declarativemaps/qgeosimplify_p.h')
-rw-r--r-- | src/location/declarativemaps/qgeosimplify_p.h | 97 |
1 files changed, 11 insertions, 86 deletions
diff --git a/src/location/declarativemaps/qgeosimplify_p.h b/src/location/declarativemaps/qgeosimplify_p.h index 567845de..1f5c9783 100644 --- a/src/location/declarativemaps/qgeosimplify_p.h +++ b/src/location/declarativemaps/qgeosimplify_p.h @@ -3,7 +3,7 @@ ** Qt adaptation of geosimplify.js, https://github.com/mapbox/geosimplify-js, (c) 2017, Mapbox ** ** Copyright (C) 2020 Paolo Angelelli <paolo.angelelli@gmail.com> -** Copyright (C) 2020 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtLocation module of the Qt Toolkit. @@ -54,96 +54,21 @@ // We mean it. // -#include <QtPositioning/QGeoCoordinate> -#include <QtPositioning/private/qdoublevector2d_p.h> -#include <QtPositioning/private/qwebmercator_p.h> +#include <QtCore/QList> QT_BEGIN_NAMESPACE -class QGeoSimplify { -protected: - // Distance between two points in metres - static double getDist(const QGeoCoordinate &p1, const QGeoCoordinate &p2); +class QDoubleVector2D; - // p, a and b are intended as "unwrapped" around the left bound - static QDoubleVector2D closestPoint( const QDoubleVector2D &p, - const QDoubleVector2D &a, - const QDoubleVector2D &b); - - static QGeoCoordinate closestPoint( const QGeoCoordinate &pc, - const QGeoCoordinate &ac, - const QGeoCoordinate &bc, - const double &leftBound); - - // Distance from a point to a segment (line between two points) in metres - static double getSegDist(const QGeoCoordinate &pc, - const QGeoCoordinate &ac, - const QGeoCoordinate &bc, - const double &leftBound); - - // doublevectors Intended as wrapped - static double getSegDist(const QDoubleVector2D &p, - const QDoubleVector2D &a, - const QDoubleVector2D &b, - const double &leftBound); - - static void simplifyDPStep(const QList<QGeoCoordinate> &points, - const double &leftBound, - int first, - int last, - double offsetTolerance, - QList<QGeoCoordinate> &simplified); - - static double getDist(QDoubleVector2D a, - QDoubleVector2D b, - const double &leftBound); - - static void simplifyDPStep(const QList<QDoubleVector2D> &points, - const double &leftBound, - int first, - int last, - double offsetTolerance, - QList<QDoubleVector2D> &simplified); - - static void simplifyDPStepZL(const QList<QDoubleVector2D> &points, - const double &leftBound, - int first, - int last, - int zoomLevel, - QList<QDoubleVector2D> &simplified); - - // simplification using Ramer-Douglas-Peucker algorithm - static QList<QGeoCoordinate> simplifyDouglasPeucker(const QList<QGeoCoordinate> &points, - const double &leftBound, - double offsetTolerance); - - static QList<QDoubleVector2D> simplifyDouglasPeucker(const QList<QDoubleVector2D> &points, - const double &leftBound, - double offsetTolerance); - - static QList<QDoubleVector2D> simplifyDouglasPeuckerZL(const QList<QDoubleVector2D> &points, - const double &leftBound, - int zoomLevel); - -public: - /* - offsetTolerance - how far outside the straight line a point - needs to be for it to be "kept" - */ - static QList<QGeoCoordinate> geoSimplify(const QList<QGeoCoordinate> &points, - const double &leftBound, - double offsetTolerance); // in meters - - static QList<QDoubleVector2D> geoSimplify(const QList<QDoubleVector2D> &points, - const double &leftBound, - double offsetTolerance); // in meters - - // This overload tries to be adaptive in the offsetTolerance across latitudes, +namespace QGeoSimplify +{ + // offsetTolerance - how far outside the straight line a point + // needs to be for it to be "kept" + // This function tries to be adaptive in the offsetTolerance across latitudes, // and return a simplification adequate for the given zoomLevel. - static QList<QDoubleVector2D> geoSimplifyZL(const QList<QDoubleVector2D> &points, - const double &leftBound, - int zoomLevel); // in meters -}; + QList<QDoubleVector2D> geoSimplifyZL(const QList<QDoubleVector2D> &points, + double leftBound, int zoomLevel); // in meters +} QT_END_NAMESPACE |