1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-10-06 06:43:22 +02:00

Fixed storing of WMTS tiles with file system incompatible tile matrix names

This commit is contained in:
Martin Tůma 2023-09-16 14:29:09 +02:00
parent a281a68cbd
commit 0531389cd8

View File

@ -6,6 +6,7 @@
#include <QtConcurrent>
#include "tileloader.h"
#define SUBSTITUTE_CHAR '$'
class TileImage
{
@ -34,6 +35,27 @@ private:
int _scaledSize;
};
static QString fsSafeStr(const QString &str)
{
QString ret(str);
#ifdef Q_OS_WIN32
ret.replace('<', SUBSTITUTE_CHAR);
ret.replace('>', SUBSTITUTE_CHAR);
ret.replace(':', SUBSTITUTE_CHAR);
ret.replace('"', SUBSTITUTE_CHAR);
ret.replace('/', SUBSTITUTE_CHAR);
ret.replace('\\', SUBSTITUTE_CHAR);
ret.replace('|', SUBSTITUTE_CHAR);
ret.replace('?', SUBSTITUTE_CHAR);
ret.replace('*', SUBSTITUTE_CHAR);
#else // Q_OS_WIN32
ret.replace('/', SUBSTITUTE_CHAR);
#endif // Q_OS_WIN32
return ret;
}
static QString quadKey(const QPoint &xy, int zoom)
{
QString qk;
@ -198,7 +220,10 @@ QUrl TileLoader::tileUrl(const FetchTile &tile) const
QString TileLoader::tileFile(const FetchTile &tile) const
{
return _dir + QLatin1Char('/') + tile.zoom().toString() + QLatin1Char('-')
QString zoom(((QMetaType::Type)(tile.zoom().type()) == QMetaType::Int)
? tile.zoom().toString() : fsSafeStr(tile.zoom().toString()));
return _dir + QLatin1Char('/') + zoom + QLatin1Char('-')
+ QString::number(tile.xy().x()) + QLatin1Char('-')
+ QString::number(tile.xy().y());
}