1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-02-26 04:00:49 +01:00

Improved map validity checks

This commit is contained in:
Martin Tůma 2018-09-20 08:50:52 +02:00
parent db98f381b5
commit 0a74684713

View File

@ -52,6 +52,10 @@ MBTilesMap::MBTilesMap(const QString &fileName, QObject *parent)
return; return;
} }
_zooms = Range(query.value(0).toInt(), query.value(1).toInt()); _zooms = Range(query.value(0).toInt(), query.value(1).toInt());
if (_zooms.min() < 0 || !_zooms.isValid()) {
_errorString = "Invalid zoom levels";
return;
}
} }
_zoom = _zooms.max(); _zoom = _zooms.max();
@ -62,13 +66,13 @@ MBTilesMap::MBTilesMap(const QString &fileName, QObject *parent)
QSqlQuery query(sql, _db); QSqlQuery query(sql, _db);
query.first(); query.first();
double minX = index2mercator(qMin((1<<_zooms.min()), double minX = index2mercator(qMin((1<<_zooms.min()) - 1,
qMax(0, query.value(0).toInt())), _zooms.min()); qMax(0, query.value(0).toInt())), _zooms.min());
double minY = index2mercator(qMin((1<<_zooms.min()), double minY = index2mercator(qMin((1<<_zooms.min()) - 1,
qMax(0, query.value(1).toInt())), _zooms.min()); qMax(0, query.value(1).toInt())), _zooms.min());
double maxX = index2mercator(qMin((1<<_zooms.min()), double maxX = index2mercator(qMin((1<<_zooms.min()) - 1,
qMax(0, query.value(2).toInt())) + 1, _zooms.min()); qMax(0, query.value(2).toInt())) + 1, _zooms.min());
double maxY = index2mercator(qMin((1<<_zooms.min()), double maxY = index2mercator(qMin((1<<_zooms.min()) - 1,
qMax(0, query.value(3).toInt())) + 1, _zooms.min()); qMax(0, query.value(3).toInt())) + 1, _zooms.min());
Coordinates tl(osm::m2ll(QPointF(minX, maxY))); Coordinates tl(osm::m2ll(QPointF(minX, maxY)));
Coordinates br(osm::m2ll(QPointF(maxX, minY))); Coordinates br(osm::m2ll(QPointF(maxX, minY)));