diff options
-rw-r--r-- | src/location/maps/qgeotilefetcher.cpp | 15 | ||||
-rw-r--r-- | src/location/maps/qgeotilefetcher_p.h | 4 | ||||
-rw-r--r-- | src/location/maps/qgeotilefetcher_p_p.h | 4 | ||||
-rw-r--r-- | src/plugins/geoservices/esri/geotilefetcher_esri.cpp | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/esri/geotilefetcher_esri.h | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/mapbox/qgeotilefetchermapbox.h | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/osm/qgeotilefetcherosm.cpp | 2 | ||||
-rw-r--r-- | src/plugins/geoservices/osm/qgeotilefetcherosm.h | 2 | ||||
-rw-r--r-- | tests/auto/geotestplugin/qgeotilefetcher_test.h | 3 |
10 files changed, 25 insertions, 13 deletions
diff --git a/src/location/maps/qgeotilefetcher.cpp b/src/location/maps/qgeotilefetcher.cpp index 34bf686c..70ebbcd1 100644 --- a/src/location/maps/qgeotilefetcher.cpp +++ b/src/location/maps/qgeotilefetcher.cpp @@ -45,22 +45,24 @@ QT_BEGIN_NAMESPACE -QGeoTileFetcher::QGeoTileFetcher(QObject *parent) +QGeoTileFetcher::QGeoTileFetcher(QGeoMappingManagerEngine *parent) : QObject(*new QGeoTileFetcherPrivate(), parent) { Q_D(QGeoTileFetcher); d->enabled_ = true; + d->engine_ = parent; // if (!d->queue_.isEmpty()) // d->timer_.start(0, this); } -QGeoTileFetcher::QGeoTileFetcher(QGeoTileFetcherPrivate &dd, QObject *parent) +QGeoTileFetcher::QGeoTileFetcher(QGeoTileFetcherPrivate &dd, QGeoMappingManagerEngine *parent) : QObject(dd,parent) { Q_D(QGeoTileFetcher); d->enabled_ = true; + d->engine_ = parent; // if (!d->queue_.isEmpty()) // d->timer_.start(0, this); @@ -120,6 +122,13 @@ void QGeoTileFetcher::requestNextTile() if (d->queue_.isEmpty()) d->timer_.stop(); + // Check against min/max zoom to prevent sending requests for not existing objects + const QGeoCameraCapabilities & cameraCaps = d->engine_->cameraCapabilities(ts.mapId()); + // the ZL in QGeoTileSpec is relative to the native tile size of the provider. + // It gets denormalized in QGeoTiledMap. + if (ts.zoom() < cameraCaps.minimumZoomLevel() || ts.zoom() > cameraCaps.maximumZoomLevel()) + return; + QGeoTiledMapReply *reply = getTileImage(ts); if (!reply) return; @@ -202,7 +211,7 @@ void QGeoTileFetcher::handleReply(QGeoTiledMapReply *reply, const QGeoTileSpec & *******************************************************************************/ QGeoTileFetcherPrivate::QGeoTileFetcherPrivate() -: QObjectPrivate(), enabled_(false) +: QObjectPrivate(), enabled_(false), engine_(0) { } diff --git a/src/location/maps/qgeotilefetcher_p.h b/src/location/maps/qgeotilefetcher_p.h index f9a84209..23adac77 100644 --- a/src/location/maps/qgeotilefetcher_p.h +++ b/src/location/maps/qgeotilefetcher_p.h @@ -68,7 +68,7 @@ class Q_LOCATION_PRIVATE_EXPORT QGeoTileFetcher : public QObject Q_DECLARE_PRIVATE(QGeoTileFetcher) public: - QGeoTileFetcher(QObject *parent = 0); + QGeoTileFetcher(QGeoMappingManagerEngine *parent); virtual ~QGeoTileFetcher(); public Q_SLOTS: @@ -84,7 +84,7 @@ Q_SIGNALS: void tileError(const QGeoTileSpec &spec, const QString &errorString); protected: - QGeoTileFetcher(QGeoTileFetcherPrivate &dd, QObject *parent = 0); + QGeoTileFetcher(QGeoTileFetcherPrivate &dd, QGeoMappingManagerEngine *parent); void timerEvent(QTimerEvent *event); QAbstractGeoTileCache::CacheAreas cacheHint() const; diff --git a/src/location/maps/qgeotilefetcher_p_p.h b/src/location/maps/qgeotilefetcher_p_p.h index 7e9db527..8e955563 100644 --- a/src/location/maps/qgeotilefetcher_p_p.h +++ b/src/location/maps/qgeotilefetcher_p_p.h @@ -50,6 +50,7 @@ #include <QtCore/private/qobject_p.h> #include <QtLocation/private/qlocationglobal_p.h> +#include <QtLocation/private/qgeotiledmappingmanagerengine_p.h> #include <QSize> #include <QList> #include <QMap> @@ -64,7 +65,7 @@ QT_BEGIN_NAMESPACE class QGeoTileSpec; class QGeoTiledMapReply; -class QGeoTiledMappingManagerEngine; +class QGeoMappingManagerEngine; class Q_LOCATION_PRIVATE_EXPORT QGeoTileFetcherPrivate : public QObjectPrivate { @@ -78,6 +79,7 @@ public: QMutex queueMutex_; QList<QGeoTileSpec> queue_; QHash<QGeoTileSpec, QGeoTiledMapReply *> invmap_; + QGeoMappingManagerEngine *engine_; private: Q_DISABLE_COPY(QGeoTileFetcherPrivate) diff --git a/src/plugins/geoservices/esri/geotilefetcher_esri.cpp b/src/plugins/geoservices/esri/geotilefetcher_esri.cpp index 62484bbb..8ceba374 100644 --- a/src/plugins/geoservices/esri/geotilefetcher_esri.cpp +++ b/src/plugins/geoservices/esri/geotilefetcher_esri.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE -GeoTileFetcherEsri::GeoTileFetcherEsri(QObject *parent) : +GeoTileFetcherEsri::GeoTileFetcherEsri(QGeoTiledMappingManagerEngine *parent) : QGeoTileFetcher(parent), m_networkManager(new QNetworkAccessManager(this)), m_userAgent(QByteArrayLiteral("Qt Location based application")) { diff --git a/src/plugins/geoservices/esri/geotilefetcher_esri.h b/src/plugins/geoservices/esri/geotilefetcher_esri.h index 43dcfdfa..be948af1 100644 --- a/src/plugins/geoservices/esri/geotilefetcher_esri.h +++ b/src/plugins/geoservices/esri/geotilefetcher_esri.h @@ -52,7 +52,7 @@ class GeoTileFetcherEsri : public QGeoTileFetcher Q_OBJECT public: - explicit GeoTileFetcherEsri(QObject *parent = Q_NULLPTR); + explicit GeoTileFetcherEsri(QGeoTiledMappingManagerEngine *parent); inline const QByteArray &userAgent() const; inline void setUserAgent(const QByteArray &userAgent); diff --git a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp index 062b4f89..732d04e9 100644 --- a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp +++ b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp @@ -44,7 +44,7 @@ QT_BEGIN_NAMESPACE -QGeoTileFetcherMapbox::QGeoTileFetcherMapbox(int scaleFactor, QObject *parent) +QGeoTileFetcherMapbox::QGeoTileFetcherMapbox(int scaleFactor, QGeoTiledMappingManagerEngine *parent) : QGeoTileFetcher(parent), m_networkManager(new QNetworkAccessManager(this)), m_userAgent("Qt Location based application"), m_format("png"), diff --git a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.h b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.h index e52651e1..47f3a8aa 100644 --- a/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.h +++ b/src/plugins/geoservices/mapbox/qgeotilefetchermapbox.h @@ -50,7 +50,7 @@ class QGeoTileFetcherMapbox : public QGeoTileFetcher Q_OBJECT public: - QGeoTileFetcherMapbox(int scaleFactor = 2, QObject *parent = 0); + QGeoTileFetcherMapbox(int scaleFactor, QGeoTiledMappingManagerEngine *parent); void setUserAgent(const QByteArray &userAgent); void setMapIds(const QVector<QString> &mapIds); diff --git a/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp b/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp index f7c25d61..8c5778d1 100644 --- a/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp +++ b/src/plugins/geoservices/osm/qgeotilefetcherosm.cpp @@ -78,7 +78,7 @@ QGeoTileFetcherOsmPrivate::~QGeoTileFetcherOsmPrivate() QGeoTileFetcherOsm::QGeoTileFetcherOsm(const QVector<QGeoTileProviderOsm *> &providers, QNetworkAccessManager *nm, - QObject *parent) + QGeoMappingManagerEngine *parent) : QGeoTileFetcher(*new QGeoTileFetcherOsmPrivate(), parent), m_userAgent("Qt Location based application"), m_providers(providers), m_nm(nm), m_ready(true) { diff --git a/src/plugins/geoservices/osm/qgeotilefetcherosm.h b/src/plugins/geoservices/osm/qgeotilefetcherosm.h index a7b89bad..859033cc 100644 --- a/src/plugins/geoservices/osm/qgeotilefetcherosm.h +++ b/src/plugins/geoservices/osm/qgeotilefetcherosm.h @@ -59,7 +59,7 @@ class QGeoTileFetcherOsm : public QGeoTileFetcher public: QGeoTileFetcherOsm(const QVector<QGeoTileProviderOsm *> &providers, QNetworkAccessManager *nm, - QObject *parent = 0); + QGeoMappingManagerEngine *parent); void setUserAgent(const QByteArray &userAgent); diff --git a/tests/auto/geotestplugin/qgeotilefetcher_test.h b/tests/auto/geotestplugin/qgeotilefetcher_test.h index a25b0119..e108f484 100644 --- a/tests/auto/geotestplugin/qgeotilefetcher_test.h +++ b/tests/auto/geotestplugin/qgeotilefetcher_test.h @@ -32,6 +32,7 @@ #include <QtLocation/private/qgeotiledmapreply_p.h> #include <QtLocation/private/qgeotilefetcher_p.h> #include <QtLocation/private/qgeotilespec_p.h> +#include <QtLocation/private/qgeomappingmanagerengine_p.h> #include <QLocale> #include <QPainter> @@ -65,7 +66,7 @@ class QGeoTileFetcherTest: public QGeoTileFetcher { Q_OBJECT public: - QGeoTileFetcherTest(QObject *parent = 0) + QGeoTileFetcherTest(QGeoMappingManagerEngine *parent) : QGeoTileFetcher(parent), finishRequestImmediately_(false), errorCode_(QGeoTiledMapReply::NoError) { } |