summaryrefslogtreecommitdiff
path: root/src/plugins/geoservices/mapbox/qgeofiletilecachemapbox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/geoservices/mapbox/qgeofiletilecachemapbox.cpp')
-rw-r--r--src/plugins/geoservices/mapbox/qgeofiletilecachemapbox.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/plugins/geoservices/mapbox/qgeofiletilecachemapbox.cpp b/src/plugins/geoservices/mapbox/qgeofiletilecachemapbox.cpp
index 4057568d..6ce41a2b 100644
--- a/src/plugins/geoservices/mapbox/qgeofiletilecachemapbox.cpp
+++ b/src/plugins/geoservices/mapbox/qgeofiletilecachemapbox.cpp
@@ -40,9 +40,10 @@
QT_BEGIN_NAMESPACE
-QGeoFileTileCacheMapbox::QGeoFileTileCacheMapbox(const QList<QGeoMapType> &mapTypes, const QString &directory, QObject *parent)
+QGeoFileTileCacheMapbox::QGeoFileTileCacheMapbox(const QList<QGeoMapType> &mapTypes, int scaleFactor, const QString &directory, QObject *parent)
:QGeoFileTileCache(directory, parent), m_mapTypes(mapTypes)
{
+ m_scaleFactor = qBound(1, scaleFactor, 2);
for (int i=0; i < mapTypes.size(); i++)
m_mapNameToId.insert(mapTypes[i].name(), i);
}
@@ -70,6 +71,10 @@ QString QGeoFileTileCacheMapbox::tileSpecToFilename(const QGeoTileSpec &spec, co
filename += QString::number(spec.version());
}
+ filename += QLatin1String("-@");
+ filename += QString::number(m_scaleFactor);
+ filename += QLatin1Char('x');
+
filename += QLatin1String(".");
filename += format;
@@ -89,13 +94,21 @@ QGeoTileSpec QGeoFileTileCacheMapbox::filenameToTileSpec(const QString &filename
QStringList fields = name.split('-');
int length = fields.length();
- if (length != 5 && length != 6)
+ if (length != 6 && length != 7) {
return QGeoTileSpec();
+ } else {
+ int scaleIdx = fields.last().indexOf("@");
+ if (scaleIdx < 0 || fields.last().size() <= (scaleIdx + 2))
+ return QGeoTileSpec();
+ int scaleFactor = fields.last()[scaleIdx + 1].digitValue();
+ if (scaleFactor != m_scaleFactor)
+ return QGeoTileSpec();
+ }
QList<int> numbers;
bool ok = false;
- for (int i = 2; i < length; ++i) {
+ for (int i = 2; i < length-1; ++i) { // skipping -@_X
ok = false;
int value = fields.at(i).toInt(&ok);
if (!ok)