summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/location/maps/qgeotilefetcher.cpp15
-rw-r--r--src/location/maps/qgeotilefetcher_p.h4
-rw-r--r--src/location/maps/qgeotilefetcher_p_p.h4
-rw-r--r--src/plugins/geoservices/esri/geotilefetcher_esri.cpp2
-rw-r--r--src/plugins/geoservices/esri/geotilefetcher_esri.h2
-rw-r--r--src/plugins/geoservices/mapbox/qgeotilefetchermapbox.cpp2
-rw-r--r--src/plugins/geoservices/mapbox/qgeotilefetchermapbox.h2
-rw-r--r--src/plugins/geoservices/osm/qgeotilefetcherosm.cpp2
-rw-r--r--src/plugins/geoservices/osm/qgeotilefetcherosm.h2
-rw-r--r--tests/auto/geotestplugin/qgeotilefetcher_test.h3
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)
{
}